y随时间的观测值如下所示:
1.85 1.37 1.02 0.75 0.56 0.41 0.31 0.23 0.17
预测第10期的数据。
1.画图
t=1:9;
y=[1.85 1.37 1.02 0.75 0.56 0.41 0.31 0.23 0.17];
plot(t,y)
2.选择匹配的曲线,化非线性为线性:
3.正态性检验(ks检验法)
检验原值
x=[1.85 1.37 1.02 0.75 0.56 0.41 0.31 0.23 0.17];
x=x';
alpha=0.05;
[mu,sigma]=normfit(x);
p1=normcdf(x,mu,sigma);
[h0,s1,ks,cv]=kstest(x,[x,p1],alpha)
h0 =
logical
0
s1 =
0.8862
ks =
0.1798
cv =
0.4300
检验对数值
x=[1.85 1.37 1.02 0.75 0.56 0.41 0.31 0.23 0.17];
x=x';x1=log(x);
alpha=0.05;
[mu,sigma]=normfit(x1);
p1=normcdf(x1,mu,sigma);
[h0,s1,ks,cv]=kstest(x1,[x1,p1],alpha)
h0 =
logical
0
s1 =
0.9992
ks =
0.1021
cv =
0.4300
确保四种曲线都可以用回归模型来做。
4.建立回归模型
clear;
clc;
t=1:9;
y=[1.85 1.37 1.02 0.75 0.56 0.41 0.31 0.23 0.17];
x=1./t;
lx=log(t);
ly=log(y);
stats1=reglm(y,t,'linear');
stats2=reglm(y,x,'linear');
stats3=reglm(ly,lx,'linear');
stats4=reglm(ly,t,'linear');
y1=stats1.beta(1)+stats1.beta(2).*t;
y2=stats2.beta(1)+stats2.beta(2).*x;
y3=exp(stats3.beta(1)+stats3.beta(2).*lx);
y4=exp(stats4.beta(1)+stats4.beta(2).*t);
q1=sum((y-y1).^2);
q2=sum((y-y2).^2);
q3=sum((y-y3).^2);
q4=sum((y-y4).^2);
fprintf('%8s%18s%15s%15s%12s\n','项目','y1','y2','y3','y4');
fmt='%9s%20.4f%15.4f%15.4f%13.4f\n';
fprintf(fmt,'SSE',q1,q2,q3,q4);
------------------------------------方差分析表------------------------------------
方差来源 自由度 平方和 均方 F值 p值
回归 1.0000 2.3602 2.3602 63.9062 0.0001
残差 7.0000 0.2585 0.0369
总计 8.0000 2.6187
均方根误差(Root MSE) 0.1922 判定系数(R-Square) 0.9013
因变量均值(Dependent Mean) 0.7411 调整的判定系数(Adj R-Sq) 0.8872
-----------------------------------参数估计-----------------------------------
变量 估计值 标准误 t值 p值
常数项 1.7328 0.1396 12.4113 0.0000
X1 -0.1983 0.0248 -7.9941 0.0001
------------------------------------方差分析表------------------------------------
方差来源 自由度 平方和 均方 F值 p值
回归 1.0000 2.3566 2.3566 62.9517 0.0001
残差 7.0000 0.2620 0.0374
总计 8.0000 2.6187
均方根误差(Root MSE) 0.1935 判定系数(R-Square) 0.8999
因变量均值(Dependent Mean) 0.7411 调整的判定系数(Adj R-Sq) 0.8856
-----------------------------------参数估计-----------------------------------
变量 估计值 标准误 t值 p值
常数项 0.1428 0.0992 1.4396 0.1932
X1 1.9033 0.2399 7.9342 0.0001
------------------------------------方差分析表------------------------------------
方差来源 自由度 平方和 均方 F值 p值
回归 1.0000 4.8711 4.8711 73.7837 0.0001
残差 7.0000 0.4621 0.0660
总计 8.0000 5.3332
均方根误差(Root MSE) 0.2569 判定系数(R-Square) 0.9133
因变量均值(Dependent Mean) -0.5802 调整的判定系数(Adj R-Sq) 0.9010
-----------------------------------参数估计-----------------------------------
变量 估计值 标准误 t值 p值
常数项 0.9629 0.1990 4.8383 0.0019
X1 -1.0849 0.1263 -8.5897 0.0001
------------------------------------方差分析表------------------------------------
方差来源 自由度 平方和 均方 F值 p值
回归 1.0000 5.3330 5.3330 131978.7098 0.0000
残差 7.0000 0.0003 0.0000
总计 8.0000 5.3332
均方根误差(Root MSE) 0.0064 判定系数(R-Square) 0.9999
因变量均值(Dependent Mean) -0.5802 调整的判定系数(Adj R-Sq) 0.9999
-----------------------------------参数估计-----------------------------------
变量 估计值 标准误 t值 p值
常数项 0.9104 0.0046 197.1452 0.0000
X1 -0.2981 0.0008 -363.2887 0.0000
项目 y1 y2 y3 y4
SSE 0.2585 0.2620 0.7078 0.0001
根据残差平方和越小越好的原则,选第四个模型最好。
4.画回归效果图
subplot(2,2,1);
plot(t,y,'.k','Markersize',15)
hold on
plot(t,y1,'linewidth',1)
legend('原始值','回归直线');
title('y=a+bt');
hold off
subplot(2,2,2);
plot(t,y,'.k','Markersize',15)
hold on
plot(t,y2,'linewidth',1)
legend('原始值','回归直线');
title('y=a+b/t');
hold off
subplot(2,2,3);
plot(t,y,'.k','Markersize',15)
hold on
plot(t,y3,'linewidth',1)
legend('原始值','回归直线');
title('y=at^b');
hold off
subplot(2,2,4);
plot(t,y,'.k','Markersize',15)
hold on
plot(t,y4,'linewidth',1)
legend('原始值','回归直线');
title('y=ae^b^t');
hold off
由图形也可以看出第四个模型拟合的最好。
5.回答问题
当t=10时,y=?
>> exp(stats4.beta(1)+stats4.beta(2).*10)
ans =
0.1261
预测值为0.1261。