Python 使用patsy选择y变量/LHS/内生侧的参考水平

Python 使用patsy选择y变量/LHS/内生侧的参考水平,python,python-3.x,statsmodels,Python,Python 3.x,Statsmodels,我试图用Patsy来制作内生和外生数据矩阵,用于二元逻辑回归。我在设置内源侧的参考水平时遇到问题 以下代码的问题是内生端有两个级别,在二元逻辑回归中它应该只有一个级别 import pandas as pd import statsmodels.api as sm import patsy # data: url = 'http://vincentarelbundock.github.io/Rdatasets/csv/datasets/iris.csv' df = pd.read_csv(ur

我试图用Patsy来制作内生和外生数据矩阵,用于二元逻辑回归。我在设置内源侧的参考水平时遇到问题

以下代码的问题是内生端有两个级别,在二元逻辑回归中它应该只有一个级别

import pandas as pd
import statsmodels.api as sm
import patsy

# data:
url = 'http://vincentarelbundock.github.io/Rdatasets/csv/datasets/iris.csv'
df = pd.read_csv(url)
df = df.iloc[:10,1:]
df = df.loc[ ( df.Species == 'setosa') | ( df.Species == 'versicolor' ) ,]
df.columns = ['Sepal_Length', 'Sepal_Width', 'Petal_Length', 'Petal_Width', 'Species' ]


y, X = patsy.dmatrices("C(Species,Treatment('versicolor')) ~ Sepal_Length",data = df, return_type = 'dataframe')

y的形状是(100,2),但我只需要1列。那么,我如何让Patsy输出内生面,这样我就可以直接在二元逻辑回归中使用它呢?

Hmm,我的建议是在完成上述操作后,将y切片。Patsy在设计时并没有考虑LHS变量。Statsmodels在这种情况下应该可以工作(目前没有,但这是Statsmodels IMO中的一个bug。如果您在github上提交一个bug报告,我可以查看它。)

仅供参考,您可以使用

import statsmodels.api as sm
dta = sm.datasets.get_rdataset('iris', cache=True)
作为获取Rdatasets数据的快捷方式