我编写了以下matlab代码来测试最小二乘回归:
x = [1 2 3 4 5 6];
y = [1 4 9 16 25 36];
hold on
scatter(x, y );
hold on
%Linear_regrassion
n = length(x);
a = (n*sum(x.*y) - sum(x)*sum(y)) / n*sum(x.^2) - (sum(x))^2
b = mean(y) - a * mean(x)
%end
x = 1:8;
plot(x, a*x + b);
当scatter
发表评论时,plot(x, a*x + b);
功能正常。它看起来像这样:
但是当我添加plot(x, a*x + b);
来绘制估计的行时,输出如下所示:
我的猜测是我没有使用hold on
。我该怎么做才能解决这个问题?
答案 0 :(得分:5)
您对a
的计算是错误的:您需要在a
计算的分母中使用括号。但是,hold on
效果很好。
x = [1 2 3 4 5 6];
y = [1 4 9 16 25 36];
scatter(x, y,'*');
hold on
%Linear_regrassion
n = length(x);
a = (n*sum(x.*y) - sum(x)*sum(y)) / (n*sum(x.^2) - (sum(x))^2)
b = mean(y) - a * mean(x)
%end
x = 1:8;
plot(x, a*x + b);