Estoy viendo la muestra de curtosis de una variable aleatoria bastante sesgada, y los resultados parecen inconsistentes. Para ilustrar simplemente el problema, miré la curtosis de muestra de un RV log-normal. En R (que estoy aprendiendo lentamente):
library(moments);
samp_size = 2048;
n_trial = 4096;
kvals <- rep(NA,1,n_trial); #preallocate
for (iii in 1:n_trial) {
kvals[iii] <- kurtosis(exp(rnorm(samp_size)));
}
print(summary(kvals));
El resumen que obtengo es
Min. 1st Qu. Median Mean 3rd Qu. Max.
11.87 28.66 39.32 59.17 61.70 1302.00
Según Wikipedia , la curtosis para este RV logarítmico normal debería estar alrededor de 114. Claramente, la curtosis de la muestra está sesgada.
Al investigar un poco, descubrí que la curtosis de la muestra está sesgada para tamaños de muestra pequeños. Utilicé el estimador 'G2' provisto por el e1071
paquete en CRAN, y obtuve resultados muy similares para este tamaño de muestra.
La pregunta : cuál de los siguientes caracteriza lo que está sucediendo:
- El error estándar de la curtosis de muestra es simplemente muy grande para este RV (aunque la estimación común del error estándar es del orden ). Alternativamente, utilicé muy pocas muestras (2048) en este estudio.
- Estas implementaciones de la curtosis de la muestra adolecen de problemas numéricos que pueden corregirse, por ejemplo, con el método de Terriberry (de la misma manera que el método de Welford da mejores resultados que el método ingenuo para la varianza de la muestra).
- Calculé la curtosis de la población de forma incorrecta. (Ay)
- La curtosis de muestra está sesgada de forma inherente y nunca se puede arreglar para tamaños de muestra tan pequeños.
;
en los extremos de sus declaraciones. Hiciste bien en la preasignación, pero no hay necesidad de llenar NA
, kvals <- numeric(length = n_trial)
habría sido suficiente. Con rep
, solo necesita argumentos 1 y 3 de su llamada (por ejemplo rep(NA, 10)
). En la for
configuración del bucle, 1:n_trial
puede ser peligroso si se programa; mejor es seq_along(kvals)
o seq_len(n_trial)
en este caso. Finalmente, si no necesita forzar la impresión, suelte la print()
ronda summary()
; solo la necesitaría si no estuviera trabajando interactivamente con R. HTH.
print
. Los argumentos a rep
eran ciertamente erróneos.