我的任务是为作业问题创建T分布。我已经创建了代码,但是得到的结果看起来不像t分布。我在做什么错了?
任务:
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)
答案 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)
为我生成的结果:
提示:对于小脚本,我建议您添加clc(清除命令窗口)并清除(清除工作区)命令行。有时,以前运行的脚本可能会产生大量垃圾,可能会破坏结果,并且清除命令窗口肯定会使调试更容易,至少对我来说如此。