在 Python 中准确计算方差

Calculating variance accurately in Python

提问人:Dbatt 提问时间:11/13/2023 更新时间:11/13/2023 访问量:68

问:

我正在计算包含许多子列表的列表的方差。但是,输出与数学计算不同。为什么?我介绍当前和预期的输出。A

import statistics

A = [[2], [7], [3], [12], [9]]

# Flatten the sublists to get a single list of values
flattened_values = [value for sublist in A for value in sublist]

# Calculate the variance using the statistics module
variance_value = statistics.variance(flattened_values)

print("Variance:", variance_value)

电流输出为

Variance: 17.3

预期输出为

13.84
列表 统计学

评论

0赞 lastchance 11/13/2023
sigma^2 有不同的定义,具体取决于您使用的是 n 个自由度还是 (n-1) 个自由度。如果将电流输出 17.3 乘以 (n-1)/n,即 4/5,则得到另一个。

答:

0赞 Tanishq Chaudhary 11/13/2023 #1

只需使用 numpy。

import numpy as np

A = [[2], [7], [3], [12], [9]]

A = [value for sublist in A for value in sublist]
# can also do A = np.array(A).flatten()
print("Variance:", np.var(A))
2赞 Mohammed Shammeer 11/13/2023 #2

该方法计算数据样本(来自总体)的方差 要计算整个总体的方差,请查看该方法statistics.variance()statistics.pvariance()

import statistics

A = [[2], [7], [3], [12], [9]]

# Flatten the sublists to get a single list of values
flattened_values = [value for sublist in A for value in sublist]

# Calculate the variance using the statistics module
variance_value = statistics.pvariance(flattened_values)

print("Variance:", variance_value)
0赞 christian fomekong 11/13/2023 #3

根据文档要获得预期的结果,必须使用差异法而不是方差