首页 > 解决方案 > 如何在多线回归中对解释变量进行平方

问题描述

所以我想让我的解释变量空气质量和吸烟状况以及吸烟状况平方作为我的线性回归的一部分。所以我可以通过在我正在读取的 .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()

标签: pythonpandasnumpyregression

解决方案


使用formulaAPI。使用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 平方非常相关。


推荐阅读