首页 > 解决方案 > 无法修复“ValueError:未正确调用 DataFrame 构造函数!”

问题描述

我被要求编写一个线性回归程序,步骤如下。

  1. 将 R 数据集 mtcars 加载为 pandas 数据框。
  2. 通过考虑自变量 wt 的对数和因变量 mpg 的对数建立另一个线性回归模型。
  3. 用数据拟合模型,并显示 R 平方值

我是 Python 统计的初学者。

我尝试在不转换为新 DataFrame 的情况下获取日志值,但这给出了错误消息“TypeError: 'OLS' object is not subscriptable”

import statsmodels.api as sa
import statsmodels.formula.api as sfa
import pandas as pd
import numpy as np

cars = sa.datasets.get_rdataset("mtcars")
cars_data = cars.data
lin_mod1 = sfa.ols("wt~mpg",cars_data)
lin_mod2 = pd.DataFrame(lin_mod1)
lin_mod2['wt'] = np.log(lin_mod2['wt'])
lin_mod2['mpg'] = np.log(lin_mod2['mpg'])
lin_res1 = lin_mod2.fit()
print(lin_res1.summary())

预期结果是线性回归后的表格,但实际输出是错误的

[ValueError: DataFrame 构造函数没有正确调用!]

标签: pythonpandasnumpystatisticslinear-regression

解决方案


这可能对你有用。

import statsmodels.api as sm
import numpy as np
mtcars = sm.datasets.get_rdataset('mtcars')
mtcars_data = mtcars.data
liner_model = sm.formula.ols('np.log(wt) ~ np.log(mpg)',mtcars_data)
liner_result = liner_model.fit()
print(liner_result.rsquared)

推荐阅读