Su razonamiento es bueno. El propósito de esta respuesta es para mostrar cómo se puede comprobar a cabo. Es una habilidad útil, porque todos cometemos errores, y esto nos permite encontrar con ellos en privado antes de que se conviertan vergonzoso :-)
El proceso se describe a continuación es la cosa más importante a seguir, ya que puede ser utilizado una y otra vez para tratar todo tipo de cuestiones estadísticas, sencillo y sofisticado. Estoy usando R
porque es libre y popular, pero con el mismo enfoque de trabajo en otros estadísticos de las plataformas informáticas, tales como Python, Mathematica, Matlab, o lo que sea.
El corazón de la cuestión se refiere a un intervalo de confianza para una muestra de una distribución Normal. Por lo tanto, comenzamos con el código para calcular el CI de un conjunto de números, z
y comprobar si se trata de la media de mu
con un nivel de confianza 1-alpha
:
covers <- function(z, mu=0, alpha=0.10) {
n <- length(z)
abs(mean(z) - mu) <= qt(1 - alpha/2, n-1) * sqrt(var(z) / n)
}
Este cálculo debe parecer familiar, la participación de la media, la varianza, y la longitud de z
, junto con una comparación a un crítico de t de Student el valor calculado con qt
. Los resultados de la comparación en un valor de 1
cuando es verdadera y 0
de otra manera: este es el resultado de covers
.
Para simular un experimento necesitamos (1) generar muestras aleatorias z
; (2) hacer este 50 veces; y (3) contar cuántos de esos 50 muestras de la Cei que la cubierta de la media. Como en gran parte de las matemáticas y ciencias de la computación, la expresión correcta es desarrollado desde el interior, de modo que la siguiente línea se ejecuta estas operaciones en el orden (3)-(2)-(1) el uso de sum
(que, sumando los ceros y los unos devuelto por covers
, es precisamente el conde asociado con la variable aleatoria $Y$), apply
y rnorm
, respectivamente:
n <- 50
k <- 25
mu <- 20
sum(apply(matrix(rnorm(k*n, mu, 5), nrow=k), 2, covers, mu=mu))
Para hacerlo un poco más fácil de leer y mucho más flexible que haya colocado los números 50, 25 y 20 en las variables. Cambiar los valores de estas variables permite jugar con las variaciones del problema.
Se ejecuta una simulación de llamadas para repetir esta operación una y otra y recoger los resultados. Ello mediante un ajuste de las anteriores dentro de una llamada a replicate
:
sim <- replicate(1000, {
sum(apply(matrix(rnorm(k*n, mu, 5), nrow=k), 2, covers, mu=mu))
})
El argumento 1000
especifica cuántos independiente corre a realizar. Porque me han hecho ningún esfuerzo en la eficiencia computacional, esto tomará unos segundos para mil iteraciones. Pero mil será más que suficiente. Todos estos resultados se recogen en la matriz denominada sim
para su posterior análisis.
Por último, debemos señalar los resultados y tal vez realizar algunas pruebas, como si tales formalidades que de verdad importaba:
hist(sim, freq=FALSE, breaks=min(sim):(n+1)-1/2, ylim=c(0, dnorm(0.9*n, 0.9*n, 1)),xlab="Y")
curve(dnorm(x, 0.9*n, 1), col="Red", add=TRUE)
points(min(sim):n, dbinom(min(sim):n, n, 0.9), pch=19, col="Blue")
Más de un histograma (a través de la hist
) he superpuesto la supuesta Normal de la función de densidad (a través de la curve
) así como la correcta distribución Binomial (a través de la points
). Claramente la distribución Normal no es ni siquiera una buena aproximación a los resultados: a pesar de su pico está en el lugar correcto, su desviación estándar es demasiado pequeño.
Un $\chi^2$ prueba ampliamente admite la impresión visual de que la distribución binomial (puntos azules) es la verdadera distribución subyacente:
chisq.test(tabulate(sim+1, n+1), p=dbinom(0:n, n, 0.9), simulate.p.value=TRUE)
La salida es
X-squared = 10.0457, df = NA, p-valor = 0.7441
El gran valor-p dice que los resultados de la simulación no puede ser distinguido de 1000 independiente dibuja a partir de un Binomio$(50, 0.9)$ distribución. (La salida es un poco diferente debido a que los valores aleatorios en su simulación difieren de la mía.)