Bonjour,

Je suis en train de travailler sur l’estimation de données tronquées "constrained or censored observations" et je suis tombé sur plusieurs articles utilisant l’algorithme d'Expectation-Maximization pour résoudre ce problème .
J'ai aussi trouvé un vieux code abandonné depuis 2008 et qui a l'air de fonctionner mais je n'arrive pas à comprendre quelques éléments et j'espère que quelqu'un puisse m'éclairer

j'ai particulièrement un souci avec les équations e = exp(-(x- mu) * (x- mu) * 0.625 / ( stdDev*stdDev) ) et par la suite on utilise ça s = sqrt(1 - e) . Est ce que ce 0.625 parle à quelqu’un? et puis la racine de 1 -e, je ne vois pas du tout ce que c'est.

ça aussi ( stdDev / sqrt(2 * PI) ) * exp( -(x - mu) * (x - mu) * 0.5 / (stdDev * stdDev) ), ça ressemble à une pdf de gaussienne mais ce n'est pas le cas?

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
                        initialDem  = demands;// backup input demand data
                        ....
                        for (int i = 0; i < nbDemand; i++)
			{
				if (censored[i])
				{
					// E- step
					double uncdem = demands[i];
					double expectedDemand;

					double x= initialDem[i];

					double e, d1;
                                         //1
					e = exp(-(x- mu) * (x- mu) * 0.625 / ( stdDev*stdDev) );
					double s = sqrt(1 - e);

					if (x>= avg)
					{
						d1 = 0.5 * (1 - s);
					}
					else
					{
						d1 = 0.5 * (1 + s);
					}

					 //2
                                        e =  ( stdDev / sqrt(2 * PI) ) * exp( -(x - mu) * (x - mu) * 0.5 / (stdDev * stdDev) );

					double d2 = e ;

					if (d1 == 0. || e < 0.01)
					{
						expectedDemand = uncdem;
					}
					else
					{
						expectedDemand = (avg + d2 / d1);
					}

					// 
					double absDiff = abs( expectedDemand - uncdem );

					demands[i] = expectedDemand;

                                        censored[i] = absDiff > EPS;

				}
			}
Merci d'avance.