我试着写一个小程序来模拟Python3中随机数的采样。但这似乎与我的意图背道而驰。我做错什么了?一定很简单,但我不明白。你知道吗
import random
import statistics
import math
pcounter = 0
counter = 0
for loop in range(1000):
l = []
for x in range(500):
l.append(random.randint(1,1000))
m = statistics.mean(l)
v = list(l)
v[:] = [(x-m)**2 for x in v]
realvariance = sum(v)/len(v)
#print("Real Variance: " + str( sum(v)/len(v)))
#print("Real Mean: " + str(m))
sample = random.sample(l, 10)
v = list(sample)
#print(v)
v[:] = [(x-m)**2 for x in v]
samplem = statistics.mean(sample)
samplebiasedvariance = sum(v)/len(v)
samplevariance = sum(v)/(len(v)-1)
print(samplebiasedvariance)
print(samplevariance)
print(realvariance)
print((samplebiasedvariance - realvariance)**2 < (samplevariance - realvariance)**2)
if (samplebiasedvariance - realvariance)**2 < (samplevariance - realvariance)**2:
pcounter = pcounter + 1
print("biased Variance wins: " + str(pcounter))
else:
counter = counter + 1
print("Variance wins: " + str(counter))
print("biased Variance wins: " + str(pcounter))
print("Variance wins: " + str(counter))
这将导致:
biased Variance wins: 563
Variance wins: 437
但应该是相反的:我希望有偏方差比用(n-1)计算的无偏方差更差。因此,它应该更接近真实的总体方差(realvariance),而不是有偏差的方差。你知道吗
“偏见”是一个误导性的术语,它暗示了数学公式中的某种道德问题。你知道吗
你看到的基本上是两个方差估计的均方误差。结果表明,无偏样本方差比通常的有偏样本方差具有更大的均方误差,而通常的有偏样本方差又比用1/(n+1)而不是1/n或1/(n-1)计算的样本方差具有更大的均方误差。你知道吗
如果我理解正确,如果你把1/(n+1)估计放进你的程序,你会发现它比其他两个更接近实际值。你知道吗
维基百科页面上的variance在“总体方差和样本方差”标题下讨论了这个主题。毫无疑问,还有许多其他资源。你知道吗
相关问题 更多 >
编程相关推荐