2024-09-20 07:36:40 发布
网友
如果我有这样的清单:
results=[-14.82381293, -0.29423447, -13.56067979, -1.6288903, -0.31632439, 0.53459687, -1.34069996, -1.61042692, -4.03220519, -0.24332097]
我想用Python计算这个列表的方差,它是平均值的平方差的平均值。
我该怎么办?访问列表中的元素进行计算会让我对获取平方差感到困惑。
您可以使用numpy的内置函数^{}:
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
28.822364260579157
如果-无论出于什么原因-您不能使用numpy和/或不想使用内置函数,您也可以使用alist comprehension“手工”计算:
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
@Serge Ballesta explained very well方差n和n-1之间的差异。在numpy中,您可以使用选项ddof轻松设置此参数;其默认值为0,因此对于n-1情况,您只需执行以下操作:
n
n-1
ddof
0
np.var(results, ddof=1)
“手”解在@Serge Ballesta's answer中给出。
两种方法都产生32.024849178421285。
32.024849178421285
也可以为std设置参数:
std
np.std(results, ddof=1) 5.659050201086865
从Python 3.4开始,标准库附带^{}函数(样本方差或方差n-1),作为^{}模块的一部分:
Python 3.4
from statistics import variance # data = [-14.82381293, -0.29423447, -13.56067979, -1.6288903, -0.31632439, 0.53459687, -1.34069996, -1.61042692, -4.03220519, -0.24332097] variance(data) # 32.024849178421285
可使用^{}函数获得人口方差(或方差n):
from statistics import pvariance # data = [-14.82381293, -0.29423447, -13.56067979, -1.6288903, -0.31632439, 0.53459687, -1.34069996, -1.61042692, -4.03220519, -0.24332097] pvariance(data) # 28.822364260579157
还要注意,如果您已经知道列表的平均值,那么variance和pvariance函数将使用第二个参数(分别是xbar和mu),以避免重新计算样本的平均值(这是方差计算的一部分)。
variance
pvariance
xbar
mu
有两种方法可以定义方差。当您有一个完整的集合时,您可以使用variancen,当您有一个样本时,您可以使用variancen-1。
2之间的区别在于,值m = sum(xi) / n是实际平均值,还是仅仅是平均值的近似值。
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无关,但它确实对统计分析有影响,这个问题被标记为statistics和variance
注:通常,像numpy这样的统计库使用variancen来表示它们所称的var或variance,而variancen-1用于表示标准差的函数。
var
您可以使用numpy的内置函数^{} :
这给了你
28.822364260579157
如果-无论出于什么原因-您不能使用
numpy
和/或不想使用内置函数,您也可以使用alist comprehension“手工”计算:结果是一样的。
如果您对标准偏差感兴趣,可以使用numpy.std:
@Serge Ballesta explained very well方差
n
和n-1
之间的差异。在numpy中,您可以使用选项ddof
轻松设置此参数;其默认值为0
,因此对于n-1
情况,您只需执行以下操作:“手”解在@Serge Ballesta's answer中给出。
两种方法都产生
32.024849178421285
。也可以为
std
设置参数:从} 函数(样本方差或方差n-1),作为^{} 模块的一部分:
Python 3.4
开始,标准库附带^{可使用^{} 函数获得人口方差(或方差n):
还要注意,如果您已经知道列表的平均值,那么
variance
和pvariance
函数将使用第二个参数(分别是xbar
和mu
),以避免重新计算样本的平均值(这是方差计算的一部分)。有两种方法可以定义方差。当您有一个完整的集合时,您可以使用variancen,当您有一个样本时,您可以使用variancen-1。
2之间的区别在于,值
m = sum(xi) / n
是实际平均值,还是仅仅是平均值的近似值。例1:你想知道一个班级学生的平均身高及其方差:好的,值
m = sum(xi) / n
是实际平均值,Cleb给出的公式是好的(方差n)。例2:您想知道公共汽车在车站经过的平均小时数及其方差。你记下一个月的小时数,得到30个值。这里的值
m = sum(xi) / n
只是实际平均值的近似值,使用更多的值,这种近似值会更精确。在这种情况下,实际方差的最佳近似值是方差n-1好吧,这与Python无关,但它确实对统计分析有影响,这个问题被标记为statistics和variance
注:通常,像numpy这样的统计库使用variancen来表示它们所称的
var
或variance
,而variancen-1用于表示标准差的函数。相关问题 更多 >
编程相关推荐