Algorithme EM Y vecteur des variables observées loi f (y; θ), f connue, θ à estimer J.-C. Massé Université Laval Algorithme EM Y vecteur des variables observées loi f (y; θ), f connue, θ à estimer Log-vraisemblance relative à Y = y l(θ) = log f (y; θ) en situation où le calcul ou la maximisation est difficile J.-C. Massé Université Laval Algorithme EM Y vecteur des variables observées loi f (y; θ), f connue, θ à estimer Log-vraisemblance relative à Y = y l(θ) = log f (y; θ) en situation où le calcul ou la maximisation est difficile U vecteur de variables partiellement ou non observées de loi paramétrisée par le même θ J.-C. Massé Université Laval Algorithme EM Y vecteur des variables observées loi f (y; θ), f connue, θ à estimer Log-vraisemblance relative à Y = y l(θ) = log f (y; θ) en situation où le calcul ou la maximisation est difficile U vecteur de variables partiellement ou non observées de loi paramétrisée par le même θ X ∼ (Y, U ) (même paramétrisation que Y ) Vecteur des données augmentées J.-C. Massé Université Laval Algorithme EM Y vecteur des variables observées loi f (y; θ), f connue, θ à estimer Log-vraisemblance relative à Y = y l(θ) = log f (y; θ) en situation où le calcul ou la maximisation est difficile U vecteur de variables partiellement ou non observées de loi paramétrisée par le même θ X ∼ (Y, U ) (même paramétrisation que Y ) Vecteur des données augmentées Identité à la base: log-vraisemblance relative à (y, u) log f (y, u; θ) = l(θ) + log f (u|y; θ) obtenue de l’équation f (y, u; θ) = f (y; θ)f (u|y; θ). J.-C. Massé Université Laval Algorithme EM (suite) L’algorithme repose beaucoup sur la fonction log f (y, u; θ). J.-C. Massé Université Laval Algorithme EM (suite) L’algorithme repose beaucoup sur la fonction log f (y, u; θ). Loi conditionnelle f (u|y; θ): loi du vecteur non observé étant donné la valeur observée Y = y . Loi connue lorsque U est bien choisi. J.-C. Massé Université Laval Algorithme EM (suite) L’algorithme repose beaucoup sur la fonction log f (y, u; θ). Loi conditionnelle f (u|y; θ): loi du vecteur non observé étant donné la valeur observée Y = y . Loi connue lorsque U est bien choisi. Algorithme EM : méthode itérative. Chaque itération comporte 2 phases: espérance (E ) et maximisation (M ) J.-C. Massé Université Laval Algorithme EM (suite) L’algorithme repose beaucoup sur la fonction log f (y, u; θ). Loi conditionnelle f (u|y; θ): loi du vecteur non observé étant donné la valeur observée Y = y . Loi connue lorsque U est bien choisi. Algorithme EM : méthode itérative. Chaque itération comporte 2 phases: espérance (E ) et maximisation (M ) θ0 : estimation initiale, θm : estimation à l’étape m J.-C. Massé Université Laval Algorithme EM (suite) L’algorithme repose beaucoup sur la fonction log f (y, u; θ). Loi conditionnelle f (u|y; θ): loi du vecteur non observé étant donné la valeur observée Y = y . Loi connue lorsque U est bien choisi. Algorithme EM : méthode itérative. Chaque itération comporte 2 phases: espérance (E ) et maximisation (M ) θ0 : estimation initiale, θm : estimation à l’étape m Phase E E[log f (Y, U ; θ)|Y = y; θm ] = l(θ)+E[log f (U |Y ; θ)|Y = y; θm ] J.-C. Massé Université Laval Algorithme EM (suite) L’algorithme repose beaucoup sur la fonction log f (y, u; θ). Loi conditionnelle f (u|y; θ): loi du vecteur non observé étant donné la valeur observée Y = y . Loi connue lorsque U est bien choisi. Algorithme EM : méthode itérative. Chaque itération comporte 2 phases: espérance (E ) et maximisation (M ) θ0 : estimation initiale, θm : estimation à l’étape m Phase E E[log f (Y, U ; θ)|Y = y; θm ] = l(θ)+E[log f (U |Y ; θ)|Y = y; θm ] ⇐⇒ Q(θ; θm ) = l(θ) + C(θ; θm ) J.-C. Massé Université Laval Algorithme EM (suite) Comme log f (y, u; θ) n’est pas complètement connue, on s’intéresse plutôt à sa valeur moyenne Q(θ; θm ). En principe, cette fonction est calculable si la loi conditionnelle f (u|y; θ) est connue. J.-C. Massé Université Laval Algorithme EM (suite) Comme log f (y, u; θ) n’est pas complètement connue, on s’intéresse plutôt à sa valeur moyenne Q(θ; θm ). En principe, cette fonction est calculable si la loi conditionnelle f (u|y; θ) est connue. Phase M θm+1 = argmaxθ Q(θ; θm ) J.-C. Massé Université Laval Algorithme EM (suite) Comme log f (y, u; θ) n’est pas complètement connue, on s’intéresse plutôt à sa valeur moyenne Q(θ; θm ). En principe, cette fonction est calculable si la loi conditionnelle f (u|y; θ) est connue. Phase M θm+1 = argmaxθ Q(θ; θm ) L’inégalité de Jensen implique que l(θm+1 ) = log f (y; θm+1 ) > l(θm ) = log f (y; θm ) J.-C. Massé Université Laval Algorithme EM (suite) Comme log f (y, u; θ) n’est pas complètement connue, on s’intéresse plutôt à sa valeur moyenne Q(θ; θm ). En principe, cette fonction est calculable si la loi conditionnelle f (u|y; θ) est connue. Phase M θm+1 = argmaxθ Q(θ; θm ) L’inégalité de Jensen implique que l(θm+1 ) = log f (y; θm+1 ) > l(θm ) = log f (y; θm ) On met fin à l’itération lorsque |Q(θm+1 ; θm ) − Q(θm ; θm )|, ou |θm+1 − θm |, ou l(θm+1 ) − l(θm ) sont suffisamment petits. J.-C. Massé Université Laval Exemple 1 4 groupes sanguins (phénotypes): A, B, AB, O. J.-C. Massé Université Laval Exemple 1 4 groupes sanguins (phénotypes): A, B, AB, O. Ne pas confondre avec les 3 allèles A, B, O agissant par paires, où A, B sont dominants et O récessif. Exemple: groupe A ⇐⇒ A|A ou A|O (2 génotypes). J.-C. Massé Université Laval Exemple 1 4 groupes sanguins (phénotypes): A, B, AB, O. Ne pas confondre avec les 3 allèles A, B, O agissant par paires, où A, B sont dominants et O récessif. Exemple: groupe A ⇐⇒ A|A ou A|O (2 génotypes). Problème: estimer la proportion de chaque allèle dans la population: p = (pA , pB , pO ) sous la contrainte pA + pB + pO = 1. J.-C. Massé Université Laval Exemple 1 4 groupes sanguins (phénotypes): A, B, AB, O. Ne pas confondre avec les 3 allèles A, B, O agissant par paires, où A, B sont dominants et O récessif. Exemple: groupe A ⇐⇒ A|A ou A|O (2 génotypes). Problème: estimer la proportion de chaque allèle dans la population: p = (pA , pB , pO ) sous la contrainte pA + pB + pO = 1. Observations: fréquences des groupes sanguins Y = (nA , nB , nAB , nO ) multinomiale J.-C. Massé Université Laval Exemple 1 4 groupes sanguins (phénotypes): A, B, AB, O. Ne pas confondre avec les 3 allèles A, B, O agissant par paires, où A, B sont dominants et O récessif. Exemple: groupe A ⇐⇒ A|A ou A|O (2 génotypes). Problème: estimer la proportion de chaque allèle dans la population: p = (pA , pB , pO ) sous la contrainte pA + pB + pO = 1. Observations: fréquences des groupes sanguins Y = (nA , nB , nAB , nO ) multinomiale Données augmentées: fréquences des 6 génotypes X = (nA/A , nA/O , nB/B , nB/O , nAB , nO ) multinomiale J.-C. Massé Université Laval Exemple 1 4 groupes sanguins (phénotypes): A, B, AB, O. Ne pas confondre avec les 3 allèles A, B, O agissant par paires, où A, B sont dominants et O récessif. Exemple: groupe A ⇐⇒ A|A ou A|O (2 génotypes). Problème: estimer la proportion de chaque allèle dans la population: p = (pA , pB , pO ) sous la contrainte pA + pB + pO = 1. Observations: fréquences des groupes sanguins Y = (nA , nB , nAB , nO ) multinomiale Données augmentées: fréquences des 6 génotypes X = (nA/A , nA/O , nB/B , nB/O , nAB , nO ) multinomiale X ∼ (Y, U ), où U = (nA/A , nB/B ) n’est pas observé. J.-C. Massé Université Laval Exemple 1 4 groupes sanguins (phénotypes): A, B, AB, O. Ne pas confondre avec les 3 allèles A, B, O agissant par paires, où A, B sont dominants et O récessif. Exemple: groupe A ⇐⇒ A|A ou A|O (2 génotypes). Problème: estimer la proportion de chaque allèle dans la population: p = (pA , pB , pO ) sous la contrainte pA + pB + pO = 1. Observations: fréquences des groupes sanguins Y = (nA , nB , nAB , nO ) multinomiale Données augmentées: fréquences des 6 génotypes X = (nA/A , nA/O , nB/B , nB/O , nAB , nO ) multinomiale X ∼ (Y, U ), où U = (nA/A , nB/B ) n’est pas observé. Les vraisemblances sont fonctions de p = (pA , pB , pO ). J.-C. Massé Université Laval Code R pour l’exemple 1 Fréquences observées sur 521 individus > n = 521; nA = 186; nB = 38 > nAB = 13; nO = 284 J.-C. Massé Université Laval Code R pour l’exemple 1 Fréquences observées sur 521 individus > n = 521; nA = 186; nB = 38 > nAB = 13; nO = 284 Initialisation > it = 0 #numéro d’itération > p = matrix(rep(0,300), ncol=3) #matrice 100 × 3 dont toutes les entrées sont 0. > p[1,] = c(.3,.2,.5) #p0 = (p0A , p0B , p0O ) (estimation initiale du paramètre p et première ligne de p) #les lignes de p deviendront les θm et on limitera à 100 le nombre d’itérations > diff = 1 # valeur initiale du paramètre mesurant le changement de valeur de θm d’une itération à l’autre J.-C. Massé Université Laval Code R de l’exemple 1 (suite) Boucle while : nombre de répétitions inconnu J.-C. Massé Université Laval Code R de l’exemple 1 (suite) Boucle while : nombre de répétitions inconnu > while(diff > 1e-6&&(it = it+1)<100){ nAA = nA*p[it,1]ˆ2/(p[it,1]ˆ2+2*p[it,1]*p[it,3]) nAO = nA*2*p[it,1]*p[it,3]/(p[it,1]ˆ2+2*p[it,1]*p[it,3]) nBB = nB*p[it,2]ˆ2/(p[it,2]ˆ2+2*p[it,2]*p[it,3]) nBO = nB*2*p[it,2]*p[it,3]/(p[it,2]ˆ2+2*p[it,2]*p[it,3]) p[it+1, ] = c((2*nAA+nAO+nAB)/(2*n), (2*nBB+nBO+nAB)/(2*n),(nAO+nBO+2*nO)/(2*n)) diff = max(abs(p[it+1,]-p[it,])) #mesure du changement cat(it-1,diff,p[it,],’\n’)} #La dernière ligne demande d’afficher les résultats #après chaque exécution des instructions, soit le #numéro m d’itération, une mesure numérique de la différence vectorielle pm+1 − pm et pm . J.-C. Massé Université Laval Résultats Première colonne: numéro d’itération Deuxième colonne: max3i=1 |pm+1,i − pm,i | Colonnes 3, 4 et 5: pm = (pmA , pmB , pmO ) 0 0.2128057 0.3 0.2 0.5 1 0.02091656 0.2321719 0.05502239 0.7128057 2 0.002244480 0.2159781 0.05029955 0.7337223 3 0.0002615762 0.2138803 0.05015293 0.7359668 4 3.113671e-05 0.2136257 0.05014597 0.7362284 5 3.723316e-06 0.2135951 0.0501454 0.7362595 6 4.456550e-07 0.2135914 0.05014534 0.7362632 J.-C. Massé Université Laval Résultats Première colonne: numéro d’itération Deuxième colonne: max3i=1 |pm+1,i − pm,i | Colonnes 3, 4 et 5: pm = (pmA , pmB , pmO ) 0 0.2128057 0.3 0.2 0.5 1 0.02091656 0.2321719 0.05502239 0.7128057 2 0.002244480 0.2159781 0.05029955 0.7337223 3 0.0002615762 0.2138803 0.05015293 0.7359668 4 3.113671e-05 0.2136257 0.05014597 0.7362284 5 3.723316e-06 0.2135951 0.0501454 0.7362595 6 4.456550e-07 0.2135914 0.05014534 0.7362632 J.-C. Massé pbM V obtenu à l’itération numéro 6 pbA = 0.2136 pbB = 0.0501 pbO = 0.7363 Université Laval Exemple 2 Jeu de données geyser > library(MASS); attach(geyser) > y = waiting #n = 299 temps d’attente 0.00 0.01 0.02 0.03 0.04 Histogramme 40 50 60 70 80 90 100 110 Temps d'attente J.-C. Massé Université Laval Exemple 2 L’estimation de densité montre deux modes. Il est naturel de vouloir modéliser par une loi mélange. J.-C. Massé Université Laval Exemple 2 L’estimation de densité montre deux modes. Il est naturel de vouloir modéliser par une loi mélange. Mélange de deux lois N (µ1 , σ12 ) et N (µ2 , σ22 ) x − µ1 1 x − µ2 1 + (1 − p) φ f (x; θ) = p φ σ1 σ1 σ2 σ2 1 φ(x) = √ exp(−x2 /2) 2π θ = (p, 1 − p, µ1 , σ1 , µ2 , σ2 ) (6 paramètres) 0 < p < 1, −∞ < µ1 , µ2 < ∞, σ1 > 0, σ2 > 0 J.-C. Massé Université Laval Exemple 2 L’estimation de densité montre deux modes. Il est naturel de vouloir modéliser par une loi mélange. Mélange de deux lois N (µ1 , σ12 ) et N (µ2 , σ22 ) x − µ1 1 x − µ2 1 + (1 − p) φ f (x; θ) = p φ σ1 σ1 σ2 σ2 1 φ(x) = √ exp(−x2 /2) 2π θ = (p, 1 − p, µ1 , σ1 , µ2 , σ2 ) (6 paramètres) 0 < p < 1, −∞ < µ1 , µ2 < ∞, σ1 > 0, σ2 > 0 Les données sont les 299 temps d’attente. La vraisemblance d’une loi mélange est difficile à maximiser. J.-C. Massé Université Laval Estimation par l’algorithme EM Initialisation > it = 0 > diff = 1 > theta = matrix(rep(0,600),ncol=6) #initialisation de la matrice servant à représenter les 6 composantes de θm J.-C. Massé Université Laval Estimation par l’algorithme EM Initialisation > it = 0 > diff = 1 > theta = matrix(rep(0,600),ncol=6) #initialisation de la matrice servant à représenter les 6 composantes de θm Valeur initiale de θ = (p, 1 − p, µ1 , σ1 , µ2 , σ2 ) > theta[1,] = c(.3612,.6388,50,5,80,5) #estimation initiale de θ et première ligne de la matrice de représentation .3612 = mean(waiting < 70) #proportion des #observations < 70 Autres paramètres estimés à l’œil à partir de l’histogramme. J.-C. Massé Université Laval Estimation par l’algorithme EM Initialisation > it = 0 > diff = 1 > theta = matrix(rep(0,600),ncol=6) #initialisation de la matrice servant à représenter les 6 composantes de θm Valeur initiale de θ = (p, 1 − p, µ1 , σ1 , µ2 , σ2 ) > theta[1,] = c(.3612,.6388,50,5,80,5) #estimation initiale de θ et première ligne de la matrice de représentation .3612 = mean(waiting < 70) #proportion des #observations < 70 Autres paramètres estimés à l’œil à partir de l’histogramme. On prend X = (Y, U1 , U2 ), où les Ui sont Bernoulli t.q. P (U1 = 1) = p = 1 − P (U2 = 1). Voir notes de cours. J.-C. Massé Université Laval Algorithme EM θm obtenus dans les notes de cours J.-C. Massé Université Laval Algorithme EM θm obtenus dans les notes de cours J.-C. Massé Boucle while > options(digits=4) #4 décimales > while(diff >1e-6&&(it = it+1)<100){ w = matrix(rep(0,length(y)*6),ncol=6) for (i in 1:2) w[,i] = (theta[it,i]*dnorm(y,theta[it,2*i +1],theta[it,2*i+2]))/(theta[it,1]*dnorm(y,theta[it,3],theta[it,4]) +theta[it,2]*dnorm(y,theta[it,5],theta[it,6])) for (i in 1:2) theta[it+1,i] = sum(w[,i])/length(y) #pm+1,i for (i in c(3,5)) theta[it+1,i] = sum(w[,(i-1)/2]*y)/sum(w[,(i-1)/2]) #µm+1,i for (i in c(4,6)) theta[it+1,i] = #σm+1,i sqrt(sum(w[,i/2-1]*(y-theta[it+1,i-1])ˆ2)/sum(w[,i/2-1]) ) diff = max(abs(theta[it+1,]-theta[it,])) cat(it-1,diff,theta[it,],’\n’)} Université Laval Résultats Convergence après 41 itérations 0 4.332 0.3612 0.6388 50 5 80 5 1 0.1374 0.3147 0.6853 54.33 4.963 80.57 7.253 2 0.03927 0.3122 0.6878 54.33 5.041 80.48 7.39 3 0.02368 0.311 0.689 54.3 5.031 80.44 7.43 4 0.01857 0.3102 0.6898 54.28 5.014 80.42 7.45 5 0.01419 0.3095 0.6905 54.26 4.999 80.4 7.464 6 0.0108 0.3091 0.6909 54.25 4.988 80.4 7.474 7 0.008218 0.3087 0.6913 54.24 4.979 80.39 7.482 ... 39 1.442e-06 0.3076 0.6924 54.2 4.952 80.36 7.508 40 1.101e-06 0.3076 0.6924 54.2 4.952 80.36 7.508 41 8.403e-07 0.3076 0.6924 54.2 4.952 80.36 7.508 J.-C. Massé Université Laval Résultats Convergence après 41 itérations 0 4.332 0.3612 0.6388 50 5 80 5 1 0.1374 0.3147 0.6853 54.33 4.963 80.57 7.253 2 0.03927 0.3122 0.6878 54.33 5.041 80.48 7.39 3 0.02368 0.311 0.689 54.3 5.031 80.44 7.43 4 0.01857 0.3102 0.6898 54.28 5.014 80.42 7.45 5 0.01419 0.3095 0.6905 54.26 4.999 80.4 7.464 6 0.0108 0.3091 0.6909 54.25 4.988 80.4 7.474 7 0.008218 0.3087 0.6913 54.24 4.979 80.39 7.482 ... 39 1.442e-06 0.3076 0.6924 54.2 4.952 80.36 7.508 40 1.101e-06 0.3076 0.6924 54.2 4.952 80.36 7.508 41 8.403e-07 0.3076 0.6924 54.2 4.952 80.36 7.508 J.-C. Massé pb = 0.3076, µ b1 = 54.2, σ b1 = 4.952, µ b2 = 80.36, σ b2 = 7.508 Université Laval Vérification de l’ajustement Définition de la fonction de densité mélange > mel = function(x,p,mu1,mu2,sigma1,sigma2){ p*dnorm((x-mu1)/sigma1)/sigma1+(1-p)*dnorm((xmu2)/sigma2)/sigma2} J.-C. Massé Université Laval Vérification de l’ajustement Définition de la fonction de densité mélange > mel = function(x,p,mu1,mu2,sigma1,sigma2){ p*dnorm((x-mu1)/sigma1)/sigma1+(1-p)*dnorm((xmu2)/sigma2)/sigma2} Histogramme du temps d’attente > hist(waiting,col=’orange’,xlim=c(40,110), ylim=c(0,.04),probability=T,xlab="Temps d’attente",ylab="",main="Ajustement d’un mélange") J.-C. Massé Université Laval Vérification de l’ajustement Définition de la fonction de densité mélange > mel = function(x,p,mu1,mu2,sigma1,sigma2){ p*dnorm((x-mu1)/sigma1)/sigma1+(1-p)*dnorm((xmu2)/sigma2)/sigma2} Histogramme du temps d’attente > hist(waiting,col=’orange’,xlim=c(40,110), ylim=c(0,.04),probability=T,xlab="Temps d’attente",ylab="",main="Ajustement d’un mélange") Superposition des graphiques > x = seq(35,110,by=.1)#grille de points sur l’abscisse > par(new=T) #superposition > plot(x,mel(x,0.3076,54.2, 80.36 , 4.952, 7.508), xlim=c(40,110),ylim=c(0,.04),type=’l’,xlab="",ylab="", main="") J.-C. Massé Université Laval Vérification de l’ajustement 0.00 0.01 0.02 0.03 0.04 Ajustement d'un mélange 40 50 60 70 80 90 100 110 Temps d'attente J.-C. Massé Université Laval Autre approche à l’estimation du mélange Méthode de Nelder-Mead > mel.obj = function(th,x){ e = th[1]*dnorm((xth[2])/th[3])/th[3]+(1-th[1])*dnorm((x-th[4])/th[5])/th[5] -sum(log(e)) } #fonction à minimiser −l(θ) > th0 = c(0.3612, 50, 5, 80, 5)#valeur initiale du paramètre th > optim(th0,mel.obj,x=waiting)$par [1] 0.3073 54.1964 4.9483 80.3602 7.5110 J.-C. Massé Université Laval Autre approche à l’estimation du mélange Méthode de Nelder-Mead > mel.obj = function(th,x){ e = th[1]*dnorm((xth[2])/th[3])/th[3]+(1-th[1])*dnorm((x-th[4])/th[5])/th[5] -sum(log(e)) } #fonction à minimiser −l(θ) > th0 = c(0.3612, 50, 5, 80, 5)#valeur initiale du paramètre th > optim(th0,mel.obj,x=waiting)$par [1] 0.3073 54.1964 4.9483 80.3602 7.5110 Méthode BFGS > optim(th0,mel.obj,x=waiting, method="BFGS",control=list(parscale=c(0.1,rep(1,4))))$par [1] 0.3077 54.2047 4.9546 80.3630 7.5057 J.-C. Massé Université Laval