Я запускаю LCA в R и использую функцию Entropy. На выходе он выдает результат для моделей с 2-5 классами, а затем NaN для модели с 6 классами.
Я новичок в этом программном обеспечении, поэтому любая помощь будет полезна
Для справки, код и вывод следующие:
entropy<-function (p) sum(-p*log(p))
error_prior<-entropy(LCA_2class$P)
error_post<-mean(apply(LCA_2class$posterior,1, entropy),na.rm = TRUE)
R2_entropy <- (error_prior-error_post) / error_prior
R2_entropy
[1] 0.8631432
error_prior<-entropy(LCA_3class$P)
error_post<-mean(apply(LCA_3class$posterior,1, entropy),na.rm = TRUE)
R2_entropy <- (error_prior-error_post) / error_prior
R2_entropy
[1] 0.9445734
error_prior<-entropy(LCA_4class$P)
error_post<-mean(apply(LCA_4class$posterior,1, entropy),na.rm = TRUE)
R2_entropy <- (error_prior-error_post) / error_prior
R2_entropy
[1] 0.9413201
error_prior<-entropy(LCA_5class$P)
error_post<-mean(apply(LCA_5class$posterior,1, entropy),na.rm = TRUE)
R2_entropy <- (error_prior-error_post) / error_prior
R2_entropy
[1] 0.8849031
error_prior<-entropy(LCA_6class$P)
error_post<-mean(apply(LCA_6class$posterior,1, entropy),na.rm = TRUE)
R2_entropy <- (error_prior-error_post) / error_prior
R2_entropy
[1] NaN
Я также пробовал добавить na.omit
для функции entropy
, как предлагается здесь
Это дало результат для модели с 6 классами, но результат для 3-5 nclasses отличался от того, который был ранее:
2 classes - 0.8631432
3 classes - 0.951281
4 classes - 0.9460597
5 classes - 0.9363084
6 classes - 0.9471508
Может ли кто-нибудь помочь?