我被要求按照以下步骤编写一个线性回归程序。在
我是Python统计的初学者。在
我尝试在不转换为新数据帧的情况下获取日志值,但出现了一个错误:“TypeError:'OLS'object is not subscribable”
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 constructor not properly called!]
我破坏了你的代码,我已经逐行运行了。 问题在于:
如果尝试打印,则输出为:
^{pr2}$它不能被正确地解释为建立一个数据帧。在
解决方案是将第一个线性模型的结果放入表格,最后放入数据框:
如果打印结果摘要,您将看到变量是:Intercept和mpg。 我不知道是概念上的错误还是什么,因为它不是对“wt”-“mpg”。在
林琰mod2的印刷品是:
这可能对你有用。在
相关问题 更多 >
编程相关推荐