Puis-je reconstruire une distribution normale à partir de la taille de l'échantillon et des valeurs min et max? Je peux utiliser le point médian pour représenter la moyenne

14

Je sais que cela pourrait être un peu compliqué, statistiquement, mais c'est mon problème.

J'ai beaucoup de données de plage, c'est-à-dire la taille minimum, maximum et échantillon d'une variable. Pour certaines de ces données, j'ai également une moyenne, mais pas beaucoup. Je veux comparer ces gammes entre elles pour quantifier la variabilité de chaque gamme, et aussi comparer les moyennes. J'ai une bonne raison de supposer que la distribution est symétrique autour de la moyenne et que les données auront une distribution gaussienne. Pour cette raison, je pense pouvoir justifier l'utilisation du point médian de la distribution comme proxy de la moyenne, lorsqu'elle est absente.

Ce que je veux faire, c'est reconstruire une distribution pour chaque plage, puis l'utiliser pour fournir un écart-type ou une erreur standard pour cette distribution. Les seules informations dont je dispose sont les valeurs max et min observées à partir d'un échantillon et le point médian comme indicateur de la moyenne.

De cette façon, j'espère être en mesure de calculer des moyennes pondérées pour chaque groupe, ainsi que de calculer également le coefficient de variation pour chaque groupe, sur la base des données de plage que j'ai et de mes hypothèses (d'une distribution symétrique et normale).

Je prévois d'utiliser R pour ce faire, donc toute aide de code serait également appréciée.

green_thinlake
la source
2
Je me demandais pourquoi vous dites que vous avez des données pour les valeurs minimum & maximum & maximum; puis plus tard, vous avez des informations sur seulement le minimum et le maximum attendus. Quel est-il - observé ou attendu?
Scortchi - Réintégrer Monica
Désolé, c'est mon erreur. Les données maximales et minimales sont observées (mesurées à partir d'objets réels). J'ai modifié le poste.
green_thinlake

Réponses:

11

La fonction de distribution cumulative conjointe pour le minimum x(1) et le maximum x(n) pour un échantillon de n d'une distribution gaussienne avec la moyenne μ et l'écart type σ est

