探索t分布

时间:2018-08-05 04:43:21

标签: matlab statistics normal-distribution

我的任务是为作业问题创建T分布。我已经创建了代码,但是得到的结果看起来不像t分布。我在做什么错了?

任务:

task

u=0
n=20
for i=1:5000;
    r=randn(20,1);
    x(i)=mean(r);
    s(i)=std(r);
    t(i)=(x-u)/(s/sqrt(n)) ;
end
hist(t) 

2 个答案:

答案 0 :(得分:0)

嗯,我怀疑您没有使用您认为正在使用的运算符。 division is not just limited to scalars,在这里您不小心从矩阵运算中得到了标量结果。

提示:当计算t的第i个值时,您可能只想使用第i个均值和标准差项。

答案 1 :(得分:0)

正如Matt所指出的那样,您忘记了遍历均值和标准偏差值。您现在正在做什么,将两个数组分开。 Matlab会将您的代码解释为数组x和转置数组s的标量积。这就是为什么结果是标量且误差不太容易发现的原因。 更新的代码应该可以:

clc
clear

u=0.0
n=20

for i=1:5000
    r=randn(n,1);
    x(i)=mean(r);
    s(i)=std(r);
    t(i)=(x(i)-u)/(s(i)/sqrt(n)) ;
end
hist(t) 

为我生成的结果:

t distribution

提示:对于小脚本,我建议您添加clc(清除命令窗口)并清除(清除工作区)命令行。有时,以前运行的脚本可能会产生大量垃圾,可能会破坏结果,并且清除命令窗口肯定会使调试更容易,至少对我来说如此。