Matlab中的样本t检验

时间:2019-10-20 12:05:31

标签: matlab t-test

在Matlab中,我必须生成两个具有分布的高斯随机样本:

  1. N(100,5)
  2. N(115,15)

然后运行模拟1000次,并计算从2到50的每个样本大小,在1000次中,否定假设被拒绝的次数。

最后,我需要针对样本大小绘制H0的拒绝结果。

h = zeros(1000,1);
k = 0;

for i = 1:1000
    r1 = ();
    r2 = ();
    for j= 2:50
        r1(j-1)=normrnd(100,5,[1,j]);
        r2(j-1)=normrnd(110,15,[1,j]);
    end
    h(i)=ttest2(r1,r2)
    if h(i)==1
        k=k+1;
    end
    percent_of_rejection_Null=(k/1000*100);
end
%plot(h vs sample_size)

有人可以帮助我更正上面的代码吗?

1 个答案:

答案 0 :(得分:3)

您的代码存在一些问题:

  1. ri是大小不断变化的向量,因此您需要将其附加到可以存储具有不同大小的元素的结构->单元格数组。
  2. percent_of_rejection_Null必须是存储所有值的向量。
  3. 您没有具体指定要查找的绘图类型,我显示了条形图,但很容易将其调整为所需的所需绘图。
  4. h的计算是有问题的,其每次迭代有50个向量,因此需要计算1的总和。

这段代码是:

h = zeros(1000,1);
percent_of_rejection_Null = zeros(1000,1);
k = 0;

for i = 1:1000
    r1 = {};
    r2 = {};
    for j= 2:50
        r1{j-1}=normrnd(100,5,[1,j]);
        r2{j-1}=normrnd(110,15,[1,j]);
    end
    h = cellfun(@ttest2, r1, r2);
    k = sum(h==1);
    percent_of_rejection_Null(i) = (k/1000*100);
end
figure;
plot(percent_of_rejection_Null)

结果图为:

enter image description here

如果输出结果不是您想要的,请编辑您的问题以便我进行调整。