如何在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 np

results = [-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 mean

m = 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

回到顶部