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.)
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")] –