我喜欢使用 PLS 模型对多个 Y 变量的训练和预测值进行建模,但是当我尝试这种方法时遇到了一些问题,在下面的代码中:
#First simulate some data
set.seed(123)
bands=20
data <- data.frame(matrix(runif(60*bands),ncol=bands))
colnames(data) <- paste0(1:bands)
data$nitrogen <- rpois(60,10)
data$carbon <- rpois(60,10)
#
#Tranning data set
cal_BD<-data[1:50,]
#Validation data set
val_BD<-data[51:60,]
# define explanatory variables (x)
spectra <- cal_BD[,1:20]
#Build PLS model using training data only
mod_pls <- plsr(carbon + nitrogen ~ spectra,
ncomp = 20, data =cal_BD, validation = "LOO", jackknife = TRUE)
summary(mod_pls)
#
#Prediction in validation data set
est_pls<-predict(mod_pls, comps = 20, newdata = val_BD)
est_pls
#
1)当我在模型中尝试碳+氮时不起作用;和
2)我想使用以下代码创建一个新的数据框,其中包含碳和氮的估计值:
val_BD2<-val_BD[,-(21:22)] # remove carbon + nitrogen beccause my goal is predict this values
est_pls<-predict(mod_pls, comps = 20, newdata = val_BD)#Prediction in validation data set (only X's)
final_est_DF<-cbind(val_BD2est_pls[,1],est_pls[,2])
我的理想输出是估计的碳和氮而不是观察到的值:
1 2 3 ... carbon nitrogen
51 0.04583117 0.93529980 0.6299731 ... 15.3 8.6
52 0.44220007 0.30122890 0.1838285 ... 10.0 7.1
53 0.79892485 0.06072057 0.8636441 ... 9.0 7.3
54 0.12189926 0.94772694 0.7465680 ... 11.1 6.5
55 0.56094798 0.72059627 0.6682846 ... 10.3 8.4
56 0.20653139 0.14229430 0.6180179 ... 13.9 9.1
...
这个有可能?