0

我有:

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) 给出了一些完全随机的值,我不知道它来自哪里。怎么做?

4

1 回答 1

3

您在“k”中获得的输出数量取决于输入 X 的大小,因此您不会同时获得两者mk只需将 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)那么应该是你的mb(2)你的k

regress还可以提供额外的输出,例如置信区间、残差、r 平方等统计数据等。输入保持不变,您只需更改输出:

[b,bint,r,rint,stats] = regress(y,X);
于 2013-10-15T14:48:22.633 回答