La varianza muestral

Definición

\[ S_x^2=\frac{1}{n-1}\sum_{i=1}^{n}\left(x_i-\overline{x}\right)^2 \]

Valor esperado o esperanza

\[ E\left(S_x^2\right)=\sigma_x^2 \]

Nota: A \(E\left(S_x^2\right)\) se le llama estimador del valor en la población \(\sigma_x^2\) conocido como el parámetro poblacional (valor fijo y desconocido); a la anterior propiedad se le llama insesgamiento

Varianza

\[ Var\left(S_x^2\right)=\frac{\sigma_x^4}{n-1} \]

Nota: La varianza de la varianza muestral en la medida que se incremente el tamaño de la muestra se hace más pequeña.

Propiedades

Sea \(X_1,X_2,\ldots,X_n\) una muestra aleatoria provenientes de una distribución normal \(N(\mu,\sigma_x^2)\) entonces \(X=\frac{(n-1)S_x^2}{\sigma_x}{\sim}\chi_{(n-1)}^2\)

Simulación de datos, cálculo de la media muestral y su distribución

Se simulará la distribución de las estaturas de los individuos en una población cuyo promedio de estaturas sea igual 176 centímetros y en promedio se alejen de este valor en 3 centimetros, es decir, simulación de una variable aleatoria con media igual a 176 y desviación estándar igual a 3.

\[ P(ESTATURAS=x)=\frac{1}{\sqrt{2{\cdot}\pi{\cdot}3^2}}\exp{\left\{-\frac{1}{2}\left(\frac{x-176}{3}\right)^2\right\}} \]

ESTATURAS <- rnorm(n=1200000,mean=176,sd=3)
library(tidyverse)
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr     1.1.4     ✔ readr     2.1.5
## ✔ forcats   1.0.0     ✔ stringr   1.5.1
## ✔ ggplot2   3.5.1     ✔ tibble    3.2.1
## ✔ lubridate 1.9.3     ✔ tidyr     1.3.1
## ✔ purrr     1.0.2     
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag()    masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
data.frame(ESTATURAS) %>% 
  summarise(
    "media" = mean(x=ESTATURAS),
    "varianza" = ((length(ESTATURAS)-1)/length(ESTATURAS))*var(ESTATURAS)
  )
##      media varianza
## 1 176.0004 9.001661
data.frame(ESTATURAS) %>% 
  ggplot(
    aes(
      x=ESTATURAS
    )
  ) +
  geom_density(
    fill="gray",
    colour="black"
  ) + 
  ggtitle("Distribución poblacional") + 
  ylab("")

n <- c(5, 13, 23, 37, 41)
t <- c(10, 100, 1000, 10000)

muestras.de.estaturas <- data.frame()

for(i in n) {
    col <- c()
    for(j in t) {
        trial <- 1:j
        counter <- j
        value <- c()
        while(counter > 0) {
            bucket <- sample(ESTATURAS, i, replace = FALSE)
            Z <- (i-1)*var(bucket)/3**2
            value <- c(value, Z)
            counter <- counter - 1
        }
        col <- cbind(trial, value, i, j)
        muestras.de.estaturas <- rbind(muestras.de.estaturas, col)
    }
}

rm(col, bucket, value, counter, i, j, n, t, Z, trial)

str(muestras.de.estaturas)
## 'data.frame':    55550 obs. of  4 variables:
##  $ trial: num  1 2 3 4 5 6 7 8 9 10 ...
##  $ value: num  9.77 3.5 6.26 3.45 2.11 ...
##  $ i    : num  5 5 5 5 5 5 5 5 5 5 ...
##  $ j    : num  10 10 10 10 10 10 10 10 10 10 ...
names(muestras.de.estaturas) <- c("trial#", "value", "samples", "trials")

g <- ggplot(muestras.de.estaturas, aes(x = value)) + geom_density(fill = "purple") + 
        facet_grid(samples ~ trials, labeller = label_both) + 
        ggtitle("Distribución de la cantidad pivotal simulada") + 
        geom_vline(xintercept = muestras.de.estaturas$samples-1, linetype = "longdash")
g