Mientras que el uso de statsmodels, estoy recibiendo este error extraño: ValueError: endog must be in the unit interval. alguien Puede darme más información sobre este error? Google no está ayudando.

Código que ha producido el error:

"""
Multiple regression with dummy variables. 
"""

import pandas as pd
import statsmodels.api as sm
import pylab as pl
import numpy as np

df = pd.read_csv('cost_data.csv')
df.columns = ['Cost', 'R(t)', 'Day of Week']
dummy_ranks = pd.get_dummies(df['Day of Week'], prefix='days')
cols_to_keep = ['Cost', 'R(t)']
data = df[cols_to_keep].join(dummy_ranks.ix[:,'days_2':])
data['intercept'] = 1.0

print(data)

train_cols = data.columns[1:]
logit = sm.Logit(data['Cost'], data[train_cols])

result = logit.fit()

print(result.summary())

Y la rastreabilidad:

Traceback (most recent call last):
  File "multiple_regression_dummy.py", line 20, in <module>
    logit = sm.Logit(data['Cost'], data[train_cols])
  File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/statsmodels/discrete/discrete_model.py", line 404, in __init__
    raise ValueError("endog must be in the unit interval.")
ValueError: endog must be in the unit interval.
  • Tal vez comprobar esta condición que genera este error: si (self.__clase__.__nombre__ != ‘MNLogit’ y no np.todos los((self.endog >= 0) & (auto.endog <= 1))): raise ValueError(«endog debe estar en la unidad de intervalo de tiempo».)
  • ¿Cuál es tu Cost de datos? Logit requiere que la variable dependiente (endog) está en la unidad de intervalo. Si desea regresión logística con valores en el otro intervalo, entonces usted necesita para transformar sus valores, para que estén en la unidad de intervalo. Sin embargo, Logit no requiere que el endog son 0, 1 enteros, lo que se puede utilizar para proporciones.
  • Ah Cost no está en la unidad de intervalo. Alguna idea de por qué Logit requiere esto?
  • La distribución subyacente de Logit es una distribución de Bernoulli, que toma los valores 0 y 1. Esto puede ser extendido a cualquier valor entre 0 y 1, pero las funciones no están definidas fuera de la unidad de intervalo. Si usted tiene un resultado positivo de la variable dependiente y una media exponencial de la función, a continuación, la distribución de Poisson se puede utilizar, incluso si los datos es continua. Para independiente continua de datos del modelo habitual es OLS.
InformationsquelleAutor Edward Yu | 2015-07-09

2 Comentarios

  1. 10

    Tengo este error cuando mi columna de destino tuvieron valores mayores que 1.
    Asegúrese de que su columna de destino está entre 0 y 1 (como se requiere para una Regresión Logística) e inténtelo de nuevo.
    Por ejemplo, si usted tiene la columna de destino con valores de 1 a 5, 4 y 5 positivos de la clase y 1,2,3 de la clase negativa. Espero que esto ayude.

    • La leyenda – yo tenía una NaN en mi columna de destino
  2. 1

    Parece que sigue la misma regresión logística tutorial que hice:
    http://blog.yhat.com/posts/logistic-regression-and-python.html

    Terminé recibiendo el mismo Valor de Error cuando me cabía en mi de regresión logística, y el truco que se necesita para ponerlo en marcha fue asegurándose de colocar todas las filas de mis datos con valores perdidos (N/A o np.nan).

    Esto se puede hacer con los pandas función de los pandas.notnull() de la siguiente manera :

    data = data[pd.notnull(data['Cost'])],
    
    data = data[pd.notnull(data['R(t)'])],
    
    ...

    y así hasta que todas las variables tienen la misma cantidad de valores a trabajar con.

    Espero que esto ayude a alguien más!

Dejar respuesta

Please enter your comment!
Please enter your name here