2011-01-01 7 views
5

Estaba tratando de programar el algoritmo para la cdf para la distribución t multivariada después de Genz y Bretz, El paquete de referencia en R es mvtnorm.¿Por qué mis números no coinciden, distribución t multivariante en R mvtnorm

Cuando estaba probando mi función, descubrí que mis números no coinciden. En el siguiente ejemplo, ajustado a partir de la ayuda de mvtnorm, la variable aleatoria t multivariada tiene componentes independientes. Por lo que la integral debe ser sólo el producto de 3 probabilidades independientes

> lower <- -1 
> upper <- 3 
> df <- 4 
> corr <- diag(3) 
> delta <- rep(0, 3) 
> pmvt(lower=lower, upper=upper, delta=delta, df=df, corr=corr) 
[1] 0.5300413 
attr(,"error") 
[1] 4.321136e-05 
attr(,"msg") 
[1] "Normal Completion" 

El error reportado es 4e-5, el error en comparación con el producto de las probabilidades independientes

> (pt(upper, df) - pt(lower, df))**3 
[1] 0.4988254 

es

0.5300413 - 0.4988254 = 0.0312159

Estoy obteniendo d en mi propio código se comparan con R mvtnorm para varios ejemplos en aproximadamente el mismo rango.

Soy principalmente un principiante en R. Entonces, ¿qué estoy haciendo mal o qué está mal?

(no estoy Ingreso en una lista de correo R-ayuda, así que trato aquí.)

ACTUALIZACIÓN: Como se explicó pchalasani, mis estadísticas estaba equivocado, el error en mi propio código estaba en algún ayudante función no en el código de distribución t. Una buena forma de ver que no estar correlacionado no implica independencia, es ver la distribución condicional. Aquí están las frecuencias de columna% * 100 para una variable aleatoria bivariada independiente (10000 muestras) para cuartiles (distribución condicional en la variable de columna).

bivariantes no correlacionadas variables normales

([[26, 25, 24, 23], 
    [24, 23, 24, 25], 
    [24, 27, 24, 24], 
    [24, 23, 26, 25]]) 

bivariante t no correlacionado variables aleatorias

([[29, 20, 22, 29], 
    [20, 31, 28, 21], 
    [20, 29, 29, 20], 
    [29, 18, 18, 29]]) 

la distribución en la primera y última columna es muy diferente de las columnas intermedias. (Lo sentimos, no hay código R, ya que no sé cómo hacer esto de manera rápida con R.)

+0

No veo nada obviamente mal con lo que está haciendo. La ejecución de pmvt() para el caso unidimensional se ve bien; para el caso bidimensional [pmvt (lower = rep (lower, 2), upper = rep (upper, 2), df = df)] da 0.6429955 con un error nominal de 1e-15, mientras que (pt (upper, df)) -pt (inferior, df))^2 es 0.6289736. ¿Su código da respuestas que coinciden con el producto de distribuciones t independientes? Estoy de acuerdo en que un error parece improbable, ¿podría haber algo en las definiciones que te falta? Si no obtiene más respuestas aquí, probaría el mantenedor [mantenedor ("mvtnorm")] –

Respuesta

7

correlación cero hace no implica independencia, de forma conjunta no gaussiana distribuido variables aleatorias!

Déjame explicar: no hay ningún error aquí. El error radica en su suposición de que cuando las variables aleatorias multivariadas Student-t son no correlacionadas, también son independientes, que definitivamente no es el caso: la única clase de distribuciones multiavariadas donde la correlación no implica independencia, es MV Gaussian distribución.

ver que dos variables aleatorias no correlacionadas que siguen conjuntamente una distribución MT t de Student no son independientes, considere el caso de n=2:

require(mvtnorm) 
x <- rmvt(100000, sigma = diag(2), df=4, delta = rep(0,2)) 

Ahora cada columna de x representa realizaciones de las dos variables aleatorias.En primer lugar, comprobar que sus correlación es bastante pequeño:

> cor(x[,1], x[,2]) 
[1] -0.003378811 

Sin embargo, la correlación de los cuadrados de x[,1] y x[,2] es tan alta como el 30,4%, es decir, sin duda no es cero, demostrando que x[,1] y x[,2] son no estadísticamente independiente:

> cor(x[,1]^2, x[,2]^2) 
[1] 0.3042684 
+0

Gracias. Después de leer tu respuesta me tomó un tiempo convencerme de que tienes razón. Mi intuición para las distribuciones esféricas y las agradables tramas de dispersión en forma de bola pueden ser bastante erróneas. – user333700

+0

Y después de dejar de preocuparme por la distribución t, encontré el error en mi programa y ahora puedo hacer coincidir los resultados de mvtnorm. – user333700

+0

Leí la respuesta de pchalasni y la modifiqué. También le sugiero que agregue ediciones a su pregunta para demostrar lo que hizo más tarde para resolver su confusión. Yo, por mi parte, no habría esperado que los dos métodos estuvieran de acuerdo, pero tal vez hayas descubierto algo instructivo. –

Cuestiones relacionadas