我已经开始查看pls
包,我不确定如何提取单独的系数group/factor
。我可以为每个组运行单独的模型,或者考虑X ~ group
交互项,但这不是我所追求的。
我正在使用以下语法:
model1 <- plsr(outcome ~ pred * group, data =plsDATA,2)
我尝试过使用以下内容:
model2 <- plsr(outcome ~ embed(pred:as.factor(group)), data=plsDATA,2)
但这会导致此错误:
model.frame.default 中的错误(公式 = 结果〜嵌入(pred:as.factor(group)),:可变长度不同(找到'embed(pred:as.factor(group))')此外:警告消息: 1: 在 pred:as.factor(group) 中: 数值表达式有 640 个元素: 只使用第一个 2: 在 pred:as.factor(group) : 数值表达式有 32 个元素: 只使用第一个
我不确定为什么会收到可变长度错误,因为运行以下命令会提供兼容的尺寸:
dim(group)
[1] 32 1
dim(outcome)
[1] 32 1
dim(pred)
[1] 32 20
代码如下:
library(pls) #Dummy Data
setwd("/Users/John/Documents")
Data <- read.csv("SamplePLS.csv") #Define each of the inputs pred is X, group is the factor & outcome is Y
pred <- as.matrix(Data[,3:22])
group <- as.matrix(Data[,1])
outcome <- as.matrix(Data[,2]) #now combine the matrices into a single dataframe
plsDATA <- data.frame(SampN=c(1:nrow(Data)))
plsDATA$pred <- pred
plsDATA$group <- group
plsDATA$outcome <-outcome #define the model - ask for two components
model1 <- plsr(outcome ~ pred * group, data=plsDATA,2)#Get coefficients from this object