Je souhaite construire une fonction qui calcule l'entropie relative entre deux distributions de probabilité discrètes.Fonction d'entropie relative dans R
La tentative suivante fonctionne:
H <- function(p1, p2, p3 = 1 - p1 - p2, q1, q2, q3 = 1 - q1 - q2) {
p <- c(p1, p2, p3)
q <- c(q1, q2, q3)
return(sum(log(p^p) - log(q^p)))
}
mais je voulais simplifier afin que les arguments étaient juste le vecteur:
D<-function(x,y){
return(sum(log(x^x)-log(y^x)))
}
qui ne fonctionne pas. Quel est le problème ici? Ne pouvez-vous pas définir des fonctions avec des entrées qui sont des vecteurs?
Exemple:
a<-c(0.2,0.5,0.3)
b<-c(0.4,0.4,0.2)
puis
H(0.2,0.5,0.3,0.4,0.4,0.2)
0.094
qui est correct, mais:
D(a,b)
Inf
qui n'est pas correct
Veuillez montrer un exemple de données. Et quel message d'erreur obtenez-vous? –
Je ne comprends pas le résultat de votre 'D (a, b)'. J'ai essayé votre définition de 'D' et les données pour' a' et 'b' et' D (a, b) 'ont donné:' [1] 0.09458187'. – Bhas