r语言求置信区间的函数(r语言求置信区间不用t.test函数)

数据信息源的预处理

cc<-sunspots[1:120];ccdf<-data.frame(x=1:120,vv=cc)

fit<-lm(vv~x,ccdf)

r语言求置信区间的函数(r语言求置信区间不用t.test函数)

plot(cc,col=rainbow(12),type='o',tck=0.01);abline(fit,col='blue',lwd=3,lty=3)

残差数据特征

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

线性回归结果四大图如下:

  1. 拟合~残差图,查看是否满足线性假设;若x与y线性相关,则残差和拟合应该没有任何系统关联,如果图中呈现出曲线,可能要考虑给方程加二次项。
  2. 正态QQ图,Q-Q图是在正态分布对应的值下,标准化残差的概率图;若满足正态假设,则图上的点应落在图中的45度线上。若不是,则违反了正态分布的假设。
  3. 位置~尺度图,查看是否满足同方差性;若满足方差不变则图中的点应均匀分布在红色水平线两侧。
  4. 残差~杠杆图,鉴别离群点、高杠杆值、强影响点;强影响点是距离cook's distance 距离较远的点,删除它可以使得拟合效果更好;不过,删变量要尽量谨慎,不能一味追求回归效果好而删原始值
r语言求置信区间的函数(r语言求置信区间不用t.test函数)

par(mfrow=c(2,2),las=1,col.axis='blue');plot(fit)

模型的显著性检验:

模型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水平下,本例的回归系数有统计学意义,太阳黑子水平和时间存在直线回归关系。

r语言求置信区间的函数(r语言求置信区间不用t.test函数)

anova(fit)

根据模型预测:

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)

r语言求置信区间的函数(r语言求置信区间不用t.test函数)

points(121:140,ccpred,col='red',pch=15,cex=2)

r语言求置信区间的函数(r语言求置信区间不用t.test函数)

应用forecast包的函数进行预测绘图

对回归残差的FFT处理

resifft<-fft(resi);str(resifft)

r语言求置信区间的函数(r语言求置信区间不用t.test函数)

R软件里的复数处理专用函数:Re() Im() Mod(模) Arg(弧度) Conj共轭

resifftm<-Mod(resifft);resifftm;

r语言求置信区间的函数(r语言求置信区间不用t.test函数)

plot(resifftm,col=heat.colors(120),type='o') plot(resifftm,col=heat.colors(120),type='o')

用mvfft把傅里叶变换的复数列resifft转回原数据,返回true。

resifft_re<- Re(mvfft(as.matrix(Conj(resifft))))/120;all.equal(as.vector(resi),as.vector(resifft_re))

对数据信息的小波变换分析

r语言求置信区间的函数(r语言求置信区间不用t.test函数)

r语言求置信区间的函数(r语言求置信区间不用t.test函数)

R语言实现最通俗小波变换分析实例


ARIMA

ARIMA即自回归积分移动平均模型,由Box、Jenkins于1970s提出的时间序列预测方法。

r语言求置信区间的函数(r语言求置信区间不用t.test函数)

tsdisplay(ccts)

需要做差分处理,目的是去掉趋势

r语言求置信区间的函数(r语言求置信区间不用t.test函数)

cctsd1<-diff(ccts);tsdisplay(cctsd1)

fit3<-arima(ccts,order=c(0,3,1));fit3

r语言求置信区间的函数(r语言求置信区间不用t.test函数)

checkresiduals(fit3)

本次检验阶数24,为数据周期的2倍;p值0.0002465小于0.05,残差的自相关检验通过。

下图为预测12个月即1年的太阳黑子值,图中绿线是拟合值,红线是真实值,蓝线是预测值;两个区域分别代表默认80%、95%置信区间的数值边界。

r语言求置信区间的函数(r语言求置信区间不用t.test函数)

fc<-forecast(fit3,h=12)