【问题标题】:Calculation of pearsons r and beta coefficient计算 pearson 的 r 和 beta 系数
【发布时间】:2020-10-18 11:29:49
【问题描述】:

如何根据依赖变量计算数据框中每一列的 pearsons corr 和 Beta 系数

A             B            C              D           Sales
1             0            1              1             10
0             0            1              1             9 
1             1            1              0             15

这里A~D是独立的,Sales是依赖的,我想找到每一列的r和beta系数(属性)

【问题讨论】:

标签: python pandas numpy scikit-learn


【解决方案1】:

您应该查看有关 numpy、pandas 和 scikit-learn 的文档,它们中的每一个都有获取这些的函数。

对于相关性,numpy 中有 numpy.corrcoef,pandas 中有 pd.Series.corr

有关回归系数,请查看scikit-learn 中的statsmodelssklearn.linear_model

【讨论】:

  • 我确实检查了它们,但我不知道如何在我的情况下应用它们
【解决方案2】:

将此用于关联:

df.corr()['Sales'][:-1]

或者如果您的数据框太大,这样做可能更有效:

df[df.columns[:-1]].apply(lambda x:x.corr(df['Sales']))

输出:

A    0.628619
B    0.987829
C         NaN
D   -0.987829

this answer 的启发,测试版:

def beta(df):
    # first column is the Sales
    X = df.values[:, [-1]]
    # prepend a column of ones for the intercept
    X = np.concatenate([np.ones_like(X), X], axis=1)
    # matrix algebra
    b = np.linalg.pinv(X.T.dot(X)).dot(X.T).dot(df.values[:, :-1])
    return pd.Series(b[1], df.columns[:-1], name='Beta')

print(beta(df))

输出:

A    1.129032e-01
B    1.774194e-01
C    1.110223e-15
D   -1.774194e-01

解释

您选择最后一列 SalesX,将 1 列添加到 X 以用作截距并使用此 closed form answer 计算具有 Sales 的所有列的 beta,最后将 beta 返回为按列名索引的 Pandas 系列。

【讨论】:

  • 在我的情况下 X 将是销售列?
  • 能否解释一下beta的功能
  • @KarthikApadodharanan 是的,beta 函数的第一行,选择最后一列作为 X。我将在帖子中添加解释。请查看stackoverflow.com/help/someone-answers 以接受关于 SO 的答案。谢谢。
猜你喜欢
  • 1970-01-01
  • 2013-05-17
  • 2020-08-18
  • 2019-02-01
  • 1970-01-01
  • 2017-03-12
  • 1970-01-01
  • 1970-01-01
  • 2011-04-26
相关资源
最近更新 更多