主要内容

选择样本量

这个例子展示了如何确定进行统计检验所需的样本或观察值的数量。它说明了一个简单问题的样本量计算,然后说明如何使用sampsizepwr函数来计算两个更现实的问题的功率和样本量。最后,它说明了如何使用统计和机器学习工具箱™函数来计算测试所需的样本量sampsizepwr函数不支持。金宝app

用已知的标准偏差检验正态均值,单边

为了介绍一些概念,让我们考虑一个不切实际的简单例子,我们想要测试平均值,我们知道标准偏差。我们的数据是连续的,可以用正态分布建模。我们需要确定样本容量N以便区分均值100和均值110。我们知道标准差是20。

当我们进行统计检验时,我们通常检验零假设针对一个备择假设.我们找到一个检验统计量T,看看它在零假设下的分布。如果我们观察到一个不寻常的值,如果零假设为真,那么这个值发生的概率小于5%,那么我们就会拒绝零假设,转而支持另一种假设。(5%的概率被称为显著性水平测试的。)如果该值不是异常值,则不拒绝原假设。

在这种情况下,检验统计量T是样本均值。在零假设下,其均值为100,标准差为20/根号(N)。首先让我们看一个固定的样本容量,比如N=16。如果T在阴影区域,也就是分布的上尾,我们将拒绝零假设。这使得这是一个片面的检验,因为如果T在下尾,我们将不会拒绝。阴影区域的临界值高于平均值1.6个标准差。

