Pandas如何计算s

2024-07-07 07:08:42 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在计算coskew矩阵,想用pandas内置的skew方法重新检查我的计算。我无法调和熊猫是如何计算的。

将我的系列定义为:

import pandas as pd

series = pd.Series(
    {0: -0.051917457635120283,
     1: -0.070071606515280632,
     2: -0.11204865874074735,
     3: -0.14679988245503134,
     4: -0.088062467095565145,
     5: 0.17579741198527793,
     6: -0.10765856028420773,
     7: -0.11971470229167547,
     8: -0.15169210769159247,
     9: -0.038616800990881606,
     10: 0.16988162977411481,
     11: 0.092999418364443032}
)

我比较了下面的计算结果,希望它们是相同的。

熊猫

series.skew()

1.1119637586658944

(((series - series.mean()) / series.std(ddof=0)) ** 3).mean()

0.967840223081231

me-取2

这是明显不同的。我想可能是Fisher-Pearson coefficient。所以我做到了:

n = len(series)
skew = series.sub(series.mean()).div(series.std(ddof=0)).apply(lambda x: x ** 3).mean()
skew * (n * (n - 1)) ** 0.5 / (n - 1)

1.0108761442417222

还差一点呢。

问题

熊猫是如何计算倾斜的?


Tags: 方法importpandas定义as矩阵mean内置
1条回答
网友
1楼 · 发布于 2024-07-07 07:08:42

我发现带参数bias=False^{}返回相等的输出,所以我认为在pandas skew中默认为bias=False

bias : bool

If False, then the calculations are corrected for statistical bias.

import pandas as pd
import scipy.stats.stats as stats

series = pd.Series(
    {0: -0.051917457635120283,
     1: -0.070071606515280632,
     2: -0.11204865874074735,
     3: -0.14679988245503134,
     4: -0.088062467095565145,
     5: 0.17579741198527793,
     6: -0.10765856028420773,
     7: -0.11971470229167547,
     8: -0.15169210769159247,
     9: -0.038616800990881606,
     10: 0.16988162977411481,
     11: 0.092999418364443032}
)

print (series.skew())
1.11196375867

print (stats.skew(series, bias=False))
1.1119637586658944

不确定是100%,但我想我在code找到了


编辑(piRSquared)

来自^{} ^{} code

if not bias:
    can_correct = (n > 2) & (m2 > 0)
    if can_correct.any():
        m2 = np.extract(can_correct, m2)
        m3 = np.extract(can_correct, m3)
        nval = ma.sqrt((n-1.0)*n)/(n-2.0)*m3/m2**1.5
        np.place(vals, can_correct, nval)
return vals

调整是(n * (n - 1)) ** 0.5 / (n - 2),而不是(n * (n - 1)) ** 0.5 / (n - 1)

相关问题 更多 >