《Algae海藻例子》PPT课件.ppt
《《Algae海藻例子》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《Algae海藻例子》PPT课件.ppt(80页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、1Algae(海藻海藻)例子例子algaetrain-read.table(f:/讲课/SJM/Analysis.txt,header=T,dec=.,na.strings=c(XXXXXXX)首都经济贸易大学320091221253algaetrain-read.table(f:/讲课讲课/SJM/Analysis.txt,header=T,dec=.,na.strings=c(XXXXXXX)algaetest1-read.table(f:/讲课讲课/SJM/Testdata.txt,header=T,dec=.,na.strings=c(XXXXXXX)algaetest2-read.t
2、able(f:/讲课讲课/SJM/Solutions.txt,header=T,dec=.,na.strings=c(XXXXXXX)algaetest-cbind(algaetest1,algaetest2)algae-rbind(algaetrain,algaetest)summary(algae)#对对algae 数据集的基本信息特征的描述数据集的基本信息特征的描述4par(mfrow=c(1,2)hist(algae$mxPH,prob=T)hist(algae$mxPH,prob=T,xlab=,main=Histogram of Maximum PH value,ylim=0:1)
3、lines(density(algae$mxPH,na.rm=T)#在直方图中添加密度线在直方图中添加密度线rug(jitter(algae$mxPH)#画出变量画出变量mxPH 在在X 轴附近的真实值轴附近的真实值56library(lattice)bwplot(size a1,data=algae,ylab=River Size,xlab=Alga A1)#7缺失值的处理(以对训练集algaetrain 的缺失值处理为例)8algaetrain!complete.cases(algaetrain),#显示algaetrain 数据集中含有缺失值项nrow(algaetrain!comple
4、te.cases(algaetrain),)#缺失值项的总行数9方法1:直接将含有缺失值项的水样删除algaetrain1-na.omit(algaetrain)10方法2:运用常用的均值和中位数的方法进行插补11algaetrain2mean-algaetrainfor(r in which(!complete.cases(algaetrain)algaetrain2meanr,which(is.na(algaetrainr,)-apply(data.frame(algaetrain,which(is.na(algaetrainr,),2,mean,na.rm=T)#对含有缺失值的记录用均值
5、进行插补对含有缺失值的记录用均值进行插补algaetrain2median-algaetrainfor(r in which(!complete.cases(algaetrain)algaetrain2medianr,which(is.na(algaetrainr,)-apply(data.frame(algaetrain,which(is.na(algaetrainr,),2,median,na.rm=T)#对含有缺失值的记录用中位数进行插补对含有缺失值的记录用中位数进行插补12通过对含缺失值项的变量同其他变量的相关性的大小建立回归方程来插补13cor(algaetrain,4:18,use
6、=complete.obs)#变量间的相关性,计算时不考虑缺失值变量间的相关性,计算时不考虑缺失值symnum(cor(algaetrain,4:18,use=complete.obs)#简单明显示出变量间的相关简单明显示出变量间的相关1415从变量之间的相关程度图中,我们可以发现绝大部分变量之间相关程度不高,从变量之间的相关程度图中,我们可以发现绝大部分变量之间相关程度不高,但变量但变量NH4 和和NO3、变量、变量PO4、oPO4 之间相关程度很大,尤其是变量之间相关程度很大,尤其是变量PO4、oPO4之间相关程度达到之间相关程度达到91.2%。由于数据集。由于数据集algaetrain
7、中第中第62 条和第条和第199 条含有的条含有的缺失项过多,我们可以考虑将其从数据集中直接删除,而变量缺失项过多,我们可以考虑将其从数据集中直接删除,而变量NH4 和和NO3 的缺失的缺失值集中在数据集值集中在数据集algaetrain 中第中第62 条和第条和第199 条中,故不需要再考虑对其插补。条中,故不需要再考虑对其插补。下面来考虑对变量下面来考虑对变量PO4、oPO4 建立回归方程来对缺失值进行插补。建立回归方程来对缺失值进行插补。algaetrain3l-lm(oPO4 PO4,data=algaetrain)#对变量对变量PO4、oPO4 建立回归方程建立回归方程summary
8、(algaetrain3l)#建立函数建立函数fillPO4,对缺失项进行回归插补,对缺失项进行回归插补16fillPO4-function(oP)if(is.na(oP)return(NA)else return(oP+15.6142)/0.6466)algaetrain3-algaetrainalgaetrain3is.na(algaetrain$PO4),PO4-sapply(algaetrainis.na(algaetrain$PO4),oPO4,fillPO4)#对对algaetrain 中的中的PO4 缺缺失值项进行回归插补失值项进行回归插补17方法4:从数据集中选取若干条水样成分
9、和它相似的水样(即和它在空间欧式距离最短的n 条水样),求其中位数进行插补18#由于数据集由于数据集algaetrain 中第中第62 条和第条和第199 条中含有过多的缺失值项,我们可条中含有过多的缺失值项,我们可#以考虑直接将这两条水样删除以考虑直接将这两条水样删除algaetraind-algaetrain-c(62,199),algaetrain4-algaetraindlibrary(cluster)#调用调用R 语言中的语言中的cluster 包包dist.mtx-as.matrix(daisy(algaetrain4,stand=T)#计算这计算这198 个水样的空间距离,个水样
10、的空间距离,#并表示为矩阵的形式,将结果赋值给变量并表示为矩阵的形式,将结果赋值给变量dist.mtxcentral.value-function(x)if(is.numeric(x)median(x,na.rm=T)else if(is.factor(x)levels(x)which.max(table(x)else f-as.factor(x)levels(f)which.max(table(f)#建立函数建立函数central.value,如果,如果x 是数值型的,则取是数值型的,则取x 的中位数赋值给的中位数赋值给central.value,其他类型的转化为因子型,再输出因子型的最大的
11、那一项的名称。,其他类型的转化为因子型,再输出因子型的最大的那一项的名称。for(r in which(!complete.cases(algaetraind)algaetrain4r,which(is.na(algaetraindr,)-apply(data.frame(algaetraindc(as.integer(names(sort(dist.mtxr,)2:11),which(is.na(algaetraindr,),2,central.value)#将将algaetrain4 中所含的缺失值项选取在空间上离它最近的中所含的缺失值项选取在空间上离它最近的2 到到11 个点,取个点,取
12、#其距离为其距离为central.value 那个值来对其列变量中缺失项赋值。那个值来对其列变量中缺失项赋值。#注意,这里用了注意,这里用了data.frame,不用等于直接对数据集,不用等于直接对数据集algae4 赋值,否则会赋值,否则会#出现变量个数与赋值的个数不一致的报错。出现变量个数与赋值的个数不一致的报错。19模型的建立模型的建立#研究藻类a1 同哪些因素有关#将以方法(4)处理后的训练数据集algaetrain4 作为最终待处理的数据集。并将其赋与新的数据集,命名为:clean.algae。clean.algae-algaetrain420传统统计模型的建立传统统计模型的建立21
13、#因为变量因为变量season、size、speed 为定性变量,在建立回归时,应转化为为定性变量,在建立回归时,应转化为factor型。型。lm.a1=lm(a1factor(season)+factor(size)+factor(speed)+mxPH+mnO2+Cl+NO3+NH4+oPO4+PO4+Chla,data=clean.algae,1:12)summary(lm.a1)22#lm.a1 的方差分析的方差分析anova(lm.a1)23#从上述方差分析的输出结果中,我们可以看出,因子从上述方差分析的输出结果中,我们可以看出,因子season 对模型拟合优度对模型拟合优度的贡献最
14、小,可以考虑将这一项从方程中剔除。的贡献最小,可以考虑将这一项从方程中剔除。lm.a2-update(lm.a1,.-factor(season)summary(lm.a2)24#从从lm.a2 和和lm.a1 的的Adjusted R-squared 比较,比较,0.3281 比比0.3217 略微有所提高,但略微有所提高,但拟合优度并未得到多大的提高,进一步看看拟合优度并未得到多大的提高,进一步看看lm.a2 和和lm.a1 的方差比较,的方差比较,anova(lm.a1,lm.a2)#从输出结果,我们可以看出,残差平方和,从输出结果,我们可以看出,残差平方和,lm.a2 比比lm.a1
15、稍有上升(稍有上升(-396),),但但F 检验没有通过,说明模型检验没有通过,说明模型lm.a2 和和lm.a1 差异并不明显。差异并不明显。25下面用逐步回归法来进行处理(选择方法:全部、前向、后向)26lm1both-step(lm.a1,direction=both)lm1forward-step(lm.a1,direction=forward)lm1back-step(lm.a1,direction=backward)final.lm-step(lm.a1)summary(final.lm)27#下面检验回归方程的残差项是否服从独立同分布下面检验回归方程的残差项是否服从独立同分布#残
16、差项正态性检验及作图(残差图、检验正态性的残差项正态性检验及作图(残差图、检验正态性的QQ 图等等)图等等)shapiro.test(final.lm$residuals)28par(mfrow=c(1,2)hist(final.lm$residuals)qqnorm(final.lm$residuals)29从回归方程的输出结果,我们可以看出,从回归方程的输出结果,我们可以看出,Adjusted R-squared 仅仅只有仅仅只有0.3333,而且方程中有几项的回归系数并不显著。并而且方程中有几项的回归系数并不显著。并且残差项并非正态,说明回归效果不好。进且残差项并非正态,说明回归效果不好
17、。进一步我们可以看看它的一步我们可以看看它的AIC 值。值。AIC 值很大,值很大,这说明在这里建立回归方程并不适合。这说明在这里建立回归方程并不适合。predictlm-predict(final.lm)cat(逐步回归训练集上的逐步回归训练集上的NMSE 为为:,mean(clean.algae$a1-as.numeric(predictlm)2)/mean(mean(clean.algae$a1)-clean.algae$a1)2),n)#输出输出逐步回归训练集上的逐步回归训练集上的NMSE 为为:0.646359430#将测试集上的缺失值用上面的方法四来填补,形成最终的测试集将测试集上
18、的缺失值用上面的方法四来填补,形成最终的测试集algaetestzz=algaetestfor(r in which(!complete.cases(algaetest)algaetestzzr,which(is.na(algaetestr,)-apply(data.frame(algaetestc(as.integer(names(sort(dist.mtxr,)2:11),which(is.na(algaetestr,),2,central.value)nrow(algaetestzz!complete.cases(algaetestzz),)predictlmcs-predict(fin
19、al.lm,algaetestzz,1:12)cat(逐步回归测试集上的逐步回归测试集上的NMSE 为为:,mean(algaetestzz$a1-as.numeric(predictlmcs)2)/mean(mean(algaetestzz$a1)-algaetestzz$a1)2),n)逐步回归测试集上的逐步回归测试集上的NMSE 为为:0.7041271AIC(final.lm)1 1703.99431用最佳子集(调用用最佳子集(调用leaps 包)进行处理包)进行处理32library(leaps)lm2leaps-regsubsets(a1factor(season)+factor(
20、size)+factor(speed)+mxPH+mnO2+Cl+NO3+NH4+oPO4+PO4+Chla,data=clean.algae,nbest=1,nvmax=15,really.big=TRUE)#方程中不含常数项共有方程中不含常数项共有15 个自变量,所以个自变量,所以nvmax=15,而,而nbest 为相同个数的自变量为相同个数的自变量的最佳组合排列的方程个数。系统默认为的最佳组合排列的方程个数。系统默认为1,即取最好的,因为我要找出所有变量组合中,即取最好的,因为我要找出所有变量组合中最好的模型,所以为了计算简便,就取系统默认的,因为运算量较大,最好的模型,所以为了计算简
21、便,就取系统默认的,因为运算量较大,really.big=TRUE,系统默认,系统默认really.big=FALSE)。)。lm2leaps.sum-summary(lm2leaps)names(lm2leaps.sum)1 which rsq rss adjr2 cp bic outmat obj#建立仅有截距项的模型,即规模为建立仅有截距项的模型,即规模为0 的模型的模型lm2leapsdum-lm(a11,data=clean.algae)lm2leapsdum.sum-summary(lm2leapsdum)names(lm2leapsdum.sum)1 call terms res
22、iduals coefficients aliased sigma df 8 adj.r.squared r.squared cov.unscaled lm2leapsdum.sum$adj1 0#这说明方程中仅含有常数项的方程比按最佳子集回归得到的这说明方程中仅含有常数项的方程比按最佳子集回归得到的15 个方程都差,可舍弃个方程都差,可舍弃#下面我们来看看按最佳子集回归得到的下面我们来看看按最佳子集回归得到的15 个方程的拟合效果的比较个方程的拟合效果的比较33lm2leaps.sum$rss#15 个方程的残差平方和比较个方程的残差平方和比较par(mfrow=c(2,2)plot(1:1
23、5,lm2leaps.sum$rss,type=b,xlab=#subsets,ylab=RSS)lm2leaps.sum$adjr2#15 个方程的调整个方程的调整R 方比较方比较plot(1:15,lm2leaps.sum$adjr2,type=b,xlab=#subsets,ylab=ADJRSquare)lm2leaps.sum$cp#15 个方程的个方程的cp 比较比较plot(1:15,lm2leaps.sum$cp,type=b,xlab=#subsets,ylab=CP)lm2leaps.sum$bicplot(1:15,lm2leaps.sum$bic,type=b,xlab
24、=#subsets,ylab=BIC)3435#综合上面的信息,我们可以发现子集容量在综合上面的信息,我们可以发现子集容量在3 以后,调整以后,调整R 方上升的幅度很小;方上升的幅度很小;同时,同时,cp 值在值在3 以后下降的幅度也很小,而以后下降的幅度也很小,而BIC 信息准则在信息准则在3 处正好达到最优,处正好达到最优,也正证实了我的猜想,即当子集容量为也正证实了我的猜想,即当子集容量为3 时,方程拟合精度最高。即方程中含四时,方程拟合精度最高。即方程中含四自变量(加常数项)的最好。自变量(加常数项)的最好。lm2leaps.sum$which3,36final.lm2leaps-lm
25、(a1factor(size)+NO3+PO4,data=clean.algae)summary(final.lm2leaps)37shapiro.test(final.lm2leaps$residuals)AIC(final.lm2leaps)建立回归方程并不合适建立回归方程并不合适38其他方法其他方法39从用逐步回归建立的模型的方差膨胀因子或容忍度从用逐步回归建立的模型的方差膨胀因子或容忍度分析,我们有理由怀疑自变量之间存在着多重共线分析,我们有理由怀疑自变量之间存在着多重共线性的影响,实际上,在前面从变量之间的相关程度性的影响,实际上,在前面从变量之间的相关程度图中,我们可以发现绝大部分
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Algae海藻例子 Algae 海藻 例子 PPT 课件
限制150内