我对R包MASS中实现的交叉验证函数lda(..., CV = TRUE)
有一点问题。
示例' test1'下面我可以运行几次并且总是得到相同的pa值(=准确分类的概率)但是如果我用我自己的数据集运行这个脚本,我会得到几个不同的结果。
有人为什么数据集会产生不同的结果?
据我所知,结果应该是稳定的,因为这个lda函数中的交叉验证应该是一个重复采样,每次系统地省略一个观察/行,用其余的计算LDA,评估使用左侧观察/行来区分函数并重复此操作,直到每个观察/行被遗漏一次为止。
我也考虑将共线性作为理由,但对我而言,这种方式不适合这个问题......
不幸的是,我不知道在R中实现的任何标准数据集都会重现这个问题......
非常感谢提前。
#test1 (without problem)
library(MASS) #load MASS
data(iris) #load stardard dataset
pred <- lda(formula = Species ~ .,
data = iris,
prior = c(1,1,1)/3,
CV = TRUE) #run LDA with equal priors
ct <- table(iris$Species, pred$class) #make a crosstable to see crassification success
pa <- sum(diag(prop.table(ct))); pa #summarize the diagonal (=correct classifications)
# from the corresponding probalility crosstable and print the result