Matlab 中的样本 t 检验
Sample t-test in Matlab
在 Matlab 中,我必须生成两个具有分布的高斯随机样本:
N(100,5)
N(115,15)
然后 运行 模拟 1,000 次,并计算从 2 到 50 扫描的每个样本大小在 1,000 次中有多少次零假设被拒绝。
最后,我需要根据样本大小绘制 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)
有人可以帮我更正上面的代码吗?
您的代码存在一些问题:
ri
是一个大小不断变化的向量,因此您需要将其附加到可以存储不同大小元素的结构 -> 元胞数组。
percent_of_rejection_Null
需要是一个向量来存储所有的值。
- 您没有具体说明您要查找的图表类型,我展示了条形图,但很容易调整到您需要的图表。
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)
结果图是:
如果输出不是您想要的,请编辑您的问题以便我进行调整。
在 Matlab 中,我必须生成两个具有分布的高斯随机样本:
N(100,5)
N(115,15)
然后 运行 模拟 1,000 次,并计算从 2 到 50 扫描的每个样本大小在 1,000 次中有多少次零假设被拒绝。
最后,我需要根据样本大小绘制 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)
有人可以帮我更正上面的代码吗?
您的代码存在一些问题:
ri
是一个大小不断变化的向量,因此您需要将其附加到可以存储不同大小元素的结构 -> 元胞数组。percent_of_rejection_Null
需要是一个向量来存储所有的值。- 您没有具体说明您要查找的图表类型,我展示了条形图,但很容易调整到您需要的图表。
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)
结果图是:
如果输出不是您想要的,请编辑您的问题以便我进行调整。