Ho un dataframe panda con alcuni predittori categoriali (cioè variabili) come 0 & 1 e alcune variabili numeriche. Quando mi adatto che a uno stasmodel come:Costruire il modello di multi-regressione genera un errore: `Trasmette i dati di Pandas a numpy dtype di oggetto. Controllare i dati di input con np.asarray (dati) .`
est = sm.OLS(y, X).fit()
Getta:
Pandas data cast to numpy dtype of object. Check input data with np.asarray(data).
ho convertito tutte le dtypes del dataframe utilizzando df.convert_objects(convert_numeric=True)
Dopo questo tutti dtypes di variabili dataframe appaiono come int32 o int64. Ma alla fine si vede ancora dtype: object
, in questo modo:
4516 int32
4523 int32
4525 int32
4531 int32
4533 int32
4542 int32
4562 int32
sex int64
race int64
dispstd int64
age_days int64
dtype: object
Qui 4516, 4523 sono etichette delle variabili.
Qualche idea? Ho bisogno di costruire un modello multi-regressione su più di centinaia di variabili. Per questo ho concatenato 3 DataFrame panda per creare il DataFrame finale da utilizzare nella costruzione del modello.
L'output visualizzato è come previsto. Il dtype elencato alla fine dell'output è il dtype della serie dtypes (il risultato della chiamata pd.DataFrame.dtypes) e non ha nulla a che fare con i tipi all'interno del tuo dataframe. Basta provare 'pd.DataFrame (range (100)). Dtypes' – davidshinn
controlla' np.asarray (X) .dtype' che dovrebbe essere float64 o int64 che, penso, sarà convertito in float64 all'interno di statsmodels. Meglio controllare di nuovo 'est.model.exog.dtype' per assicurarsi che float64 sia usato nei calcoli. – user333700