【问题标题】:How to square explanatory variable in Multiple Line Regression如何在多线回归中对解释变量进行平方
【发布时间】:2019-03-28 03:09:18
【问题描述】:

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

【问题讨论】:

  • 类似for col in df: df[col+"_squared"] = df[col]*df[col]?
  • smoking_status是什么类型的数据,代表什么?我假设它是分类的,即有人吸烟或不吸烟。在这种情况下,平方并没有真正的意义......
  • 顺便说一句,但sm.add_constant 对于大数据来说速度非常慢。使用x['const'] = 1 更容易自己添加

标签: python pandas numpy regression


【解决方案1】:

在您的数据框中平方吸烟状态:

df['Smoking_Status'] = df['Smoking_Status']**2

或者下面的慢循环版本

df['Smoking_Status'] = df['Smoking_Status'].apply(lambda x: x * x)

有关详细信息,请参阅How to use Apply。这将覆盖数据框中的吸烟状态值。

【讨论】:

  • Series.apply 本质上是一个缓慢的 for 循环。大多数简单的代数计算都可以作为向量化运算来执行,在这种情况下df['Smoking_Status'] = df['Smoking_Status']**2
  • 我实际上尝试过这个,但我做了 (...x:x^2) 我想这不好。这解决了它!
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-06-11
    • 2019-02-22
    • 1970-01-01
    • 2017-09-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多