rng (0,“旋风”);Mu0 = 100;Sig = 20;N = 16;Alpha = 0.05;Conf = 1-alpha;cutoff = norminv(conf, mu0, sig/sqrt(N));X = [linspace(90,cutoff), linspace(cutoff,127)];y = normpdf(x,mu0,sig/sqrt(N));H1 = plot(x,y); xhi = [cutoff, x(x>=cutoff)]; yhi = [0, y(x>=cutoff)]; patch(xhi,yhi,“b”);标题(样本均值的分布,N=16);包含(样本均值的);ylabel (“密度”);文本(96 .01 sprintf (如果是>%,拒绝。4g\nProb = 0.05',截止),“颜色”“b”);

这是T在零假设下的表现,但在另一种假设下呢?备选分布的均值为110,用红色曲线表示。

Mu1 = 110;y2 = normpdf(x,mu1,sig/sqrt(N));H2 = line(x,y2,“颜色”“r”);Yhi = [0, y2(x>=cutoff)];补丁(xhi yhi,“r”“FaceAlpha”, 0.25);P = 1 - normcdf(cutoff,mu1,sig/sqrt(N));文本(115 .06点sprintf ('如果T>%,拒绝。4g\nProb = %.2g',截止,P),“颜色”,[1 0 0]);传奇((h1 h2),“零假设”备择假设的);

如果另一种选择为真,那么拒绝零假设的几率就更大。这正是我们想要的。如果我们看累积分布函数(cdf)而不是密度(pdf),就更容易可视化。我们可以直接从这个图中读取概率,而不必计算面积。

ynull = normcdf(x,mu0,sig/sqrt(N));yalt = normcdf(x,mu1,sig/sqrt(N));H12 = plot(x,ynull,“b -”, x, yalt的r -);Zval = norminv(conf);cutoff = mu0 + zval * sig /√(N);Line ([90,cutoff,cutoff],[conf, conf, 0],“线型”“:”);MSG = sprintf('截止= 100 + %。2g \\乘20 / \\surd{n}', zval);文本(截止,酒精含量、味精、“颜色”“b”);文本(min (x)、sprintf (' %g%% test'100 *α),“颜色”“b”...“verticalalignment”“高级”) palt = normcdf(cutoff,mu1,sig/sqrt(N));线([90,截止],[palt palt],“颜色”“r”“线型”“:”);文本(91年,palt + .02 sprintf (功率为1%。2g = %.2g'、palt 1-palt),“颜色”,[1 0 0]);传奇(h12“零假设”备择假设的);

该图显示了当N=16时,对于两个不同的mu值获得显著统计量(拒绝零假设)的概率。

幂函数定义为当备选项为真时拒绝零假设的概率。这取决于备选方案的值和样本量。我们将画出幂(即1 - cdf)作为N的函数,将备选值固定在110。我们将选择N以达到80%的幂。图表显示我们需要N=25。

DesiredPower = 0.80;Nvec = 1:30;cutoff = mu0 + norminv(conf)*sig./sqrt(Nvec);power = 1 - normcdf(cutoff, mu1, sig./sqrt(Nvec));情节(Nvec、电力、“bo - - - - - -”,[0 30],[理想功率],凯西:”);包含(“N =样本量”) ylabel (“权力”)标题('替代的功率函数:\mu = 110'

在这个过于简单的例子中,有一个公式可以直接计算所需的值,以获得80%的幂:

Mudiff = (mu1 - mu0) / sig;N80 = ceil(((norminv(1-DesiredPower)-norminv(conf)) / mudiff)^2)
N80 = 25

为了验证这是可行的,让我们做一个蒙特卡罗模拟,在零假设均值为100和备择假设均值为110的情况下,生成400个样本,样本大小为25。如果我们测试每个样本,看看它的平均值是否为100,我们应该期望第一组中约5%和第二组中约80%是显著性的。

Nsamples = 400;Samplenum = 1:nsamples;N = 25;H0 = 0 (1,nsamples);H1 = h0;j = 1:nsamples Z0 = normrnd(mu0,sig,N,1);h0(j) = ztest(Z0,mu0,sig,alpha,“对”);Z1 = normrnd(mu1,sig,N,1);h1(j) = ztest(Z1,mu0,sig,alpha,“对”);结束P0 = cumsum(h0) ./ samplenum;P1 = cumsum(h1) ./ samplenum;情节(samplenum p0,“b -”samplenum p1,的r -)包含(的样本数量) ylabel (的比例显著)标题(“功率计算验证”)传说(“零假设”备择假设的“位置”“东”

用未知标准偏差检验正态均值,双面

现在假设我们不知道标准差,我们想进行双面检验,也就是说,无论样本均值过高或过低,都拒绝零假设。

检验统计量是一个t统计量,它是样本均值和被检验均值之间的差值,除以均值的标准误差。在零假设下,这是一个自由度为N-1的学生t分布。在备择假设下,分布是非中心t分布,其非中心性参数等于真实均值与被测均值之间的归一化差。

对于这个双面检验,我们必须将原假设下5%的错误概率均等地分配给两个尾部,如果检验统计量在任何一个方向上都过于极端,则拒绝。我们还需要考虑任意情况下的两个反面。

N = 16;df = N-1;Alpha = 0.05;Conf = 1-alpha;Cutoff1 = tinv(alpha/2,df);Cutoff2 = tinv(1-alpha/2,df);X = [linspace(-5,cutoff1), linspace(cutoff1,cutoff2),linspace(cutoff2,5)];Y = tpdf(x,df);H1 = plot(x,y);Xlo = [x(x<=cutoff1),cutoff1]; ylo = [y(x<=cutoff1),0]; xhi = [cutoff2,x(x>=cutoff2)]; yhi = [0, y(x>=cutoff2)]; patch(xlo,ylo,“b”);补丁(xhi yhi,“b”);标题(t统计量的分布,N=16);包含(“t”);ylabel (“密度”);文本(2.5,0。,sprintf ('如果t>%,拒绝。4g\nProb = 0.025'cutoff2),“颜色”“b”);文本(-4.5,0。,sprintf ('如果t<%,拒绝。4g\nProb = 0.025'cutoff1),“颜色”“b”);

我们可以把它看成是的函数,而不是在零假设和一个单独的替代值下考察幂函数。随着mu在任意方向上远离零假设值,幂值增加。我们可以用sampsizepwr函数来计算功率。对于功率计算,我们需要为标准偏差指定一个值,我们估计大约是20。这是样本容量N=16的幂函数图。

N = 16;X = linspace(90,127);幂= sampsizepwr(“t”20 [100], x, [], N);情节(x,权力);包含(“真正的意思是“) ylabel (“权力”)标题(N=16时的幂函数

当均值是110时,我们想要80%的幂。根据这张图,在N=16的样本量下,我们的功率小于50%。我们需要多大的样本量?

N = sampsizepwr(“t”20[100], 110年,0.8)
N = 34

我们需要34个样本。与前面的例子相比,我们需要额外的9个观察结果来进行双侧检验,并弥补不知道真正的标准偏差。

我们可以画出不同N值的幂函数图。

Nvec = 2:40;幂= sampsizepwr(“t”, 110年20 [100],[],Nvec);情节(Nvec、电力、“bo - - - - - -”,[0 40],[理想功率],凯西:”);包含(“N =样本量”) ylabel (“权力”)标题('替代的功率函数:\mu = 110'

我们可以做一个类似于之前的模拟来验证我们得到了我们需要的能量。

Nsamples = 400;Samplenum = 1:nsamples;N = 34;H0 = 0 (1,nsamples);H1 = h0;j = 1:nsamples Z0 = normrnd(mu0,sig,N,1);h0(j) = ttest(Z0,mu0,alpha);Z1 = normrnd(mu1,sig,N,1);h1(j) = ttest(Z1,mu0,alpha);结束P0 = cumsum(h0) ./ samplenum;P1 = cumsum(h1) ./ samplenum;情节(samplenum p0,“b -”samplenum p1,的r -)包含(的样本数量) ylabel (的比例显著)标题(“功率计算验证”)传说(“零假设”备择假设的“位置”“东”

假设样本容量是50。假设我们检测替代值mu=110的能力将大于80%。如果我们保持80%的功率,我们能检测到什么替代方案?

Mu1 = sampsizepwr(“t”20[100],[]。8,50)
Mu1 = 108.0837

测试比例

现在让我们转向确定区分两种比例所需的样本量的问题。假设我们正在对一个群体进行抽样,其中大约30%的人倾向于某个候选人,我们希望抽样足够多的人,以便将这个值与33%区分开来。

这里的思路和之前一样。这里我们可以使用样本计数作为检验统计量。该计数具有二项分布。对于任意样本容量N,我们可以计算拒绝零假设的截止点P=0.30。例如,对于N=100,如果样本计数大于如下计算的截止值,我们将拒绝零假设:

N = 100;Alpha = 0.05;P0 = 0.30;P1 = 0.33;截断值= binoinv(1- α, N, p0)
截止值= 38

二项分布的复杂之处在于它是离散的。超过临界值的概率不完全是5%:

1 - binocdf(截止,N, p0)
Ans = 0.0340

再一次,让我们计算一个样本容量范围内P=0.33的幂。我们将使用单侧(右尾)检验,因为我们只对大于30%的替代值感兴趣。

Nvec = 50:50:2000;幂= sampsizepwr(“p”Nvec, p0, p1, [],“尾巴”“对”);情节(Nvec、电力、“bo - - - - - -”,[0 2000],[理想功率],凯西:”);包含(“N =样本量”) ylabel (“权力”)标题('替代的幂函数:p = 0.33'

我们可以用sampsizepwr函数请求80%幂所需的样本量。

约n = sampsizepwr(“p”0.80 p0, p1, [],“尾巴”“对”
警告:数值N>200是近似值。将幂作为N的函数绘制,可以显示具有所需幂的较低N值。大约n = 1500

警告信息告诉我们答案只是近似值。如果我们观察不同样本量的幂函数,我们可以看到该函数一般是递增的,但由于二项分布是离散的,因此是不规则的。让我们看看在1470到1480的样本容量范围内,p=0.30和p=0.33时,拒绝原假设的概率。

次要情节(1,1);Nvec = 1470:1480;幂= sampsizepwr(“p”Nvec, p0, p1, [],“尾巴”“对”);情节(Nvec、电力、“ro - - - - - -”[min (Nvec), max (Nvec)], [DesiredPower DesiredPower),凯西:”);ylabel (sprintf (的概率(T >截止)\ nif p = 0.33 ')) h_gca = gca;h_gca。XTickLabel =;ylim([。78 .82]);次要情节(3、1、2);Alf = sampsizepwr(“p”Nvec p0, p0, [],“尾巴”“对”);情节(Nvec,阿尔夫,“bo - - - - - -”[min (Nvec), max (Nvec)],[αα],凯西:”);ylabel (sprintf (的概率(T >截止)\ nif p = 0.30 ')) h_gca = gca;h_gca。XTickLabel =;ylim([。04、06]);次要情节(3,1,3);cutoff = binoinv(1-alpha, Nvec, p0);情节(Nvec截止,“去,”);包含(“N =样本量”) ylabel (“截止”

该图揭示了幂函数曲线(上图)不仅不规则,而且在某些样本量下也会下降。这些是需要增加截止值(底部图)以保持显著性水平(中间图)不大于5%的样本量。我们可以在这个范围内找到一个较小的样本量,使期望的幂为80%:

分钟(Nvec(功率> = 0.80))
Ans = 1478

相关性测试

在我们到目前为止考虑的例子中,我们能够计算出检验统计量达到某个显著性水平的截止点,并计算出在替代假设下超过该截止点的概率。在最后一个例子中,让我们考虑一个不那么容易的问题。

想象一下,我们可以从两个变量X和Y中提取样本,我们想知道我们需要多大的样本容量来测试它们是否不相关,而不是它们的相关性高达0.4。虽然可以通过将样本相关性转换为t分布来计算出样本相关性的分布,但让我们使用一种即使在无法计算出检验统计量分布的问题中也可以使用的方法。

对于给定的样本量,我们可以使用蒙特卡罗模拟来确定相关性测试的近似截止值。让我们做一个大的模拟运行,这样我们就可以准确地得到这个值。样本容量为25。

Nsamples = 10000;N = 25;Alpha = 0.05;Conf = 1-alpha;R = 0 (1,nsamples);j = 1:nsamples xy = normrnd(0,1,N,2);R (j) = corr(xy(:,1),xy(:,2));结束截断值=分位数(r,conf)
截止值= 0.3372

然后我们可以在备择假设下生成样本,并估计检验的威力。

Nsamples = 1000;Mu = [0;0);Sig = [1 0.4;0.4 - 1];R = 0 (1,nsamples);j = 1:nsamples xy = mvnrnd(mu,sig,N);R (j) = corr(xy(:,1),xy(:,2));结束[power,powerci] = binofit(sum(r>cutoff),nsamples)
Power = 0.6470 powerci = 0.6165 0.6767

我们估计幂值为65%,我们有95%的信心认为真实值在62%到68%之间。为了得到80%的幂,我们需要更大的样本量。我们可以尝试将N增加到50,估计这个样本量的截止值,并重复功率模拟。

Nsamples = 10000;N = 50;Alpha = 0.05;Conf = 1-alpha;R = 0 (1,nsamples);j = 1:nsamples xy = normrnd(0,1,N,2);R (j) = corr(xy(:,1),xy(:,2));结束截断值=分位数(r,conf) nsamples = 1000;Mu = [0;0);Sig = [1 0.4;0.4 - 1];R = 0 (1,nsamples);j = 1:nsamples xy = mvnrnd(mu,sig,N);R (j) = corr(xy(:,1),xy(:,2));结束[power,powerci] = binofit(sum(r>cutoff),nsamples)
截止值= 0.2315功率= 0.8990功率ci = 0.8786 0.9170

这个样本量给出了比目标80%更好的幂。我们可以继续用这种方法进行试验,试图找到一个小于50的样本容量来满足我们的要求。

结论

统计和机器学习工具箱中的概率函数可用于确定在假设检验中实现所需功率水平所需的样本量。在某些问题中,可以直接计算样本量;在其他情况下,需要在一定范围内搜索样本大小,直到找到正确的值。随机数发生器可以帮助验证所需的功率是否满足,也可以用于研究替代条件下特定测试的功率。