Полагаю, проблема в определении entropy
. Точнее, если 0
содержится в p
, то вы получите NaN
, например,
> entropy(p1)
[1] 1.279854
> entropy(p2)
[1] NaN
> entropy(p3)
[1] 0.5004024
Чтобы исправить это, вы можете добавить na.omit
к функции entropy
как показано ниже
entropy<-function(p) sum(na.omit(-p*log(p)))
, тогда вы можете увидеть
> entropy(p1)
[1] 1.279854
> entropy(p2)
[1] 0.5004024
> entropy(p3)
[1] 0.5004024
ДАННЫЕ
p1 <- c(0.1,0.2,0.3,0.4)
p2 <- c(0,0.2,0.8)
p3 <- c(0.2,0.8)