PLS-DA 个人在 R 中用插入符包绘制

PLS-DA individuals plot with caret package in R

我想用 R 中的插入符号包为 PLS-DA 绘制个人图(类似于 PCA 图)并为不同的组添加颜色(见附图,这是 PCA 的示例,但我想要 PLS-DA 的同一种图表)。有人可以帮我解决这个问题吗?

这里是生成随机数据的代码,与我使用的数据类似。 Ycalib包含一个2级向量变量,Xcalib包含539个光谱波长(下面代码生成10个波长)。

set.seed(1001)
Ycalib <- data.frame(
    y = sample(c("0", "1"), 10, replace = TRUE)

)

set.seed(1001)
Xcalib <- data.frame(
    x1 = sample(1:10),
    x2 = sample(1:10),
    x3 = sample(1:10),
    x4 = sample(1:10),
    x5 = sample(1:10),
    x6 = sample(1:10),
    x7 = sample(1:10),
    x8 = sample(1:10),
    x9 = sample(1:10),
    x10= sample(1:10)

)

这是插入符号中的 PLS-DA 代码:

library(caret)
set.seed(1001) 
ctrl<-trainControl(method="repeatedcv",number=10,classProbs = TRUE,summaryFunction = twoClassSummary) 
plsda<-train(x=Xcalib, # spectral data
              y=Ycalib, # factor vector
              method="pls", # pls-da algorithm
              tuneLength=10, # number of components
              trControl=ctrl, # ctrl contained cross-validation option
              preProc=c("center","scale"), # the data are centered and scaled
              metric="ROC") # metric is ROC for 2 classes
plsda

我是 R 的初学者,希望它足够清楚。

您需要从 train 模型中提取的对象称为 finalModel。使用上面的对象名称,提取如下:

dfscores <- as.data.frame(plsda$finalModel$scores)

然后,您可以将其绑定到您的原始数据,您可以根据需要绘制,例如,使用 ggplot2

p <- ggplot(dfscores, aes(x=`Comp 1`,y=`Comp 2`, color = Ycalib)) + geom_point()