Python-在不创建新变量的情况下在回归中减去两个变量

时间:2018-08-31 18:15:59

标签: python

假设我要退缩

  

y = x1 + x4

其中x4 = x2-x3

R中有一个函数I(),因此我不必在数据集中创建新变量x4,而只需编写

  

y = x1 + I(x2-x3)

在此处查看详细信息: What does the capital letter "I" in R linear regression formula mean?

在Python中有类似的方法吗?例如,使用statsmodels.formula.apisklearn

1 个答案:

答案 0 :(得分:1)

通过statsmodels.formula.api,您可以使用numpy中的矢量化函数。要应用减法,您可以使用np.subtract()

import numpy as np
import statsmodels.formula.api as smf
import pandas as pd

y = np.random.uniform(0, 20, size=100)
x1 = np.random.uniform(0, 20, size=100)
x2 = np.random.uniform(0, 20, size=100)
x3 = np.random.uniform(0, 20, size=100)
x = np.stack([y, x1, x2, x3], axis=1)
df = pd.DataFrame(x)
df.columns = ["y", "x1", "x2", "x3"]

fit = smf.ols(formula="y~x1+np.subtract(x2, x3)", data=df).fit()
print(fit.summary())

(示例数据显然没有意义,并且导致R平方几乎为零的回归,但显示了其工作原理。)