Processing math: 100%

15 votos

¿Puedo reconstruir una distribución normal a partir del tamaño de la muestra, y los valores mínimo y máximo? Puedo usar el punto medio como valor aproximado de la media

Sé que esto puede ser un poco irregular, estadísticamente hablando, pero este es mi problema.

Tengo muchos datos de rango, es decir, el mínimo, máximo y tamaño de la muestra de una variable. Para algunos de estos datos también tengo una media, pero no muchos. Quiero comparar estos rangos entre sí para cuantificar la variabilidad de cada rango, y también comparar las medias. Tengo una buena razón para suponer que la distribución es simétrica en torno a la media, y que los datos tendrán una distribución gaussiana. Por esta razón estoy pensando en justificar el uso del punto medio de la distribución como un proxy de la media, cuando esta esté ausente.

Lo que quiero hacer es reconstruir una distribución para cada rango, y luego usar eso para proporcionar una desviación estándar o error estándar para esa distribución. La única información que tengo es el máximo y el mínimo observado de una muestra, y el punto medio como un proxy de la media.

De esta manera espero poder calcular medias ponderadas para cada grupo, y también determinar el coeficiente de variación para cada grupo también, basado en los datos de rango que tengo y mis suposiciones (de una distribución simétrica y normal).

Planeo utilizar R para hacer esto, así que cualquier ayuda con código sería apreciada también.

11voto

jasonmray Puntos 1303

La función de distribución acumulativa conjunta para el mínimo x(1) y máximo x(n) de una muestra de n de una distribución gaussiana con media μ y desviación estándar σ es

$$ F(x_{(1)},x_{(n)};\mu,\sigma) = \Pr(X_{(1)}x_{(1)}, X_{(n)}

donde Φ() es la función de distribución acumulativa gaussiana estándar. La diferenciación con respecto a x(1) y x(n) da como resultado la función de densidad de probabilidad conjunta

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

donde ϕ() es la función de densidad de probabilidad gaussiana estándar. Tomando el logaritmo y eliminando términos que no contienen parámetros se obtiene la función de log-verosimilitud

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

Esto no parece muy manejable, pero es fácil ver que se maximiza independientemente del valor de σ al establecer μ=ˆμ=x(n)+x(1)2, es decir, el punto medio, la primera término se maximiza cuando el argumento de una función de distribución acumulativa es el negativo del argumento de la otra; los segundo y tercer términos representan la verosimilitud conjunta de dos variables normales independientes.

Sustituir ˆμ en la log-verosimilitud y escribir r=x(n)x(1) da (σ;x(1),x(n),ˆμ)=(n2)log[12Φ(r2σ)]r24σ22logσ

Esta expresión debe maximizarse numéricamente (por ejemplo, con optimize de paquete stat de R) para encontrar ˆσ. (Resulta que ˆσ=k(n)r, donde k es una constante que depende solo de n—quizás alguien más matemáticamente hábil que yo podría mostrar por qué.)

Los estimados no sirven sin una medida de precisión acompañante. La información de Fisher observada se puede evaluar numéricamente (por ejemplo, con hessian del paquete numDeriv de R) y usar para calcular errores estándar aproximados:

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

Sería interesante comparar los estimados de verosimilitud y de método de momentos para σ en términos de sesgo (¿es el MLE consistente?), varianza y error cuadrático medio. También está el problema de la estimación para aquellos grupos donde la media de la muestra se conoce además del mínimo y el máximo.

1voto

Jeff Bauer Puntos 236

Necesitas relacionar el rango con la desviación estándar / varianza. Deja que μ sea la media, σ la desviación estándar y R=x(n)x(1) sea el rango. Entonces, para la distribución normal tenemos que el 99.7% de la masa de probabilidad se encuentra dentro de 3 desviaciones estándar de la media. Esto, como regla práctica, significa que con una probabilidad muy alta,

μ+3σx(n) y

μ3σx(1)

Restando el segundo del primero obtenemos

6σx(n)x(1)=R (esto, por cierto, es de donde viene la metodología de aseguramiento de calidad "seis sigma" en la industria). Luego puedes obtener una estimación para la desviación estándar por ˆσ=16(ˉx(n)ˉx(1)) donde la barra denota promedios. Esto es cuando asumes que todas las submuestras provienen de la misma distribución (mencionaste tener rangos esperados). Si cada muestra es una normal diferente, con media y varianza diferentes, entonces puedes utilizar la fórmula para cada muestra, pero la incertidumbre / posible inexactitud en el valor estimado de la desviación estándar será mucho mayor.

Tener un valor para la media y para la desviación estándar caracteriza completamente la distribución normal.

1voto

Blanthor Puntos 139

Es fácil obtener la función de distribución de la máxima de la distribución normal (ver "P.max.norm" en el código). A partir de ella (con algo de cálculo) puedes obtener la función cuantil (ver "Q.max.norm").

Utilizando "Q.max.norm" y "Q.min.norm" puedes obtener la mediana del rango que está relacionada con N. Usando la idea presentada por Alecos Papadopoulos (en la respuesta anterior) puedes calcular la desviación estándar.

Intenta esto:

N = 100000    # el tamaño de la muestra

# Función de probabilidad dada q y N
P.max.norm <- function(q, N=1, mean=0, sd=1){
    pnorm(q,mean,sd)^N
} 
# Funciones cuantil dadas p y 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)
} 

### vamos a probarlo (toma algo de tiempo)
Q.max.norm(0.5, N=N)  # La mediana en la máxima
Q.min.norm(0.5, N=N)  # La mediana en la mínima

iter = 100
median(replicate(iter, max(rnorm(N))))
median(replicate(iter, min(rnorm(N))))
# está bastante bien

### Vamos a intentar obtener estimaciones
true_mean = -3
true_sd = 2
N = 100000

x = rnorm(N, true_mean, true_sd)  # simulación
x.vec = range(x)                  # observaciones

# estimación
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)

# Bastante bueno, pero solo para N grande
# -3  2
# -3.252606  1.981593

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X