Python - 如何计算标准化频率的标准偏差

Posted

技术标签:

【中文标题】Python - 如何计算标准化频率的标准偏差【英文标题】:Python - How to calculate standard deviation out of normalized frequencys 【发布时间】:2022-01-23 15:13:19 【问题描述】:

我想找到归一化频率的标准偏差。

我的频率分布范围为 1 到 9,归一化后加起来为 1。 这些值作为浮点数存储在不同的 pandas 列中

df[names].iloc[0]

pred_percet_rating_1    0.009985
pred_percet_rating_2    0.023371
pred_percet_rating_3    0.045363
pred_percet_rating_4    0.090492
pred_percet_rating_5    0.134723
pred_percet_rating_6    0.188476
pred_percet_rating_7    0.202444
pred_percet_rating_8    0.204562
pred_percet_rating_9    0.100585

第一行代表一个已被人们评价过的产品。它最常被评为 7(20% 的收视率)或 8(也是 20% 的收视率)。

现在我想为每一行计算一个标准偏差,但我所有的方法都失败了,因为我必须以某种方式转换列之间的距离。我已经尝试制作一个 np.histogramm 来使用收益来计算标准偏差,但无济于事。

任何指针都非常受欢迎!

【问题讨论】:

【参考方案1】:

你必须计算平均值 sum(x[i])/n, sum((x[i] - xm)**2)/n 如果你对重复的评分进行分组,你会发现每个唯一值的系数就是你表中的频率。

所以均值是mu = np.sum(x * f),标准差是np.sqrt(np.sum(f * (x - mu)**2))

对于您的示例数据,它将像这样计算

f = [0.009985,0.023371,0.045363,0.090492,
 0.134723,0.188476,0.202444,0.204562,0.100585]
x = np.arange(1, 10)
mu = np.sum(x * f) # average 6.318124
sigma = sum(f*(x - sum(x*f))**2) # standard deviation 3.35

【讨论】:

以上是关于Python - 如何计算标准化频率的标准偏差的主要内容,如果未能解决你的问题,请参考以下文章

如何在不使用 numpy 的情况下计算 python 中的标准偏差?

Python - 每列中所选行的标准偏差

Python - 从线性回归线计算正在进行的 1 个标准偏差

您如何使用 scikit-learn 中的惯性计算差距统计的标准偏差?

如何有效地计算运行标准偏差?

Pandas计算标准差