我最近搬到了python进行数据分析,显然我被困在了基础知识上。我试图回归下面的表达式的参数:z = 20 + x + 3 * y +噪音,我得到正确的截距,但参数显然是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.出了什么问题?