首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么statistics.variance默认使用“无偏”样本方差?

为什么statistics.variance默认使用“无偏”样本方差?
EN

Stack Overflow用户
提问于 2016-08-26 17:06:44
回答 2查看 1.3K关注 0票数 1

我最近开始使用python的统计模块。

我注意到默认情况下,variance()方法返回“无偏”方差或样本方差:

代码语言:javascript
复制
import statistics as st
from random import randint

def myVariance(data):
    # finds the variance of a given set of numbers
    xbar = st.mean(data)
    return sum([(x - xbar)**2 for x in data])/len(data)

def myUnbiasedVariance(data):
    # finds the 'unbiased' variance of a given set of numbers (divides by N-1) 
    xbar = st.mean(data)
    return sum([(x - xbar)**2 for x in data])/(len(data)-1)

population = [randint(0, 1000) for i in range(0,100)]

print myVariance(population)

print myUnbiasedVariance(population)

print st.variance(population)

输出:

代码语言:javascript
复制
81295.8011
82116.9708081
82116.9708081

这对我来说似乎很奇怪。我猜很多时候人们都在处理样本,所以他们想要一个样本方差,但我希望默认函数计算总体方差。有人知道这是为什么吗?

EN

回答 2

Stack Overflow用户

发布于 2016-08-29 03:39:22

我会争辩说,几乎所有的时候,当人们从数据中估计方差时,他们使用的是样本。根据无偏估计的定义,方差的无偏估计的期望值等于总体方差。

在您的代码中,您使用random.randint(0, 1000),它从具有1001个可能值和方差1000*1002/12 = 83500的离散均匀分布中采样(例如,请参见MathWorld)。这里的代码显示,平均而言,当使用样本作为输入时,statistics.variance()statistics.pvariance()更接近总体方差

代码语言:javascript
复制
import statistics as st, random, numpy as np

var, pvar = [], []
for i in range(10000):
  smpl = [random.randint(0, 1000) for j in range(10)]
  var.append(st.variance(smpl))
  pvar.append(st.pvariance(smpl))

print "mean variance(sample):  %.1f" %np.mean(var)
print "mean pvariance(sample): %.1f" %np.mean(pvar)
print "pvariance(population):  %.1f" %st.pvariance(range(1001))

下面是输出示例:

代码语言:javascript
复制
mean variance(sample):  83626.0
mean pvariance(sample): 75263.4
pvariance(population):  83500.0
票数 1
EN

Stack Overflow用户

发布于 2019-04-08 09:48:38

这是另一个很棒的帖子。我想知道完全相同的事情,这个问题的答案对我来说真的很清楚。使用np.var,您可以将参数"ddof=1“添加到其中,以返回无偏估计器。看看这个:

What is the difference between numpy var() and statistics variance() in python?

代码语言:javascript
复制
print(np.var([1,2,3,4],ddof=1))
1.66666666667
票数 -2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39162505

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档