1

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

PCA 图

这是一个生成与我使用的数据相似的随机数据的代码。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 的初学者。

4

1 回答 1

1

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

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

然后,您可以将其绑定到您的原始数据,并且您可以根据需要进行绘图,例如,使用ggplot2.

p <- ggplot(dfscores, aes(x=`Comp 1`,y=`Comp 2`, color = Ycalib)) + geom_point()
于 2019-05-21T18:59:21.483 回答