计算 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
等等
我有两个数组。 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
等等