使用R语言pls包实现偏最小二乘回归遇变量长度错误求助
问题原因与解决方法
错误的核心是你用c(y1, y2)把两个响应变量拼接成了长度为40的一维向量,而解释变量x1/x2/x3都是长度为20的向量,两者长度不匹配,导致模型框架报错。你的数据框结构本身没有问题,只需修正公式写法即可。
正确写法1:用cbind()组合响应变量
library(pls) df <- data.frame(x1 = rnorm(20), x2 = rnorm(20), x3 = rnorm(20), y1 = rnorm(20), y2 = rnorm(20)) model <- plsr(cbind(y1, y2) ~ x1+x2+x3, ncomp = 3, scale = TRUE, data = df)
正确写法2:公式中直接罗列响应变量
library(pls) df <- data.frame(x1 = rnorm(20), x2 = rnorm(20), x3 = rnorm(20), y1 = rnorm(20), y2 = rnorm(20)) model <- plsr(y1 + y2 ~ x1+x2+x3, ncomp = 3, scale = TRUE, data = df)
两种写法都能正确识别多响应变量的结构,保证响应变量矩阵(20行×2列)与解释变量行数一致,从而正常运行模型。
内容的提问来源于stack exchange,提问作者aa3ls
相关产品推荐
相关产品推荐

