Jos*_*iah 10 matlab normal-distribution confidence-interval
首先,我应该说明我的统计知识相当有限,所以如果我的问题看似微不足道或者甚至没有意义,请原谅我.
我的数据似乎没有正常分布.通常情况下,当我绘制置信区间时,我会使用平均值+ - 2标准偏差,但我不认为这对于非均匀分布是可以接受的.我的样本量目前设置为1000个样本,这似乎足以确定它是否是正态分布.
我使用Matlab进行所有处理,因此Matlab中是否有任何函数可以轻松计算置信区间(比如说95%)?
我知道有'分位数'和'prctile'功能,但我不确定这是否是我需要使用的.函数'mle'也返回正态分布数据的置信区间,尽管您也可以提供自己的pdf.
我可以使用ksdensity为我的数据创建一个pdf,然后将该pdf输入到mle函数中以给我置信区间吗?
另外,我将如何确定我的数据是否正常分布.我的意思是我现在可以通过查看ksdensity的直方图或pdf来判断,但有没有办法对其进行定量测量?
谢谢!
Mar*_*rkV 10
所以有几个问题.以下是一些建议
你是正确的,应该正常分配1000个样本的平均值(除非你的数据是"重尾",我假设不是这种情况).要获得1-alpha均值的置信区间(在您的情况下alpha = 0.05),您可以使用'norminv'函数.例如,我们想要一个95%CI的平均数据样本X,然后我们可以输入
N = 1000; % sample size
X = exprnd(3,N,1); % sample from a non-normal distribution
mu = mean(X); % sample mean (normally distributed)
sig = std(X)/sqrt(N); % sample standard deviation of the mean
alphao2 = .05/2; % alpha over 2
CI = [mu + norminv(alphao2)*sig ,...
mu - norminv(alphao2)*sig ]
CI =
2.9369 3.3126
Run Code Online (Sandbox Code Playgroud)
测试数据样本是否正常分布可以通过多种方式进行.一个简单的方法是QQ图.为此,请使用'qqplot(X)' X您的数据样本.如果结果大致为直线,则样本正常.如果结果不是直线,则样本不正常.
例如,如果X = exprnd(3,1000,1)如上所述,样本是非正常的,qqplot是非线性的:
X = exprnd(3,1000,1);
qqplot(X);
Run Code Online (Sandbox Code Playgroud)

另一方面,如果数据正常,qqplot将给出一条直线:
qqplot(randn(1000,1))
Run Code Online (Sandbox Code Playgroud)

您确定需要置信区间还是仅需要 90% 的随机数据范围?
如果您需要后者,我建议您使用 prctile()。例如,如果您有一个向量保存随机变量的独立同分布样本,则可以通过运行获得一些有用的信息
y = prcntile(x, [5 50 95])
Run Code Online (Sandbox Code Playgroud)
这将在 [y(1), y(3)] 中返回 90% 的样本出现的范围。在 y(2) 中,您得到样本的中位数。
尝试以下示例(使用正态分布变量):
t = 0:99;
tt = repmat(t, 1000, 1);
x = randn(1000, 100) .* tt + tt; % simple gaussian model with varying mean and variance
y = prctile(x, [5 50 95]);
plot(t, y);
legend('5%','50%','95%')
Run Code Online (Sandbox Code Playgroud)