如何使用MATLAB在add another
上使用多个值等于线性回归?
现在,一个包含最少数据的例子(不是我使用的数据):
x
如果我使用y = [1,2,3,4,5,6,7,8,9,10];
x = [2,2,2,4,4,6,6,6,10,10];
或polyfit
:
\
然后线性回归是错误的,因为(我想)他没有注意到几个值已经相同(x = temp(:,1); y = temp(:,2);
b1 = x\y;
yCalc1 = b1*x;
plot(x,yCalc1,'-r');
)。
这是一张包含我的真实数据的图表。蓝点:我的数据。红线:线性回归(这是错误的)。不要专注于绿色虚线:
在这里,“相同”图表(使用Excel完成): 蓝点:我的数据。红线:线性回归(右边)
你认为如果我为每个具有相同x
的y值做mean
,那么它是数学上的吗?
答案 0 :(得分:3)
如果您打算使用矩阵形式Y = XB和运算符\
求解简单线性回归,则需要在X中添加一列1来计算截距。
y0 = [1,2,3,4,5,6,7,8,9,10];
x0 = [2,2,2,4,4,6,6,6,10,10];
X1 = [ones(length(x0),1) x0'];
b = X1\y0';
y = b(1) + x0*b(2)
plot(x0,y0,'o')
hold on
plot(x0,y,'--r')
你可以找到一个很好的Matlab示例here
答案 1 :(得分:0)
所以,Dan建议我function
并且它现在正在工作。
如果你想做同样的事情,那就这样做:
使用fitlm
函数(http://fr.mathworks.com/help/stats/fitlm.html?refresh=true#bunfd6c-2)
示例数据:
y = [1,2,3,4,5,6,7,8,9,10];
x = [2,2,2,4,4,6,6,6,10,10];
tbl = table(x,y)
lm = fitlm(tbl,'linear')
你会有不同的价值观。
线性回归是一个等式y = ax + b
。在结果中,a
对应x
(贝娄等于0.15663
),b
对应(Intercept)
(贝娄等于1.4377
)
使用其他值,Matlab将显示此结果:
Linear regression model:
y ~ 1 + x
Estimated Coefficients:
Estimate SE tStat pValue
________ _________ ______ ___________
(Intercept) 1.4377 0.031151 46.151 5.8802e-290
x 0.15663 0.0054355 28.816 1.2346e-145
Number of observations: 1499, Error degrees of freedom: 1497
Root Mean Squared Error: 0.135
R-squared: 0.357, Adjusted R-Squared 0.356
F-statistic vs. constant model: 830, p-value = 1.23e-145
再次感谢丹!