根据我读过的一篇文章,我正在使用 R 尝试比较可变化学成分的结果。在其中,作者使用 CDA 做了与我想做的非常相似的事情,但另一位研究人员告诉我(没有太多解释)LDA 会更适合。我可以详细说明为什么选择监督学习等,但除非有人问,否则我不会发布。
在做了一些背景阅读之后(这并没有真正消除两者之间的差异),我想我会尝试自己探索这个并比较结果。我的数据与本文中的数据之间的主要区别在于,我不仅使用合成,还为 CDA 创建了 3 个新变量(S-、F- 和 V-),它们是原始合成数据的函数(参见下面的代码)。
然而,当我运行这两个分析时,我得到了完全相同的结果——相同的图。这似乎不可能,但我在编码中找不到错误。
我的两个问题是:
LDA 和 CDA 是否有可能返回完全相同的结果?
LDA和CDA之间的实际区别是什么?
资料:
library(MASS)
library(candisc)
library(ggplot2)
al2o3<-runif(20,5,10)
sio2<-runif(20,10,30)
feo<-runif(20,40,60)
country<-c(rep("England",6), rep("Scotland",6), rep("Wales",4), rep("France",4))
df<-data.frame(country,al2o3,sio2,feo)
低密度脂蛋白:
lda <- lda(country ~ feo+sio2+al2o3, data=df)
plda <- predict(object = lda, newdata = df)
dataset = data.frame(country = df[,"country"], lda = plda$x)
ggplot(dataset) + geom_point(aes(lda.LD1, lda.LD2, colour = country))
光盘:
fvalue<-(df$also3/df$sio2)
svalue<-((2.39*df$feo)/(df$al2o3+df$sio2))
vvalue<-(df$sio2/df$feo)
mod <- lm(cbind(feo,sio2,al2o3) ~ country, data=df)
can2 <- candiscList(mod)
mod2 <- lm(cbind(fvalue,svalue,vvalue) ~ country, data=df)
can3 <- candiscList(mod2)
ggplot(can2$country$scores, aes(x=Can1,y=Can2)) + geom_point(aes(color=country))