Estou observando a curtose de amostra de uma variável aleatória bastante distorcida e os resultados parecem inconsistentes. Para ilustrar o problema, observei a amostra de curtose de um RV log-normal. Em R (que estou aprendendo 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));
O resumo que recebo é
Min. 1st Qu. Median Mean 3rd Qu. Max.
11.87 28.66 39.32 59.17 61.70 1302.00
Segundo a Wikipedia , a curtose para esse RV log-normal deve ser em torno de 114. Claramente a curtose da amostra é tendenciosa.
Ao fazer algumas pesquisas, descobri que a curtose da amostra é tendenciosa para amostras pequenas. Usei o estimador 'G2', conforme fornecido pelo e1071
pacote no CRAN, e obtive resultados muito semelhantes para esse tamanho de amostra.
A questão : qual das seguintes opções caracteriza o que está acontecendo:
- O erro padrão da curtose da amostra é simplesmente muito grande para este RV (mesmo que a estimativa comum do erro padrão da onda manual seja da ordem ). Como alternativa, usei poucas amostras (2048) neste estudo.
- Essas implementações de curtose amostra sofrem de problemas numéricos que podem ser corrigidos pelo ex método de Terriberry (da mesma maneira que o método de Welford dá melhores resultados do que o método ingênuo de variância da amostra).
- Eu calculei a curtose populacional incorretamente. (ai)
- A curtose da amostra é inerentemente tendenciosa e você nunca pode corrigi-la para tamanhos de amostra tão pequenos.
;
no final de suas declarações. Você fez o direito de pré-alocar, mas não precisa preencher NA
, kvals <- numeric(length = n_trial)
seria suficiente. Com rep
, você só precisa dos argumentos 1 e 3 da sua chamada (por exemplo rep(NA, 10)
). Na for
configuração do loop, 1:n_trial
pode ser perigoso se estiver programando; melhor é seq_along(kvals)
ou seq_len(n_trial)
neste caso. Por fim, se você não precisar forçar a impressão, solte a print()
rodada summary()
- você só precisaria se não estivesse trabalhando de maneira interativa com a R. HTH.
print
. Os argumentos rep
foram certamente errôneos.