因此,我希望将我的解释变量空气质量与吸烟状况和吸烟状况的平方作为线性回归的一部分。因此,我可以通过在我正在读取的.csv文件中添加值来轻松地解决这个问题,但我想使用python来处理它。有没有一种方法可以通过对吸烟状态进行平方处理并利用部分多重线回归来控制吸烟状态?我的csv文件只有3列,包括空气质量、吸烟状态和哮喘。
x = df[['Air_quality', 'Smoking_Status']]
y = df['Asthma_Death_Rate']
x = sm.add_constant(x)
est = sm.OLS(y,x).fit()发布于 2018-10-24 03:37:07
要在数据框中显示吸烟状态,请执行以下操作:
df['Smoking_Status'] = df['Smoking_Status']**2或下面较慢的循环版本
df['Smoking_Status'] = df['Smoking_Status'].apply(lambda x: x * x)有关更多详细信息,请参阅How to use Apply。这将覆盖数据框中吸烟状态的值。
发布于 2018-10-24 04:16:53
使用formula接口。使用patsy表示法,您应该能够平方一个项,但是有些东西对我不起作用。它仍然接受函数;在本例中,我们使用numpy.power。
import statsmodels.formula.api as smf
import numpy as np
mod = smf.ols('Asthma_Death_Rate ~ Air_quality + np.power(Smoking_Status, 2)', data=df).fit()示例数据:
import pandas as pd
np.random.seed(123)
s = 100
df = pd.DataFrame({'Air_quality': np.random.randint(1, 20, s),
'Smoking_Status': np.arange(0, s, 1) + np.random.normal(size=s),
'Asthma_Death_Rate': np.arange(0, s, 1)**2})输出:mod.summary()的一部分
===============================================================================================
coef std err t P>|t| [0.025 0.975]
-----------------------------------------------------------------------------------------------
Intercept 3.4253 33.039 0.104 0.918 -62.148 68.999
Air_quality 3.2522 2.721 1.195 0.235 -2.148 8.653
np.power(Smoking_Status, 2) 0.9916 0.005 193.833 0.000 0.981 1.002正如设计的那样,Asthma_Death_Rate与Smoking_Status的平方有很好的相关性。
https://stackoverflow.com/questions/52956500
复制相似问题