我有:
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)给出一些完全随机的值,我不知道它来自哪里。怎么做?
答案 0 :(得分:3)
您在“k”中获得的输出数量取决于输入X的大小,因此您只需直接输入x和y即可获得m
和k
。来自文档:
b =回归(y,X)返回系数估计的p-by-1向量b,用于对X中的预测变量的y中的响应进行多线性回归.X是p个预测变量的n-by-p矩阵在每个观察结果中。 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);