首先,我应该说明我的统计知识相当有限,所以如果我的问题看似微不足道或者甚至没有意义,请原谅我。
我的数据似乎没有正常分布。通常情况下,当我绘制置信区间时,我会使用平均值+ - 2标准偏差,但我不认为这对于非均匀分布是可以接受的。我的样本量目前设置为1000个样本,这似乎足以确定它是否是正态分布。
我使用Matlab进行所有处理,因此Matlab中是否有任何函数可以轻松计算置信区间(比如说95%)?
我知道有'分位数'和'prctile'功能,但我不确定这是否是我需要使用的。函数'mle'也返回正态分布数据的置信区间,尽管您也可以提供自己的pdf。
我可以使用ksdensity为我的数据创建一个pdf,然后将该pdf输入到mle函数中以给我置信区间吗?
另外,我如何确定我的数据是否正常分布。我的意思是我现在可以通过查看ksdensity的直方图或pdf来判断,但有没有办法对其进行定量测量?
谢谢!
答案 0 :(得分: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
测试数据样本是否正常分发可以通过多种方式完成。一个简单的方法是QQ图。为此,请使用'qqplot(X)',其中X
是您的数据样本。如果结果大致为直线,则样本正常。如果结果不是直线,则样本不正常。
例如,如果X = exprnd(3,1000,1)
如上所述,样本是非正常的,而qqplot是非线性的:
X = exprnd(3,1000,1);
qqplot(X);
另一方面,如果数据正常,qqplot将给出一条直线:
qqplot(randn(1000,1))
答案 1 :(得分:2)
您也可以考虑使用自举bootci函数。
答案 2 :(得分:2)
您可以使用[1]中提出的方法:
MEDIAN +/- 1.7(1.25R / 1.35SQN)
其中R =四分位数范围, SQN = N的平方根
这通常用于缺口箱形图,这是非正常数据的有用数据可视化。如果两个中位数的缺口不重叠,那么中位数大约在95%的置信水平上显着不同。
[1] McGill,R.,J。W. Tukey和W. A. Larsen。 “箱形图的变化。”美国统计学家。卷。 32,No.1,1978,pp.12-16。
答案 3 :(得分:1)
您确定需要置信区间或仅需要随机数据的90%范围吗?
如果你需要后者,我建议你使用prctile()。例如,如果你有一个向量,包含随机变量的独立同分布样本,你可以通过运行
获得一些有用的信息。y = prcntile(x, [5 50 95])
这将在[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%')
答案 4 :(得分:-1)
我没有使用过Matlab,但是根据我对统计数据的理解,如果你的分布不能被认为是正态分布,那么你必须把它作为学生t分布并计算置信区间和准确度。