J'essaie de séparer deux groupes de valeurs d'un même ensemble de données. Je peux supposer que l'une des populations est normalement distribuée et représente au moins la moitié de la taille de l'échantillon. Les valeurs du second sont à la fois inférieures ou supérieures aux valeurs du premier (la distribution est inconnue). Ce que j'essaie de faire, c'est de trouver les limites supérieure et inférieure qui enfermeraient la population normalement répartie de l'autre.
Mon hypothèse me fournit un point de départ:
- tous les points dans l'intervalle interquartile de l'échantillon proviennent de la population normalement distribuée.
J'essaie de tester les valeurs aberrantes en les tirant du reste de l'échantillon jusqu'à ce qu'elles ne rentrent pas dans le 3 e rang de la population normalement distribuée. Ce qui n'est pas idéal, mais semble produire un résultat assez raisonnable.
Mon hypothèse est-elle statistiquement valable? Quelle serait la meilleure façon de procéder?
ps veuillez corriger les balises quelqu'un.
la source
Réponses:
Si je comprends bien, vous pouvez simplement adapter un mélange de deux normales aux données. Il existe de nombreux packages R disponibles pour ce faire. Cet exemple utilise le package mixtools :
Cela donne:
Mélange de deux normales http://img294.imageshack.us/img294/4213/kernal.jpg
Le paquet contient également des méthodes plus sophistiquées - consultez la documentation.
la source
la source
Cela suppose que vous ne savez même pas si la deuxième distribution est normale ou non; Je gère essentiellement cette incertitude en me concentrant uniquement sur la distribution normale. Cela peut ou non être la meilleure approche.
Si vous pouvez supposer que les deux populations sont complètement séparées (c'est-à-dire que toutes les valeurs de la distribution A sont inférieures à toutes les valeurs de la distribution B), alors une approche consiste à utiliser la fonction optimise () dans R pour rechercher le point de rupture qui donne des estimations de la moyenne et du sd de la distribution normale qui rendent les données les plus probables:
Si vous ne pouvez pas supposer une séparation complète, je pense que vous devrez assumer une certaine distribution pour la deuxième distribution, puis utiliser la modélisation du mélange. Notez que la modélisation du mélange ne marquera pas réellement les points de données individuels, mais vous donnera la proportion du mélange et les estimations des paramètres de chaque distribution (par exemple, moyenne, sd, etc.).
la source
optimize
nécessite que deux distributions soient côte à côte si je comprends bien. Dans mon cas, l'un est dans l'autre, c'est-à-dire que les valeurs de la deuxième population sont des deux côtés des limites.Je suis surpris que personne n'ait suggéré la solution évidente:
Maintenant pour l'explication: la
ltsReg
fonction dans le packagerobustbase
, lorsqu'elle est appelée avec l'optiondonne les poids MCD univariés (exacts). (il s'agit d'un poids n-vecteur 0-1 stocké dans l'
$raw.weights
objet. L'algorithme pour les identifier est l'estimateur MCD (1)).En un mot, ces poids sont de 1 pour les membres du sous-ensemble deh = ⌈ ( n + 2 ) / 2 ⌉ observations les plus concentrées.
Dans la dimension un, il commence par trier toutes les observations puis calcule la mesure de tous les sous-ensembles contigus deh observations: dénoter
X( i ) le jet h entrée du vecteur d'observations triées, il calcule la mesure de ( x( 1 ), . . . , x( h + 1 )) ensuite ( x( 2 ), . . . , x( h + 2 ))
et ainsi de suite ...) conserve alors celui avec une mesure plus petite.
(par exemple
Cet algorithme suppose que votre groupe d'intérêt numérote une majorité stricte de l'échantillon d'origine et qu'il a une distribution symétrique (mais il n'y a pas d'hypothèse sur la distribution du resten - h observation).
la source