与分类因变量的相关性

Correlation with categorical dependent variables

我的数据大概是这个方案:

Category Value1 Value2 Value3
A 5.8 7.2 8.8
A 5.7 6.7 4.5
B 8.5 7.3 2.2
C 5.3 0.4 4.1
C 4.2 9.5 9.3
C 5.9 7.6 5.3
D 7.6 3.5 2.3
D 6.8 8.8 6.4

所以我的目标是计算相关性。值 1-3 是否受到不同类别的影响。例如。如果我们可以说类别 A 导致比其他类别更高的值 1。在 Python 中实现此目标的最佳和最短方法是什么?

我对你想如何处理这个问题并不完全有信心。但是鉴于您的问题,您可以使用分组平均值以 'short' 方式检查每个类别的值列的差异:

df.groupby('Category').mean()

            Value1    Value2    Value3
Category                              
A         5.750000  6.950000  6.650000
B         8.500000  7.300000  2.200000
C         5.133333  5.833333  6.233333
D         7.200000  6.150000  4.350000

这表明与您的预期相反,类别 A 导致值 1 的值低于其余值。

您还可以计算每个类别的百分比变化,从每个值移动到下一个值:

df.groupby('Category').mean().pct_change(axis=1).fillna(0)

          Value1    Value2    Value3
Category                            
A            0.0  0.208696 -0.043165
B            0.0 -0.141176 -0.698630
C            0.0  0.136364  0.068571
D            0.0 -0.145833 -0.292683

要获得 p 值,您可以使用非常简单的线性回归。网上有许多资源可以为您提供帮助。然而,简单来说:

from statsmodels.formula.api import ols
fit = ols('Value1 ~ C(Category)', data=df).fit() 
#fit.summary() 

>>> fit.pvalues.reset_index().rename({0:'p_values'},axis=1)

              index  p_values
0         Intercept  0.000269
1  C(Category)[T.B]  0.028933
2  C(Category)[T.C]  0.372288
3  C(Category)[T.D]  0.097482