我有:
x = [1970:1:2000]
y = [data]
size(x) = [30,1]
size(y) = [30,1]
我想:
% Yl = kx + m, where
[k,m] = polyfit(x,y,1)
出于某种原因,我必须为此使用“回归”。
使用 k = regress(x,y) 给出了一些完全随机的值,我不知道它来自哪里。怎么做?
我有:
x = [1970:1:2000]
y = [data]
size(x) = [30,1]
size(y) = [30,1]
我想:
% Yl = kx + m, where
[k,m] = polyfit(x,y,1)
出于某种原因,我必须为此使用“回归”。
使用 k = regress(x,y) 给出了一些完全随机的值,我不知道它来自哪里。怎么做?
您在“k”中获得的输出数量取决于输入 X 的大小,因此您不会同时获得两者m
,k
只需将 x 和 y 直接放入即可。从文档:
b = regress(y,X) 返回一个 p×1 向量 b 的系数估计值,用于对 y 中的响应对 X 中的预测变量进行多线性回归。X 是一个 n×p 矩阵,由 p 个预测变量组成n 观察。y 是观察到的响应的 n×1 向量。
没有准确说明,但是使用carsmall
内置数据集的帮助文档中的示例向您展示了如何设置它。对于您的情况,您需要:
X = [ones(size(x)) x]; % make sure this is 30 x 2
b = regress(y,X); % y should be 30 x 1, b should be 2 x 1
b(1)
那么应该是你的m
,b(2)
你的k
。
regress
还可以提供额外的输出,例如置信区间、残差、r 平方等统计数据等。输入保持不变,您只需更改输出:
[b,bint,r,rint,stats] = regress(y,X);