计算 python 中的分布矩(均值、方差)

Calculate moments (mean, variance) of distribution in python

我有两个数组。 x 是独立变量,counts 是 x 出现的次数,就像直方图一样。我知道我可以通过定义一个函数来计算平均值:

def mean(x,counts):
    return np.sum(x*counts) / np.sum(counts)

是否有一个通用函数可以用来根据 x 和计数定义的分布计算每个时刻?我也想计算方差。

您可以使用 scipy 中的 moment function。它计算数据的第 n 个 central 时刻。

您也可以定义自己的函数,看起来像这样:

def nmoment(x, counts, c, n):
    return np.sum(counts*(x-c)**n) / np.sum(counts)

在该函数中,c 表示力矩所围绕的点,n 是顺序。因此,要获得方差,您可以 nmoment(x, counts, np.average(x, weights=counts), 2).

import scipy as sp
from scipy import stats
stats.moment(counts, moment = 2) #variance

stats.moment returns第n个中心矩

Numpy现在支持订单统计

https://numpy.org/doc/stable/reference/routines.statistics.html

  • np.average
  • np.std
  • np.var 等等