如何在python中计算列表的方差?
如果我有这样的列表:
results=[-14.82381293, -0.29423447, -13.56067979, -1.6288903, -0.31632439, 0.53459687, -1.34069996, -1.61042692, -4.03220519, -0.24332097]
我想在Python中计算此列表的方差,即与均值平方差的平均值。
我该怎么办?访问列表中的元素进行计算使我困惑于平方差。
回答:
您可以使用numpy的内置函数var
:
import numpy as npresults = [-14.82381293, -0.29423447, -13.56067979, -1.6288903, -0.31632439,
0.53459687, -1.34069996, -1.61042692, -4.03220519, -0.24332097]
print(np.var(results))
这给你 28.822364260579157
如果出于某种原因您不能使用numpy
和/或不想使用内置函数,也可以使用列表推导“手动”计算:
# calculate meanm = sum(results) / len(results)
# calculate variance using a list comprehension
var_res = sum((xi - m) ** 2 for xi in results) / len(results)
这会给您相同的结果。
如果您对
感兴趣,可以使用numpy.std:
print(np.std(results))5.36864640860051
@SergeBallesta很好地解释了方差n
和的区别n-1
。在numpy中,您可以使用选项轻松设置此参数ddof
;它的默认值为0
,因此n-1
您可以简单地执行以下操作:
np.var(results, ddof=1)
@Serge Ballesta的答案给出了“手动”解决方案。
好了,有两种定义方差的方法。你有差异ñ当你有一个全套您使用,方差N-1 ,当你有一个样品大家使用。
2之间的区别是该值m = sum(xi) / n
是实际平均值还是仅仅是平均值的近似值。
例1:您想知道班级中学生的平均身高及其方差:好的,该值m = sum(xi) / n
是实际平均值,Cleb给出的公式也可以(方差n)。
例2:您想知道公交车在公交车站经过的平均时间及其方差。您记下一个月的小时,并获得30个值。在这里,该值m = sum(xi) / n仅是实际平均值的近似值,并且使用更多值时,该近似值将更准确。在那种情况下,实际方差的最佳近似是方差n-1
varRes = sum([(xi - m)**2 for xi in results]) / (len(results) -1)
好的,它与Python无关,但确实会影响统计分析,并且标记了问题 统计 和 方差
注意:通常,诸如numpy之类的统计库使用方差n表示它们的var或variance,使用方差n-1表示给出标准偏差的函数。
两种方法均会产生结果32.024849178421285
。
您还可以为设置参数std
:
np.std(results, ddof=1)5.659050201086865
以上是 如何在python中计算列表的方差? 的全部内容, 来源链接: utcz.com/qa/418412.html