假设我要退缩
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.api
或sklearn
答案 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平方几乎为零的回归,但显示了其工作原理。)