Pregunta

Estoy tratando de usar Patsy para hacer datamatrices endógenas y exógenas, para su uso en regresión logística binaria.Estoy teniendo problemas estableciendo el nivel de referencia del lado endógeno.

El problema con el siguiente código es que el lado endógeno tiene dos niveles, donde solo debe tener uno en regresión logística binaria.

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')

La forma de Y es (100, 2), pero solo necesito 1 columna.Entonces, ¿cómo puedo sacar a Patsy para generar el lado endógeno para que pueda usarlo directamente en la regresión logística binaria?

¿Fue útil?

Solución

hmm, mi consejo sería cortarte a y después de hacer lo anterior.Patsy no está realmente diseñado con las variables LHS en mente.StatSModels debe funcionar en este caso (actualmente, no, pero eso es un error en StatsModels IMO. Si presenta un informe de errores en GitHub, puedo mirarlo).

fyi, puedes usar

import statsmodels.api as sm
dta = sm.datasets.get_rdataset('iris', cache=True)

como un acceso directo para llegar a los datos de RDatasets.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top