构建多元回归模型会抛出错误:"Pandas数据转换为numpy dtype对象.使用np.asarray(data).`检查输入数据

San*_*noj 17 python numpy pandas statsmodels

我有一些pandas数据帧,其中一些分类预测变量(即变量)为0和1,以及一些数字变量.当我适合像以下的stasmodel:

est = sm.OLS(y, X).fit()
Run Code Online (Sandbox Code Playgroud)

它抛出:

Pandas data cast to numpy dtype of object. Check input data with np.asarray(data). 
Run Code Online (Sandbox Code Playgroud)

我使用了转换DataFrame的所有dtypes df.convert_objects(convert_numeric=True)

在此之后,所有数据框变量的dtypes都显示为int32或int64.但最后它仍然显示dtype: object,像这样:

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
Run Code Online (Sandbox Code Playgroud)

这里4516,4523是变量标签.

任何的想法?我需要在数百个变量上构建一个多元回归模型.为此,我连接了3个pandas DataFrames,以提出用于模型构建的最终DataFrame.

Dan*_*son 21

如果X是您的数据框,请.astype在运行模型时尝试使用该方法转换为float:

est = sm.OLS(y, X.astype(float)).fit()
Run Code Online (Sandbox Code Playgroud)

  • 所有分类变量都应该在将它们粘贴到模型中之前转换为虚拟变量,所以是的 (4认同)
  • 所以..将分类变量转换为浮点数? (3认同)

小智 11

如果y(从属)和X都取自数据框,则输入两者: -

est = sm.OLS(y.astype(float), X.astype(float)).fit()
Run Code Online (Sandbox Code Playgroud)

  • 所以..将分类变量转换为浮点数? (3认同)