【发布时间】:2017-04-11 22:32:22
【问题描述】:
我是 Python 新手,我阅读的相关问题对我来说没有多大意义。我有以下问题。我想用 Python 做多元回归,我正在尝试 statsmodels。在这种情况下,我想做一个散点图。
我的数据样本:
ID order V1 V2 E1 E2 E3 M
103 1 ECA TEXT 7 3 5 7
105 1 ECA TEXT 3 7 4 5
107 1 ECA TEXT 7 7 7 4
109 1 ECA TEXT 6 6 6 3
我想用 E1-E3 作为我的 IV 和 M 的平均分数作为我的 DV 进行多元回归。
这就是我加载数据的方式。
myRegressionData = pd.read_csv('C:/Users/user/Desktop/Folder 1/Python/Regression data file.csv')
这些是我的 x 和 y:
X_sk = myRegressionData[[col for col in myRegressionData.columns if col[:8] == 'E']]
Y = myRegressionData[['M{}'.format(ii) for ii in range(1, 19)]]
y = np.mean(Y, axis=1)
这是我得到错误的代码:
myRegressionData.plot(kind='scatter',x = X_sk, y=np.mean(Y, axis=1))
返回
ValueError:必须只传递带有布尔值的DataFrame
myRegressionData.info()
返回
RangeIndex:90 个条目,0 到 89 列:146 个条目,IDOpenEndedResponse 到 EngagingAA dtypes:float64(10)、int64(134)、object(2) 内存使用量:102.7+ KB
【问题讨论】:
-
没有您的数据,我们无法完全解决此问题,例如
myRegressionData.info()显示什么?如果你只是做了myRegressionData.plot.scatter(x = X_sk, y = np.mean(Y, axis=1))或只是myRegressionData.plot().bar(),会不会很糟糕 -
@EdChum 将是:
RangeIndex:90 个条目,0 到 89 列:146 个条目,IDOpenEndedResponse 到 EngagingAA dtypes:float64(10),int64 (134),对象(2) 内存使用量:102.7+ KB。不,它不起作用,我得到同样的错误。 -
请将其编辑到您的问题中,除了值错误可能是虚假的,因为散点图可以处理的不仅仅是布尔值,因此您需要发布一个包含原始数据的最小示例,您的代码以加载 df ,所有重现错误的代码和所需的输出
-
不幸的是仍然需要原始数据,你可能有不可靠的数据
-
在您的示例数据中,您只有一个
M目标列,但聚合了 18 个目标列。也许您应该通过在示例数据中添加另一个M列来表明这一点,这样您就有了M1和M2。此外,您可能应该更新您的代码以使用col[:1] == 'E'和range(1, 3),或类似的。还要记住,range在开头包含在内,但在结尾不包含在内。
标签: python statsmodels