标准差计算【转载】

转自:https://www.cnblogs.com/webRobot/p/7722820.html

1.标准差分为

总体标准差和样本标准差。

2.python3版本的测试代码

import random

import numpy as np

#试验次数

trial=1000

#正态分布总体大小

size_total=1000

#正态分布样本大小

size_sample=100

#分母状态

#ddofValue=0 表示样本标准差分母是n

#ddofValue=1 表示样本标准差分母是n-1

#ddofValue=2 表示样本标准差分母是n-2

list_ddofValues=[0,1,2]

#返回样本标准差和总体标准差的距离总和

def Total_distance(ddofValue):

    #总体标准差 和样本标准差的差值

    total_distance=0

    for i in range(trial):
        
        normal_values=list(np.random.normal(size=size_total))

        #总体标准差
        sigma=np.std(normal_values,ddof=0)

        #随机抽样

        sample=random.sample(normal_values,size_sample)

        s=np.std(sample,ddof=ddofValue)#ddof即分母上n-ddof,默认ddof=0

        distance=abs(sigma-s)

        total_distance+=distance

    return total_distance

#选择最佳模型

def Dict_modes():

    distance_ddof0=Total_distance(list_ddofValues[0])  

    distance_ddof1=Total_distance(list_ddofValues[1])

    distance_ddof2=Total_distance(list_ddofValues[2])

    dict_modes={}

    dict_modes["ddof0"]=distance_ddof0

    dict_modes["ddof1"]=distance_ddof1

    dict_modes["ddof2"]=distance_ddof2

    return dict_modes

dict_modes=Dict_modes()

print(dict_modes)

但是奇怪的发生了,并没有结果显示n-1效果最好:

{'ddof0': 4.0868364342971955, 'ddof1': 4.947034133787358, 'ddof2': -1.5785751594439086}
>>> 
========================= RESTART: D:Code	est.pyw =========================
{'ddof0': 53.50429234250031, 'ddof1': 55.14441660851662, 'ddof2': 55.00743997766253}
>>> 
========================= RESTART: D:Code	est.pyw =========================
{'ddof0': 47.747774754987645, 'ddof1': 57.2007701058931, 'ddof2': 61.25822087493527}
>>> 
========================= RESTART: D:Code	est.pyw =========================
{'ddof0': 52.731146715108636, 'ddof1': 53.558965517391805, 'ddof2': 52.55194546696517}

后三个是加上abs后相加的结果。

分别是2,0,0,2效果最好。

值越小表示样本标准差越接近总体标准差。 为什么呢?

设置size_sample=50时,得到结果:

{'ddof0': 78.40380428873893, 'ddof1': 76.08517941989425, 'ddof2': 77.20942295883009}

发现n-1是最好的。

设置size_sample=200时,得到结果:

{'ddof0': 37.16476033119325, 'ddof1': 35.09572615526863, 'ddof2': 36.156112099589926}

发现n-1是最好的。

设置size_sample=150时,得到结果:

{'ddof0': 43.52462677605111, 'ddof1': 43.059130130618186, 'ddof2': 42.0134545689584}

发现n-2是最好的。

所以说经过总体实验表明,n-1在大多数情况下都是好的?所以才选择它。

3.标准差与标准误差

那么,关于这两者的区别可以这样表述:标准差是样本数据方差的平方根,它衡量的是样本数据的离散程度;标准误是样本均值的标准差,衡量的是样本均值的离散程度。 而在实际的抽样中,习惯用样本均值来推断总体均值,那么样本均值的离散程度(标准误)越大,抽样误差就越大。 ... 所以,标准误就由样本标准差除以样本量来表示。

http://blog.sina.com.cn/s/blog_66035a700100hn1p.html

样本误差随样本数增加而减小=标准差/sqrt(n)。

4.数学上解释样本标准差分母为何是n-1

https://blog.csdn.net/Hearthougan/article/details/77859173

原文地址:https://www.cnblogs.com/BlueBlueSea/p/11095997.html