Python-在回归中减去两个变量而不创建新变量

Python-在回归中减去两个变量而不创建新变量,python,Python,假设我在倒退 y=x1+x4 其中x4=x2-x3 在R中,有一个函数I(),这样我就不必在数据集中创建新变量x4,只需简单地编写 y=x1+I(x2-x3) 详情如下: 在Python中是否有类似的方法来实现这一点?例如,使用statsmodels.formula.api或sklearn和statsmodels.formula.api可以使用numpy中的矢量化函数。要应用减法,可以使用np.subtract(): (示例数据显然没有意义,导致R平方几乎为零的回归,但它显示了它的工作原理。)

假设我在倒退

y=x1+x4

其中x4=x2-x3

在R中,有一个函数
I()
,这样我就不必在数据集中创建新变量x4,只需简单地编写

y=x1+I(x2-x3)

详情如下:


在Python中是否有类似的方法来实现这一点?例如,使用
statsmodels.formula.api
sklearn

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

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

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())