Matlab和计算

时间:2018-09-29 11:54:21

标签: matlab linear-regression

我正在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]

0 个答案:

没有答案