如何检查连续和分类变量之间的相关性?

18

我有一个包含二元分类变量和连续变量的数据集。我正尝试应用线性回归模型来预测一个连续变量。请问如何检查分类变量和连续目标变量之间的相关性?

当前代码:

import pandas as pd
df_hosp = pd.read_csv('C:\Users\LAPPY-2\Desktop\LengthOfStay.csv')

data = df_hosp[['lengthofstay', 'male', 'female', 'dialysisrenalendstage', 'asthma', \
              'irondef', 'pneum', 'substancedependence', \
              'psychologicaldisordermajor', 'depress', 'psychother', \
              'fibrosisandother', 'malnutrition', 'hemo']]
print data.corr()

除了lengthofstay变量之外,所有变量都是分类变量。这样可以吗?


你目前尝试了什么?请提供代码并清楚地说明您遇到的问题所在。 - Adeel Ahmad
在Python中查找ANOVA(在R中为“aov”)。这有助于确定不同组别(分类值)的均值(连续值)是否具有显着差异。如果您只有两个组,请使用双侧t.test(成对或不成对)。 - Rockbar
请跟随本教程。我认为这就是你在寻找的:http://www.marsja.se/four-ways-to-conduct-one-way-anovas-using-python/ - Rockbar
谢谢@Rockbar,但我已经将数据存储在pandas数据框中,并且有多个列具有大量观测值。在这种情况下,使用方差分析是否合适? - funnyguy
好的,那我误解了。那么像下面的建议就是正确的方式。 - Rockbar
显示剩余3条评论
3个回答

22

将您的分类变量转换为虚拟变量,在此处并将您的变量放入numpy.array中。例如:

data.csv

age,size,color_head
4,50,black
9,100,blonde
12,120,brown
17,160,black
18,180,brown

提取数据:

import numpy as np
import pandas as pd

df = pd.read_csv('data.csv')

df:

df

将分类变量color_head转换为虚拟变量:

df_dummies = pd.get_dummies(df['color_head'])
del df_dummies[df_dummies.columns[-1]]
df_new = pd.concat([df, df_dummies], axis=1)
del df_new['color_head']

df_new:

df_new

将其放入numpy数组中:

x = df_new.values

计算相关性:

correlation_matrix = np.corrcoef(x.T)
print(correlation_matrix)

输出:

array([[ 1.        ,  0.99574691, -0.23658011, -0.28975028],
       [ 0.99574691,  1.        , -0.30318496, -0.24026862],
       [-0.23658011, -0.30318496,  1.        , -0.40824829],
       [-0.28975028, -0.24026862, -0.40824829,  1.        ]])

请参阅:

numpy.corrcoef


3
在这种情况下,相关性是相当误导人的,因为我们正在比较分类变量和连续变量。

不一定。在转换为虚拟变量之后,即由@glegoux回答中所做的操作,分类变量被转换为多个列,每个列都成为一个二进制列。在这种情况下,相关性变为点二列相关性。 - Sourajyoti Datta

0

请在您的链接中添加上下文,以便您的同行用户了解它的作用和原因,然后引用您正在链接到的页面上最相关的部分,以防目标页面无法访问。那些只是链接的答案可能会被删除。 - Koedlt
这并没有回答问题。一旦您拥有足够的声望,您将能够评论任何帖子;相反,提供不需要询问者澄清的答案。- 来自审核 - コリン

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接