r - R 中的判别分析(FDA 和 MDA)图

标签 r ggplot2

我正在尝试使用 mdaggplot2 包绘制灵活判别分析(FDA)和混合判别分析(MDA)的结果。我这样做是为了线性判别分析(LDA),但我不知道继续。有关如何使用 ggplot2 编写这些图表的任何帮助或想法吗?

代码:

require(MASS)
require(ggplot2)
require(mda)
require(scales)
  
irislda <- lda(Species ~ ., iris)

prop.lda = irislda$svd^2/sum(irislda$svd^2)
plda <- predict(irislda,   iris)

dataset = data.frame(species = iris[,"Species"], irislda = plda$x)
p1 <- ggplot(dataset) + geom_point(aes(irislda.LD1, irislda.LD2, colour = species, shape = species), size = 2.5) + 
  labs(x = paste("LD1 (", percent(prop.lda[1]), ")", sep=""),
       y = paste("LD2 (", percent(prop.lda[2]), ")", sep=""))
p1 

irisfda <- fda(Species ~ ., data = iris, method = mars)
 
irismda <- mda(Species ~ ., data = iris)

最佳答案

我相信这就是您所追求的。 FDA 模型只有两个维度,因此它解释了 100%。 mda 模型有 5 个维度,因此我只显示最能解释的两个维度。

library(dplyr)
irisfda <- fda(Species ~ ., data = iris, method = mars)

irisfda$fit$fitted.values %>% 
  as_tibble() %>% 
  bind_cols(species = iris[,"Species"]) %>%
  ggplot() +
  geom_point(aes(V1, V2, color = species, shape = species), size = 2.5) + 
  labs(x = paste("FDA1 (", percent(irisfda$percent.explained[1]/100), ")", sep=""),
       y = paste("FDA2 (", percent(irisfda$percent.explained[2]/100 - irisfda$percent.explained[1]/100), ")", sep=""))

fda model

irismda <- mda(Species ~ ., data = iris)

irismda$fit$fitted.values %>% 
  as_tibble() %>% 
  bind_cols(species = iris[,"Species"]) %>% 
  ggplot() +
  geom_point(aes(V1, V2, color = species, shape = species), size = 2.5) + 
  labs(x = paste("MDA1 (", percent(irismda$percent.explained[1]/100), ")", sep=""),
       y = paste("MDA2 (", percent(irismda$percent.explained[2]/100 - irismda$percent.explained[1]/100), ")", sep=""))

mda model

编辑:

为了消除您看到的警告,我们可以在将矩阵传递给 as_tibble 之前命名矩阵的列。此编辑不使用 %>% 运算符。

colnames(irisfda$fit$fitted.values) <- c("V1", "V2")
df1 <- bind_cols(as_tibble(irisfda$fit$fitted.values),
                 species = iris[,"Species"])
ggplot(df1) +
  geom_point(aes(V1, V2, color = species, shape = species), size = 2.5) + 
  labs(x = paste("FDA1 (", percent(irisfda$percent.explained[1]/100), ")", sep=""),
       y = paste("FDA2 (", percent(irisfda$percent.explained[2]/100 - irisfda$percent.explained[1]/100), ")", sep=""))


colnames(irismda$fit$fitted.values) <- c("V1", "V2", "V3", "V4", "V5", "V6", "V7", "V8") 
df2 <- bind_cols(as_tibble(irismda$fit$fitted.values), 
                 species = iris[,"Species"])
ggplot(df2) +
  geom_point(aes(V1, V2, color = species, shape = species), size = 2.5) + 
  labs(x = paste("MDA1 (", percent(irismda$percent.explained[1]/100), ")", sep=""),
       y = paste("MDA2 (", percent(irismda$percent.explained[2]/100 - irismda$percent.explained[1]/100), ")", sep=""))

编辑2: 您似乎不想使用 dplyr,因此我在此处将基本 R 函数与 ggplot 绘图一起包含在内。

require(MASS)
require(ggplot2)
require(mda)
require(scales)
irisfda <- fda(Species ~ ., data = iris, method = mars)

irismda <- mda(Species ~ ., data = iris)

df1 <- cbind(data.frame(irisfda$fit$fitted.values),
                 species = iris[,"Species"])
ggplot(df1) +
  geom_point(aes(X1, X2, color = species, shape = species), size = 2.5) + 
  labs(x = paste("FDA1 (", percent(irisfda$percent.explained[1]/100), ")", sep=""),
       y = paste("FDA2 (", percent(irisfda$percent.explained[2]/100 - irisfda$percent.explained[1]/100), ")", sep=""))


df2 <- cbind(data.frame(irismda$fit$fitted.values), 
                 species = iris[,"Species"])
ggplot(df2) +
  geom_point(aes(X1, X2, color = species, shape = species), size = 2.5) + 
  labs(x = paste("MDA1 (", percent(irismda$percent.explained[1]/100), ")", sep=""),
       y = paste("MDA2 (", percent(irismda$percent.explained[2]/100 - irismda$percent.explained[1]/100), ")", sep=""))

关于r - R 中的判别分析(FDA 和 MDA)图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63540254/

相关文章:

rollapply 适用于非工作日的移动平均线

r - 由annotation_custom使用geom_bar图创建的移动表

r - 标签、数据点等的重叠绘制(w geom_dl 和直接标签)

r - 为什么 'out of bounds' 索引在矩阵和 data.frame 之间有所不同?

Rmarkdown - 嵌入句子中

r - ggplot2position_dodge高度不起作用

r - 避免在 sweave/pgfsweave 编译期间显示数字

r - Rmarkdown 中同一行的 Kableextra 表和 ggplot 图(PDF - 不是 Flexdashboard)

r - 使用 ggplot 的多个箱线图

r - 表中出现错误的条形图