Python statsmodels中的普通最小二乘法:我们的模型需要一个截距
我开始学习线性回归,一开始就被难倒了。我认为我的问题不在概念上,而在实施上。我不明白为什么,根据,在尝试拟合回归线时,我需要包含一个截距为1的额外列Python statsmodels中的普通最小二乘法:我们的模型需要一个截距,python,regression,Python,Regression,我开始学习线性回归,一开始就被难倒了。我认为我的问题不在概念上,而在实施上。我不明白为什么,根据,在尝试拟合回归线时,我需要包含一个截距为1的额外列 #Artificial data: nsample = 100 x = np.linspace(0, 10, 100) X = np.column_stack((x, x**2)) beta = np.array([1, 0.1, 10]) e = np.random.normal(size=nsample) #Our model needs a
#Artificial data:
nsample = 100
x = np.linspace(0, 10, 100)
X = np.column_stack((x, x**2))
beta = np.array([1, 0.1, 10])
e = np.random.normal(size=nsample)
#Our model needs an intercept so we add a column of 1s:
X = sm.add_constant(X)
y = np.dot(X, beta) + e
#Fit and summary:
model = sm.OLS(y, X)
results = model.fit()
print(results.summary())
截距不是由数据决定的吗?为什么我需要指定它是什么?或者这更像是一个参数,其中无截距或截距=0意味着回归线被强制通过原点,否则将进行计算?为什么我要指定0或1以外的截距,比如100000?一列1就是通过设计矩阵获取截距参数的方法。非公式界面采用用户定义的设计矩阵,不会对其进行更改。所以,如果你想要一个截取,那么我们需要自己作为用户添加它。或者,你可以使用公式界面来添加一个默认的截距。考虑使用线性回归来拟合一个二次方程,该方程被写成“y=(a*x^ 0)+(b*x^ 1)+(c*x^ 2)”。由于x^0=1,您需要拟合一列1来查找参数“a”。