F(x(1),x(n);μ,σ)=Pr(X(1)<x(1),X(n)<x(n))=Pr(X(n)<x(n))Pr(X(1)>x(1),X(n)<x(n)=Φ(x(n)μσ)n[Φ(x(n)μσ)Φ(x(1)μσ)]n

Φ() est le CDF gaussien standard. La différenciation par rapport à x(1) et x(n) donne la fonction de densité de probabilité conjointe

f(x(1),x(n);μ,σ)=n(n1)[Φ(x(n)μσ)Φ(x(1)μσ)]n2ϕ(x(n)μσ)ϕ(x(1)μσ)1σ2

ϕ() est le PDF gaussien standard. Prendre les termes log & drop qui ne contiennent pas de paramètres donne la fonction log-vraisemblance

(μ,σ;x(1),x(n))=(n2)log[Φ(x(n)μσ)Φ(x(1)μσ)]+logϕ(x(n)μσ)+logϕ(x(1)μσ)2logσ

Cela ne semble pas très traitable mais il est facile de voir qu'il est maximisée quelle que soit la valeur de par le réglage μ = μ = x ( n ) + x ( 1 )σ , c'est-à-dire le point médian - le premier terme est maximisé lorsque l'argument d'un CDF est le négatif de l'argument de l'autre; les deuxième et troisième termes représentent la probabilité conjointe de deux variables normales indépendantes.μ=μ^=x(n)+x(1)2

Substituant μ dans la log-vraisemblance et écriture r = x ( n ) - x ( 1 ) donne ( σ , x ( 1 ) , x ( n ) , μ ) = ( n - 2 ) log [ 1 - 2 Φ ( - rμ^r=x(n)x(1)

(σ;x(1),x(n),μ^)=(n2)log[12Φ(r2σ)]r24σ22logσ

Cette expression doit être numériquement maximisé (par exemple avec optimizede R de statpaquet) pour trouver σ . (Il se trouve que σ = k ( n ) r , où k est une constante ne dépendant que de n -perhaps quelqu'un mathématiquement plus adroite que je ne pouvais montrer pourquoi.)σ^σ^=k(n)rkn

Les estimations ne sont pas utiles sans une mesure de précision qui l'accompagne. Les informations de Fisher observées peuvent être évaluées numériquement (par exemple avec hessianle numDerivpackage de R ) et utilisées pour calculer des erreurs standard approximatives:

I(σ)=-2(σ, μ )

I(μ)=2(μ;σ^)(μ)2|μ=μ^
I(σ)=2(σ;μ^)(σ)2|σ=σ^

Il serait intéressant de comparer la probabilité et les estimations de la méthode des moments pour en termes de biais (la MLE est-elle cohérente?), De variance et d'erreur quadratique moyenne. Il y a aussi la question de l'estimation pour les groupes où la moyenne de l'échantillon est connue en plus du minimum et du maximum.σ

Scortchi - Réintégrer Monica
la source
1
+1. Ajouter la constante à la log-vraisemblance ne changera pas l'emplacement de son maximum, mais la convertit en une fonction de σ / r et n , d'où la valeur de σ / r qui la maximise est une fonction n k ( n ) . De manière équivalente, σ = k ( n ) r comme vous le prétendez. En d'autres termes, la quantité pertinente à utiliser est le rapport de l'écart-type à la plage (observée), ou tout aussi bien sa réciproque - qui est étroitement liée à la2log(r)σ/rnσ/rnk(n)σ^=k(n)rGamme étudiée .
whuber
@whuber: Merci! Semble évident avec le recul. Je vais incorporer cela dans la réponse.
Scortchi - Réintégrer Monica
1

Vous devez relier la plage à l'écart-type / variance. Soit la moyenne, σ l'écart-type et R = x ( n ) - x ( 1 ) la plage. Ensuite, pour la distribution normale, nous avons que 99,7 % de la masse de probabilité se situe à moins de 3 écarts-types de la moyenne. Cela signifie, en règle générale, qu'avec une probabilité très élevée,μσR=x(n)x(1)99.7

et

μ+3σx(n)

μ3σx(1)

En soustrayant le deuxième du premier, nous obtenons

6σx(n)x(1)=R
σ^=16(x¯(n)x¯(1))

Le fait d'avoir une valeur pour la moyenne et pour l'écart type caractérise complètement la distribution normale.

Alecos Papadopoulos
la source
3
nn
1
@Stortchi Eh bien, je n'ai pas dit que c'était une bonne estimation, mais je pense qu'il est toujours bon d'avoir des solutions faciles à mettre en œuvre, même très approximatives, afin d'avoir une idée quantitative du problème en question, à côté des autres. des approches sophistiquées et efficaces comme par exemple celle décrite dans l'autre réponse à cette question.
Alecos Papadopoulos
Je ne me moquerais pas de "l'attente de la plage d'échantillonnage se révèle être environ 6 fois l'écart-type pour les valeurs de nde 200 à 1000 ". Mais est-ce que je manque quelque chose de subtil dans votre dérivation, ou cela ne fonctionnerait-il pas aussi bien pour justifier la division de la plage par un nombre quelconque?
Scortchi - Reinstate Monica
@Scortchi Eh bien, l'esprit de l'approche est "si nous nous attendons à ce que presque toutes les réalisations se situent dans les 6 sigmas, alors il est raisonnable de s'attendre à ce que les réalisations extrêmes soient près de la frontière" - c'est tout ce qu'il y a vraiment. Peut-être que je suis trop habitué à opérer sous des informations extrêmement incomplètes, et obligé de dire quelque chose de quantitatif à ce sujet ... :)
Alecos Papadopoulos
4
Je pourrais répondre que davantage d’observations dixσ de la moyenne, donnant une meilleure estimation σ^=Rdix. Je ne le serai pas parce que c'est un non-sens. Tout nombre supérieur1.13sera une estimation approximative d'une certaine valeur den.
Scortchi - Réintégrer Monica
1

Il est simple d'obtenir la fonction de distribution du maximum de la distribution normale (voir "P.max.norm" dans le code). De là (avec un peu de calcul), vous pouvez obtenir la fonction quantile (voir "Q.max.norm").

En utilisant "Q.max.norm" et "Q.min.norm" vous pouvez obtenir la médiane de la plage qui est liée à N. En utilisant l'idée présentée par Alecos Papadopoulos (dans la réponse précédente), vous pouvez calculer sd.

Essaye ça:

N = 100000    # the size of the sample

# Probability function given q and N
P.max.norm <- function(q, N=1, mean=0, sd=1){
    pnorm(q,mean,sd)^N
} 
# Quantile functions given p and N
Q.max.norm <- function(p, N=1, mean=0, sd=1){
    qnorm(p^(1/N),mean,sd)
} 
Q.min.norm <- function(p, N=1, mean=0, sd=1){
    mean-(Q.max.norm(p, N=N, mean=mean, sd=sd)-mean)
} 

### lets test it (takes some time)
Q.max.norm(0.5, N=N)  # The median on the maximum
Q.min.norm(0.5, N=N)  # The median on the minimum

iter = 100
median(replicate(iter, max(rnorm(N))))
median(replicate(iter, min(rnorm(N))))
# it is quite OK

### Lets try to get estimations
true_mean = -3
true_sd = 2
N = 100000

x = rnorm(N, true_mean, true_sd)  # simulation
x.vec = range(x)                  # observations

# estimation
est_mean = mean(x.vec)
est_sd = diff(x.vec)/(Q.max.norm(0.5, N=N)-Q.min.norm(0.5, N=N))

c(true_mean, true_sd)
c(est_mean, est_sd)

# Quite good, but only for large N
# -3  2
# -3.252606  1.981593
Vyga
la source
2
Poursuivant cette approche, E(R)=σ1(1Φ(x))nΦ(x)ndx=σd2(n), where R is the range & Φ() the standard normal cumulative distribution function. You can find tabulated values of d2 for small n in the statistical process control literature, numerically evaluate the integral, or simulate for your n.
Scortchi - Reinstate Monica