Выход энтропии - NaN для определенных решений класса c, а не других - PullRequest
0 голосов
/ 06 мая 2020

Я запускаю 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

Может ли кто-нибудь помочь?

...