我正在Matlab中编写线性回归赋值(原点固定y轴截距)。我需要在每个迭代步骤中更新我的斜率值。 N是我的数据点数。我是在for循环中这样做的:
for i = 1:numIter
sum = 0;
for i = 1:n
sum = sum + (slope*x(i) - y(i))*x
end
slope = slope - factor*sum;
end
我的程序返回错误的结果,错误率为百分之几,在运行测试用例之后,我得出结论,单个迭代步骤做错了事。我是否缺少明显的东西?我是Matlab数值计算的新手。
谢谢您的任何投入。
编辑。 这是什么
data = load('data.txt');
x = [data(:,1)];
y = [data(:,2)];
slope = 0;
iter = 1000; %number of iterations
factor = 0.1/n; %rate at which we approach the optimum
slope = fit(x, y, slope, factor, iter);
该函数在另一个文件中,它看起来像这样:
function slope = fit(x, y, slope, factor, iter)
n = length (x);
for i = 1:iter
sum = 0;
for j = 1:n
sum = sum + (slope*x(j) - y(j))*x(j)
% we were given such a formula
end
slope = slope - factor*sum;
end
end
我想知道我是否在交际中溜到某个地方。
编辑2。用于更新斜率(S)的方程式。
S_i + 1 = S_i-比率/ n和_j = 1 ^ n [(S_i * x_j-y_j)* S_i]