为什么样本标准差分母为n 您所在的位置:网站首页 标准偏差为何除以n减1 为什么样本标准差分母为n

为什么样本标准差分母为n

2024-07-15 21:14| 来源: 网络整理| 查看: 265

我们知道总体标准差(σ)是按照下面的公式来计算的:

但是在真实世界中,找到一个总体的标准差是不现实的。大多数情况下,我们都是通过计算样本标准差(s)来估计总体标准差(σ)的。但是s的计算公式是这样的:

分母为什么要(n-1)呢,而不是n?

维基百科给出的解释有点费解:

看过很多统计学的教程和问答,一个比较利于理解的通俗的解释是:__ 分母为n的话算出来的s会低估总体标准差(σ)。__

下面用MATLAB编程来证明这一点。大体是,我们随机生成1000个整数作为总体,然后从这个总体里抽取100个数,作为1个sample,共抽取1000个sample。然后我们用两种方式计算一下这个sample的标准差,即分母为n-1或者n,然后我们数一下这两种计算方式得到的s低于总体标准差(σ)的个数,这 里我们统计1000次的结果,代码在最后面。结果如下图,果不其然,分母为n的时候会较多的低估总体标准差(1000个sample平均有550个低估了总体标准差),而分母为(n-1)的时候基本大差不差(1000个sample基本有一半低估,一半高估)。

代码如下,可直接copy运行:

%% 总体(1000个1-100之间的整数),总体均值和总体标准差 population = [1:1000] mean_population = mean(population); sigma_population =sqrt(sum((population-mean_population).^2)/1000); %% 统计1000次结果,每次1000个sample,看有多少次标准差低估总体标准差的 No_underestimate = []; No_underestimate_real = []; for m = 1:1000 sigma_sample = []; real_sigma_sample = []; %随机取1000次sample for i = 1:1000 %从population里随机选取100个数作为sample idx_sample = randi(1000,100,1); sample = population(idx_sample); %样本的均值和“标准差(分母不减一)” mean_sample = mean(sample); sigma_sample = [sigma_sample sqrt(sum((sample-mean_sample).^2)/length(sample))]; %样本的标准差,分母减一 real_sigma_sample = [real_sigma_sample sqrt(sum((sample-mean_sample).^2)/(length(sample)-1))]; end %分母不减一求样本标准差时候低估总体标准差的个数 No_underestimate =[No_underestimate length(sigma_sample(sigma_sample


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有