Matlab:回归分析(1)

时间:2022-01-11 07:55:02

1.多元线性回归

Matlab:回归分析(1)

 %数据的输入
x = [ ];
y = [ ];
%转换为列向量
X = [ones(,) x'];
Y = y';
%回归分析及检验
[b, bint, r, rint, states] = regress(Y, X, 0.05);
b, bint, states
%作散点图和回归之后的图
z = b() + b()*x';
figure()
plot(x', Y, 'k+')
hold on
plot(x', z, 'r')
%作残差图
figure()
rcoplot(r, rint)

结果:

Matlab:回归分析(1)

Matlab:回归分析(1)Matlab:回归分析(1)

2.可线性化的一元非线性回归

Matlab:回归分析(1)

根据数据散点图

Matlab:回归分析(1)

配曲线,此题配的是倒指数曲线y = a*exp(b/x)其中a>0

 function f = volum(beta, x)
f = beta() * exp(beta() ./ x);
 %输入数据
x = :;
y = [6.42 8.20 9.58 9.5 9.7 9.93 9.99 10.49 10.59 10.60 10.80 10.60 10.90 10.76];
%拟定回归系数的初值
beta0 = [ ]';
%求回归系数
[beta, r, J] = nlinfit(x', y', 'volum', beta0);
beta
%预测及作图
[Y, delta] = nlpredci('volum', x', beta, r, J);
%散点图
plot(x, y, 'k+')
hold on
%拟合图
plot(x, Y, 'r')

结果
Matlab:回归分析(1)

Matlab:回归分析(1)

3.多项式回归

Matlab:回归分析(1)

方法一:直接做二次多项式回归

 t=/:/:/;
s=[11.86 15.67 20.60 26.69 33.71 41.93 51.13 61.49 72.90 85.44 99.08 113.77 129.54 146.48];
%二次多项式回归
[p, S] = polyfit(t, s, );
p

结果:
p =489.2946   65.8896    9.1329

即为二次多项式系数 cba

方法二:化为多元线性回归

 t = /:/:/;
s = [11.86 15.67 20.60 26.69 33.71 41.93 51.13 61.49 72.90 85.44 99.08 113.77 129.54 146.48];
%化为多元线性回归
T = [ones(, ), t', (t.^2)'];
[b, bint, r, rint, states] = regress(s', T, 0.05);
b, states
%预测及作图
%参数p和S必须由多项式回归函数polyfit求出
[p, S] = polyfit(t, s, );
Y = polyconf(p, t, S);%预测值
plot(t, s, 'k+', t, Y, 'r')

结果:
b =

9.1329    65.8896   489.2946

states =

1.0e+007 *

0.0000    1.0378    0.0000    0.0000

Matlab:回归分析(1)

b即为二次多项式系数abc