ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

R-多元线性回归的建模和验证

2022-06-03 00:01:44  阅读:167  来源: 互联网

标签:15 验证 16 建模 train fraction 线性 model data


问题描述:

分析地面采集的光谱和LiDAR结构信息,估计由于病虫害引起的失叶率

  1. 由光谱信息建立模型
  2. 由结构信息建立模型
  3. 由光谱信息和结构信息相结合建立模型
  4. 分别画预测和验证集散点图,计算R2和RMSE

代码实现:

train = read.csv("F:/Simplified_Canopy_defoliation_analysis_training-simp.csv")
test = read.csv("F:/Simplified_Canopy_defoliation_analysis_vald-simp.csv")
mydata_train = train[-15,]  #去除有NA值的一行

#library(Hmisc)
r = rcorr(as.matrix(mydata_train[,2:14]), type = 'pearson')
r
#library(corrplot)
corrplot(r$r, tl.pos = 'upper', tl.cex = 0.8, tl.col = 'black', bg = 'gray')
corrplot(r$P, add=TRUE, type="lower", method="number", diag = FALSE, tl.pos = "n", cl.pos="n", bg = 'gray')
#pearson相关系数表明自变量NONPHO_fraction_16和dNONPHO_fraction之间存在强负相关性

#光谱信息
model_1 = lm(Average.Defol..Status.x ~ NONPHO_fraction_15 + GV_fraction_15 + 
               Shade_fraction_15 + Fra_under_15 + 
               NONPHO_fraction_16 + GV_fraction_16 + 
               dFra_UDS, data = mydata_train)
summary(model_1)

#去除不显著的预测变量
model_11 = lm(Average.Defol..Status.x ~ Shade_fraction_15 + GV_fraction_16 + dFra_UDS, data = mydata_train)
summary(model_11)

#结构信息
model_2 = lm(Average.Defol..Status.x ~ b70_16 + dske + dkur + dint_p25, data = mydata_train)
summary(model_2)

model_21 = lm(Average.Defol..Status.x ~ b70_16 + dint_p25, data = mydata_train)
summary(model_21)

#光谱和结构
model_3 = lm(Average.Defol..Status.x ~ NONPHO_fraction_15 + GV_fraction_15 + 
               Shade_fraction_15 + Fra_under_15 + 
               NONPHO_fraction_16 + GV_fraction_16 + 
               dFra_UDS + b70_16 + dske + 
               dkur + dint_p25, data = mydata_train)
summary(model_3)

#去除不显著的预测变量和截距项
model_31 = lm(Average.Defol..Status.x ~  0 + Shade_fraction_15 + GV_fraction_16 + 
                dFra_UDS + b70_16, data = mydata_train)
summary(model_31)

#进行预测和对比
tru = test[,10]
n = length(tru)
predict_data = matrix(0, n, 3)
predict_data[,1] = predict(model_1, test)
predict_data[,2] = predict(model_2, test)
predict_data[,3] = predict(model_31, test)
tit = c('光谱信息','结构信息','光谱信息和结构信息')
for (i in 1:3) {
  plot(predict_data[,i], col = 'blue', type = 'b', xlab = 'Row', ylab = 'Average.Defol..Status', ylim = c(-20,100), main = tit[i])
  lines(tru, col = 'red', type = 'b')
  legend('bottomleft', legend = c('predict','true'), pch = c(1,1), col = c('blue','red'))
}

#计算R_squre
pre = predict_data
sse = apply((pre-tru)^2, 2, sum)
sst = sum((tru- mean(tru))^2)
R_squre = 1- sse/sst
R_squre

#计算RMSE
RMSE=sqrt((apply((tru-pre)^2, 2, sum))/n)
RMSE

  

标签:15,验证,16,建模,train,fraction,线性,model,data
来源: https://www.cnblogs.com/khrushchefox/p/16339361.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有