我最近转向 python 进行数据分析,显然我停留在基础知识上。我试图回归以下表达式的参数:z=20+x+3*y+noise,我得到了正确的截距,但 x 和 y 参数显然是错误的。我在做什么失踪?下面的代码:
import numpy as np
import pandas as pd
import statsmodels.formula.api as smf
# generate true values, and noise around them
np.random.seed(5)
x = np.arange(1, 101)
y = np.arange(1, 101)
z = 20 + x + 3* y + np.random.normal(0, 20, 100)
data = pd.DataFrame({'x':x, 'y':y, 'z': z})
lm = smf.ols(formula='z ~ x + y', data=data).fit()
# print the coefficients
lm.summary()
返回
其中 x 和 y 参数都是 1.5,而不是 1 和 3。怎么了?
