Pregunta:
¿Cuál es la expresión para la variación del cuarto momento (no centralizado) en función del tamaño de la muestra para la distribución normal estándar y existe una forma analítica/simbólica adecuada para derivarla?
Detalles:
Cuando utilizo un generador de números aleatorios para crear muestras de una distribución normal estándar, luego calculo la media, y hago esto muchas veces por nivel de muestra, puedo crear un gráfico como el siguiente:
Mis libros de texto me decían que la relación entre la variación y el tamaño de la muestra era
$$ Err \propto \frac{1}{\sqrt{n}}$$
donde $Err$ es la desviación típica de la estimación y $n$ es el tamaño de la muestra.
Cuando lo conecto a esto, obtengo una confirmación visual.
Cuando introduzco un ajuste lineal obtengo el siguiente resumen:
> summary(est)
Call:
lm(formula = s2 ~ I(sqrt(1/n)))
Residuals:
Min 1Q Median 3Q Max
-0.0097079 -0.0004087 0.0000041 0.0004380 0.0093119
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) -2.633e-04 5.312e-05 -4.957 8.4e-07 ***
I(sqrt(1/n)) 1.005e+00 7.212e-04 1393.680 < 2e-16 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 0.0009955 on 994 degrees of freedom
Multiple R-squared: 0.9995, Adjusted R-squared: 0.9995
F-statistic: 1.942e+06 on 1 and 994 DF, p-value: < 2.2e-16
El R-cuadrado del 99,95% es un indicador de un ajuste bastante bueno.
¿Cuál es la expresión de la variación del cuarto momento (no centralizado) en función del tamaño de la muestra para la distribución normal estándar?
El gráfico de la variación del cuarto momento frente al tamaño de la muestra tiene este aspecto:
Cuando trazo el error frente a la raíz cuadrada del recuento inverso de muestras, no obtengo una línea recta.
Podría conectar una pila de transformaciones sobre "n" en "glmulti" ( enlace ), pero eso puede suponer mucho trabajo para pocos beneficios.
Un poco de "hacking" en álgebra me da una expresión de error justa, pero no tengo forma de saber si es local a mis datos, o más globalmente válida.
Aquí está mi código fuente:
set.seed(5) #for reproducibility
n <- seq(from=5,to=1000,by = 1)
#number of iterations at each sample size
N <- 3000
#predeclare
store1 <- matrix(0, nrow=length(n),ncol=N)
store2 <- matrix(0, nrow=length(n),ncol=N)
mymean <- numeric()
mymom<- numeric()
nn <- matrix(0, nrow=length(n),ncol=N)
#for each sample size
for(i in 1:length(n)){
#repeat the measure "N" times
for (j in 1:N){
#store so we can separate it out later
nn[i,j] <- n[i]
#take sample
y <- rnorm(n = nn[i,j],mean = 0,sd = 1)
#compute moment
mymean <- mean(y)
mymom <- mean( (y-mean(y))^4)
#store
store1[i,j] <- mymean
store2[i,j] <- mymom
}
}
##compute variation
#predeclare
s1 <- numeric()
s2 <- numeric()
s3 <- numeric()
s4 <- numeric()
#loop
for (i in 1:length(n)){
#find elements which have a particular sample size
idx <- which(nn==n[i],arr.ind=T)
#compute statistics of first moment (aka mean)
s1[i] <- mean(store1[idx])
s2[i] <- sd(store1[idx])
#compute statistics of fourth moment (not centered
s3[i] <- mean(store2[idx])
s4[i] <- sd(store2[idx])
}
#make figures
plot(n, s2,xlab="Sample count",ylab="Error in mean")
lines(lowess(x=n,y=s2,f=0.01),col="Red",lwd=2)
grid()
plot(sqrt(1/n), s2,xlab="SQRT inverse Sample count",ylab="Error in mean")
lines(lowess(x=sqrt(1/n),y=s2,f=0.01),col="Red",lwd=2)
grid()
plot(n, s4,xlab="Sample count",ylab="Error in fourth moment")
lines(lowess(x=n,y=s4,f=0.005),col="Red",lwd=2)
grid()
plot(sqrt(1/n), s4,xlab="SQRT inverse Sample count",ylab="Error in fourth moment",
xlim=c(0,0.2),ylim=c(0,2))
lines(lowess(x=sqrt(1/n),y=s4,f=0.02),col="Red",lwd=2)
grid()
#fit to models
est <- lm(s2~I(sqrt(1/n)))
summary(est)
est2 <- lm(s2~I(sqrt(1/n))+I((1/n)^(1/4)) )
summary(est2)