Comment calculer la somme de deux distributions normales
J'ai un type de valeur qui représente une distribution gaussienne:
struct Gauss {
double mean;
double variance;
}
Je voudrais effectuer une intégrale sur une série de ces valeurs:
Gauss eulerIntegrate(double dt, Gauss iv, Gauss[] values) {
Gauss r = iv;
foreach (Gauss v in values) {
r += v*dt;
}
return r;
}
Ma question est comment mettre en œuvre plus de ces distributions.
La multiplication par un scalaire (dt
) semblait assez simple. Mais il n'était pas simple! Grâce FOOSHNICK pour l'aide:
public static Gauss operator * (Gauss g, double d) {
return new Gauss(g.mean * d, g.variance * d * d);
}
Cependant, outre m'échappe. Je suppose que je peux juste ajouter que le moyen; c'est la variance qui me causer des ennuis. L'une de ces définitions semble "logique" pour moi.
public static Gauss operator + (Gauss a, Gauss b) {
double mean = a.mean + b.mean;
//Is it this? (Yes, it is!)
return new Gauss(mean, a.variance + b.variance);
//Or this? (nope)
//return new Gauss(mean, Math.Max(a.variance, b.variance));
//Or how about this? (nope)
//return new Gauss(mean, (a.variance + b.variance)/2);
}
Quelqu'un peut-il vous aider à définir statistiquement correct - ou au moins "raisonnable" - version du +
opérateur?
Je suppose que je peux passer le code à utiliser l'arithmétique d'intervalle, à la place, mais j'espérais rester dans le monde de prob et les statistiques.
Vous devez vous connecter pour publier un commentaire.
La somme de deux distributions normales est elle-même une distribution normale:
N(mean1, variance1) + N(mean2, variance2) ~ N(mean1 + mean2, variance1 + variance2)
C'est tout sur page wikipedia.
Faire attention à ce que ce sont vraiment des écarts et pas d'écarts-types.
Pour être plus précis:
Si une variable aléatoire Z est défini comme la combinaison linéaire de deux non corrélées Gaussien variables aléatoires X et Y, alors Z est lui-même une variable aléatoire Gaussienne, par exemple:
si Z = aX + bY,
alors dire(Z) = a * mean(X) + b * mean(Y), et la variance(Z) = a2 * variance(X) + b2 * la variance de Y(Y).
Si les variables aléatoires sont corrélation, alors vous devez tenir compte de cela. Variance(X) est définie par la valeur E([X-mean(X)]2). En travaillant de cette grâce pour Z = aX + bY, nous obtenons:
variance(Z) = a2 * variance(X) + b2 * la variance de Y(Y) + 2ab * la covariance de(X,Y)
Si vous additionnez deux variables aléatoires non corrélées qui n'ont pas de distributions Gaussiennes, alors la répartition de la somme est la la convolution des deux composant distributions.
Si vous additionnez deux en corrélation non-Gaussien variables aléatoires, vous avez à travailler par le biais des intégrales de vous-même.
Bien, votre la multiplication par un scalaire est incorrect, vous devez multiplier la variance par le carré de la d. Si vous êtes à l'ajout d'une constante, alors il suffit de l'ajouter à la moyenne, l'écart reste le même. Si vous êtes à l'ajout de deux distributions, puis ajoutez le moyen et ajouter les écarts.
Sans doute pas, comme l'ajout de deux distributions signifie différentes choses pour avoir travaillé dans la fiabilité et la maintainablity ma première réaction du titre à la distribution d'un système de mtbf, si le mtbf de chaque partie est normalement distribués et le système n'avait pas de redondance. Vous parlez de la distribution de la somme de deux normalement distribués indépendant variates, pas le (logique) de la somme de deux distributions normales' effet. Très souvent, la surcharge d'opérateur est surprenant de la sémantique. Je vous laisse comme une fonction et de l'appeler 'normalSumDistribution" à moins que votre code a un très public cible spécifique.
Ah, je pensais que tu ne pouvais pas ajouter des distributions gaussiennes ensemble, mais vous pouvez!
http://mathworld.wolfram.com/NormalSumDistribution.html
En fait, la moyenne est la somme de toutes les distributions, et que la variance est la somme de toutes les distributions.
Je ne suis pas sûr que j'aime ce que vous appelez "l'intégration" au cours d'une série de valeurs. Entendez-vous ce mot dans un calcul du sens? Essayez-vous de faire de l'intégration numérique? Il y a d'autres, de meilleures façons de le faire. La vôtre n'est pas bon pour moi, encore moins optimale.
La distribution Gaussienne est une belle fonction lisse. Je pense qu'une belle quadrature approche ou de Runge-Kutta serait une bien meilleure idée.
J'aurais pensé que cela dépend de quel type de plus que vous faites. Si vous voulez juste pour obtenir une distribution normale avec des propriétés (moyenne, écart-type, etc.) égale à la somme de deux distributions ensuite, l'ajout de propriétés comme dans les autres réponses, c'est très bien. C'est l'hypothèse utilisée dans quelque chose comme PERT où si un grand nombre de la normale distributions de probabilité sont ajoutés jusqu'alors la résultante de distribution de probabilité est une autre distribution de probabilité normal.
Le problème vient quand les deux distributions étant ajoutés sont pas similaires. Prenez, par exemple, l'ajout d'une distribution de probabilité avec une moyenne de 2 et l'écart-type de 1 et une distribution de probabilité de 10 avec un écart-type de 2. Si vous ajoutez ces deux distributions, vous obtenez une distribution de probabilité avec deux pics, l'un à 2ish et un à 10ish. Le résultat est donc pas normal de distibution. L'hypothèse sur l'ajout de distributions n'est vraiment valable que si la répartition d'origine sont soit très similaire ou vous avez beaucoup de répartition d'origine de sorte que les pics et les creux peuvent être compensées.