数据信息源的预处理
cc<-sunspots[1:120];ccdf<-data.frame(x=1:120,vv=cc)
fit<-lm(vv~x,ccdf)
残差数据特征:
resi<-resid(fit);summary(resi)得到:
Min. 1st Qu. Median Mean 3rd Qu. Max.
-40.003 -17.650 -6.252 0.000 16.854 94.223
回归模型的拟合优度检验:
本模型的决定系数为0.3368,拟合效果差,主要原因是原始数据存在周期波动;该模型的残差标准差为23.6,表示用时间预测太阳黑子时平均的预测误差为23.6。
线性回归模型的诊断、检验及预测
线性回归核心参数通过coef(fit)得到,也可以通过summary(fit)实现。
(Intercept) x
69.7391036 -0.4874783
线性回归结果四大图如下:
- 拟合~残差图,查看是否满足线性假设;若x与y线性相关,则残差和拟合应该没有任何系统关联,如果图中呈现出曲线,可能要考虑给方程加二次项。
- 正态QQ图,Q-Q图是在正态分布对应的值下,标准化残差的概率图;若满足正态假设,则图上的点应落在图中的45度线上。若不是,则违反了正态分布的假设。
- 位置~尺度图,查看是否满足同方差性;若满足方差不变则图中的点应均匀分布在红色水平线两侧。
- 残差~杠杆图,鉴别离群点、高杠杆值、强影响点;强影响点是距离cook's distance 距离较远的点,删除它可以使得拟合效果更好;不过,删变量要尽量谨慎,不能一味追求回归效果好而删原始值
模型的显著性检验:
模型F值为61.44,P为2.245e-12,拒绝原假设,认为两个变量之间存在线性关系。
本模型的回归系数的t值显著性水平P为2.25e-12,拒绝原假设,表示时间是影响太阳黑子的一个显著因素。
此外,还可以对回归系数进行区间估计,在1-a的置信水平下,其置信区间如下:
confint(fit,level=0.95)
2.5 % 97.5 %
(Intercept) 61.1531567 78.3250505
x -0.6106363 -0.3643203
对模型进行方差分析的检验:
由于P<0.05,于是在α=0.05水平下,本例的回归系数有统计学意义,太阳黑子水平和时间存在直线回归关系。
根据模型预测:
ccpred<-predict(fit,data.frame(x=121:140));ccpred
plot(cc,xlim=c(1,140),col=terrain.colors(12),type='o',tck=0.01);
abline(fit,col='blue',lwd=3,lty=3)
对回归残差的FFT处理
resifft<-fft(resi);str(resifft)
resifftm<-Mod(resifft);resifftm;
用mvfft把傅里叶变换的复数列resifft转回原数据,返回true。
resifft_re<- Re(mvfft(as.matrix(Conj(resifft))))/120;all.equal(as.vector(resi),as.vector(resifft_re))
对数据信息的小波变换分析
ARIMA
ARIMA即自回归积分移动平均模型,由Box、Jenkins于1970s提出的时间序列预测方法。
需要做差分处理,目的是去掉趋势;
fit3<-arima(ccts,order=c(0,3,1));fit3
本次检验阶数24,为数据周期的2倍;p值0.0002465小于0.05,残差的自相关检验通过。
下图为预测12个月即1年的太阳黑子值,图中绿线是拟合值,红线是真实值,蓝线是预测值;两个区域分别代表默认80%、95%置信区间的数值边界。