\[ S_x^2=\frac{1}{n-1}\sum_{i=1}^{n}\left(x_i-\overline{x}\right)^2 \]
\[ 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
\[ 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.
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\)
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