我正在从4个pls
模型中提取系数并取平均值。我想创建一个新模型,作为4种模型之一的副本,并用平均值代替系数以预测新数据。我知道使用交叉验证进行正确的设置可以为我做到这一点,但是我现在只想破解它。我尝试预测系数对象尺寸不正确时会发生我的问题。
在此示例中,我提取了四个维度为m#_reg_coef
的数组([1:151, 1, 1:21]
)。这些pls模型有151个x变量和21个分量或潜在变量。用下面的代码求平均后,我得到一个[1:151, 1:21]
的单个数据帧。...如何在保持正确尺寸的情况下取四个数组的平均值?...我正在寻找四个数组的平均值到尺寸为[1:151, 1, 1:21]
library(abind)
arr = abind(m1_reg_cof,m2_reg_cof, m3_reg_cof, m4_reg_cof, along = 2)
abds <- apply( arr, c(1,3), mean)
dim(abds)
[1] 151 21
new_pls_model<-old_pls_model
new_pls_model$coefficients<-abds
test_predicted_1 <- predict(New_plsr_model, ncomp = 21, newdata = test_data_1)
错误
Error in object$coefficients[, , ncomp, drop = FALSE] : incorrect number of dimensions
答案 0 :(得分:1)
感谢克里斯·霍尔布鲁克(Chris Holbrook)的评论,这是对我有用的答案。
"WFTXN0001: A transaction is already in progress" failure for JBeret batch after transaction timeout in JBoss EAP
添加属性...尺寸名称也必须与原始尺寸相同
library(abind)
#bind the four arrays into one array
arr = abind(m1_reg_cof,m2_reg_cof, m3_reg_cof, m4_reg_cof, along = 2)
dim(arr)
[1] 151 4 21
#average the four
abds <- apply( arr, c(1,3), mean)
dim(abds)
[1] 151 21
#rehsape the output to match original
abds2 <- array(abds, dim = c(dim(abds)[1], 1, dim(abds)[2]))
dim(abds2)
[1] 151 1 21
成功!