Alternativas no paramétricas2

XS3310 Teoría Estadística - I Semestre 2025

¿Qué vamos a discutir hoy?

  • Hemos visto hasta ahora sobre
    • Estadística paramétrica
      • Estimadores puntuales
      • Intervalos de confianza.
      • Contrastes de hipótesis.
    • Estadística no paramétrica
      • Bootstrap
  • Ahora:
    • Estadística no paramétirca: Estimación de densidad kernel.

Distribución empírica

  • Para una muestra \(X_1, \dots, X_n\) de variables aleatorias con valores reales, independientes con distribución \(P\), definimos la distribución \(\hat{P}\) como:

\[\hat{P}(A) = \frac{1}{n}\sum_{i=1}^{n} I_A(X_i),\] para \(A \subseteq \mathbb{R}\) y \(I_A(X_i)\) es la función indicadora definida como:

\[I_A(X_i)=\left\lbrace \begin{aligned} 1 & \text{, si } X_i \in A, \\ 0 & \text{, si } X_i \notin A. \end{aligned} \right.\]

Ejemplo:

set.seed(1000)
(x=runif(10,0,5))
 [1] 1.6393935 3.7942324 0.5696820 3.4537757 2.5820120 0.3386898 3.6935743
 [8] 2.9176752 1.0788570 1.2806120
# A1= (0,1)
indicadoraA1 = between(x,0,1)
mean(indicadoraA1)
[1] 0.2
# A2= (1,2)
indicadoraA2 = between(x,1,2)
mean(indicadoraA2)
[1] 0.3
# A3= (2,3)
indicadoraA3 = between(x,2,3)
mean(indicadoraA3)
[1] 0.2
# A4= (3,4)
indicadoraA4 = between(x,3,4)
mean(indicadoraA4)
[1] 0.3
# A5= (4,5)
indicadoraA5 = between(x,4,5)
mean(indicadoraA5)
[1] 0
histograma = hist(x,breaks=c(0,1,2,3,4,5),freq=FALSE)
histograma$counts
[1] 2 3 2 3 0
histograma$density
[1] 0.2 0.3 0.2 0.3 0.0

Histograma

  • Para una muestra aleatoria \(X_1, \dots, X_n\) de una población con función de densidad desconocida \(f\).
  • Escoja \(x_0\) y \(h\) el ancho del segmento y calcule los límites de cada segmento: \[B_j = \left[ x_0 + (j-1)h, x_0+jh \right],~~~ j \in \mathbb{Z}.\]
  • Cuente cuántas observaciones caen en cada segmento \(j\), denotada por \(n_j\):
  • Para cada segmento \(j\), calcule la frecuencia relativa

\[f_j = \frac{n_j}{nh}.\] - Grafique el histograma usando barras de altura \(f_j\) y ancho \(h\).

Ejemplo:

set.seed(1000)
n = 50
x=rnorm(n,10,2)
range(x)
[1]  5.906829 15.340143
h = 2.5
B1 = between(x,2.5,5)
n_1 = sum(B1)
B2 = between(x,5,7.5)
n_2 = sum(B2)
B3 = between(x,7.5,10)
n_3 = sum(B3)
B4 = between(x,10,12.5)
n_4 = sum(B4)
B5 = between(x,12.5,15)
n_5 = sum(B5)
B6 = between(x,15,17.5)
n_6 = sum(B6)
n_j = c(n_1,n_2,n_3,n_4,n_5,n_6)
f_j = n_j/(n*h)
cbind(n_j,f_j)
     n_j   f_j
[1,]   0 0.000
[2,]   7 0.056
[3,]  20 0.160
[4,]  20 0.160
[5,]   2 0.016
[6,]   1 0.008
histograma = hist(x,breaks=c(2.5,5,7.5,10,12.5,15,17.5),freq=FALSE)
histograma$counts
[1]  0  7 20 20  2  1
histograma$density
[1] 0.000 0.056 0.160 0.160 0.016 0.008

Histograma

  • Formalmente, el histograma es dado por \[\hat{f}_h(x)=\frac{1}{nh} \sum_{i=1}^n \sum_{j} I(X_i \in B_j) I(x \in B_j),\] donde \[I(X_i \in B_j)=\left\lbrace \begin{aligned} 1 & \text{, si } X_i \in B_j, \\ 0 & \text{, si } X_i \notin B_j. \end{aligned} \right.\]
  • Denote \(m_j\) por el centro de cada segmento. Esto implica que la definición del histograma asigna para cada \(x\) en el segmento \(B_j=\left[m_j-\frac{h}{2},m_j+\frac{h}{2} \right)\) la misma estimación para \(f\), \(\hat{f}_h(m_j)\).
  • Note que el área del histograma es \(1\).

Ejemplo anterior:

sum(histograma$density*h)
[1] 1

Ejemplo: Variando \(h\), el tamaño del segmento

set.seed(1000)
n = 100
x = rnorm(n,0,2)
(h1 = seq(-10,10,length.out=17))
 [1] -10.00  -8.75  -7.50  -6.25  -5.00  -3.75  -2.50  -1.25   0.00   1.25
[11]   2.50   3.75   5.00   6.25   7.50   8.75  10.00
(h2 = seq(-10,10,length.out=13))
 [1] -10.000000  -8.333333  -6.666667  -5.000000  -3.333333  -1.666667
 [7]   0.000000   1.666667   3.333333   5.000000   6.666667   8.333333
[13]  10.000000
(h3 = seq(-10,10,length.out=9))
[1] -10.0  -7.5  -5.0  -2.5   0.0   2.5   5.0   7.5  10.0
(h4 = seq(-10,10,length.out=5))
[1] -10  -5   0   5  10
hist(x,breaks=h1,freq=FALSE)

hist(x,breaks=h2,freq=FALSE)

hist(x,breaks=h3,freq=FALSE)

hist(x,breaks=h4,freq=FALSE)

Propiedades estadística del histograma

  • Si \(x_0=0\), entonces los segmentos están dados por \(B_j = \left[ (j-1)h, jh \right],~~~ j \in \mathbb{Z}\).

  • Suponga que queremos estimar la densidad de un \(x \in B_j\). La estimación usando el histograma para estimar \(f(x)\) es \[\hat{f}_h(x)=\frac{1}{nh} \sum_{i=1}^n \sum_{j} I(X_i \in B_j) I(x \in B_j)=\frac{1}{nh} \sum_{i=1}^n I(X_i \in B_j)\]

  • \(\hat{f}_h(x)\) es sesgado para estimar \(f(x)\).

  • Calculemos la esperanza del estimador \(\hat{f}_h(x)\). \[E\left(\hat{f}_h(x)\right)=\frac{1}{nh}\sum_{i=1}^n E\left\lbrace I(X_i \in B_j) \right\rbrace=\frac{1}{nh} n E\left\lbrace I(X_i \in B_j) \right\rbrace\]

  • Note que \(I(X_i \in B_j)\) es una variable aleatoria definida como

\[I(X_i \in B_j)= \begin{cases} 1, \text{ con probabilidad } \int_{(j-1)h}^{jh} f(u) du, \\ 0,\text{ con probabilidad } 1-\int_{(j-1)h}^{jh} f(u) du\end{cases}\]

  • Entonces, es un ensayo de Bernoulli y su esperanza es: \[E\left\lbrace I(X_i \in B_j) \right\rbrace=\int_{(j-1)h}^{jh} f(u) du.\]
  • Finalmente, tenemos que \[E\left(\hat{f}_h(x)\right)=\frac{1}{nh} n E\left\lbrace I(X_i \in B_j) \right\rbrace=\frac{1}{h} \int_{(j-1)h}^{jh} f(u) du.\]
  • El sesgo es dado por

\[B\left(\hat{f}_h(x)\right)=E\left(\hat{f}_h(x)\right)-f(x)= \frac{1}{h} \int_{(j-1)h}^{jh} f(u) du - f(x).\]

  • Usando aproximación de Taylor de \(f(x) - f(u)\) alrededor de \(m_j=\left(j-\frac{1}{2}\right) h\) de \(B_j\), tenemos \(f(x) - f(u) \approx f'(m_j)\left[m_j-x\right]\). Por lo tanto,

\[B\left(\hat{f}_h(x)\right)=\frac{1}{h} \int_{(j-1)h}^{jh} f(u) du - f(x)= \frac{1}{h} \int_{(j-1)h}^{jh} f(u) - f(x)du \approx f'(m_j)\left[m_j-x\right].\] Observaciones:

  • El sesgo es casi cero cuando \(x=m_j\), o sea en el punto medio de \(B_j\).
  • El sesgo depende de la pendiente de \(f\).
  • La variancia del estimador \(\hat{f}_h(x)\): \[Var\left(\hat{f}_h(x)\right)=Var \left\lbrace \frac{1}{nh}\sum_{i=1}^n I(X_i \in B_j) \right\rbrace =\frac{1}{n^2h^2} Var \left\lbrace \sum_{i=1}^n I(X_i \in B_j) \right\rbrace\] \[=\frac{1}{n^2h^2} \left[\int_{(j-1)h}^{jh} f(u) du\right] \left[1-\int_{(j-1)h}^{jh} f(u) du\right] \] Se puede mostrar que: \[Var\left(\hat{f}_h(x)\right) \approx \frac{1}{nh}f(x)\]
  • Note que la variancia del estimador decrece cuando \(nh\) crece, mientras que el sesgo del estimador decrece a cero si \(h\) decrece.
  • Recuerden que el error cuadrático medio es: \[ECM\left(\hat{f}_h(x)\right)= Var\left(\hat{f}_h(x)\right)+\left[B\left(\hat{f}_h(x)\right)\right]^2.\]

  • Para poder minimizar \(ECM\left(\hat{f}_h(x)\right)\) se debe encontrar un equilibrio de \(h\), pero esto sirve solamente para un \(x\) dado.

  • Existe el error cuadrático medio integrado (ECMI) definido como \[ECMI\left(\hat{f}_h(x)\right)=E\left\lbrace\int_{-\infty}^{\infty} \left[\hat{f}_h(x) - f(x) \right]^2 dx\right\rbrace\] \[=\int_{-\infty}^{\infty} E\left[\left(\hat{f}_h(x) - f(x) \right)^2 \right] dx=\int_{-\infty}^{\infty} ECM\left(\hat{f}_h(x)\right) dx.\]

  • Se puede comprobar que el óptimo ancho del segmento es: \[h_{opt} \sim n^{-1/3}.\]

Estimación de densidad Kernel

  • Idea básica del histograma para estimar \(f(x)\) es: \[\hat{f}_h(x) = \frac{\#\left\lbrace \text{observaciones que caen dentro del intervalo que contiene a }x \right\rbrace}{n \cdot (\text{ancho del intervalo})},\] donde el intervalo \(B_i\) está centrado en \(m_j\).

  • La idea de la estimación de densidad por kernel es ligeramente diferente:

\[\hat{f}_k(x) = \frac{\#\left\lbrace \text{observaciones que caen dentro del intervalo que está alrededor de }x \right\rbrace}{n \cdot (\text{ancho del intervalo})}.\]

  • Esto se puede reescribir como: \[\hat{f}_k(x) = \frac{1}{n \cdot 2h} \#\left\lbrace X_i \in [x-h,x+h)] \right\rbrace\]
  • Si definimos la función kernel uniforme:

\[K(u)=\frac{1}{2} I(|u|\leq 1),\] donde \(u=(x-X_i)/h\).

  • Podemos escribir ese estimador como:

\[\begin{align} \hat{f}_k(x) &= \frac{1}{nh} \sum_{i=1}^n K\left( \frac{x-X_i}{h} \right) \\ &=\frac{1}{nh} \sum_{i=1}^n \frac{1}{2} I\left(\left|\frac{x-X_i}{h}\right|\leq 1\right). \end{align}\]

  • ¿Qué hace la función kernel uniforme?

Ejemplo: Para una muestra de una población con distribución desconocida: \((1,3,3.3,7,6.5,9)\).

Diferentes kernels

  • Existe una variedad de funciones de kernels.

    • Uniforme: \(K(u)=\frac{1}{2} I(|u|\leq 1),\)
    • Triangular: \(K(u)= (1-|u|) I(|u|\leq 1),\)
    • Gaussiano: \(K(u)=\frac{1}{\sqrt{2\pi}} e^{-\frac{1}{2}u^2}\)

Y otras como Epanechnikov, cudrática (biweight), triweight, coseno, etc.

Ejemplo: Para una muestra de una población con distribución desconocida: \((1,3,3.3,7,6.5,9)\), estime la densidad usando el kernel gaussiano y \(h=0.5\).

Ejemplo: Para una muestra de una población con distribución desconocida: \((1,3,3.3,7,6.5,9)\), estime la densidad usando el kernel triangular y \(h=0.5\).

Variando \(h\)

  • Con \(h=0.5,1,1.5,2\), lo que hace es suavizar más o menos la densidad estimada.

En R

x<-c(1,3,3.3,7,6.5,9)
kde<-density(x,kernel="gaussian",bw=0.5)
plot(kde)
x<-c(1,3,3.3,7,6.5,9)
df<-data.frame(x)
ggplot(df, aes(x = x)) +
  geom_density(kernel="gaussian",bw=0.5) +
  theme_minimal()

Propiedades estadística del estimador de densidad basado en kernels

  • Se puede comprobar que el estimador \(\hat{f}_k(x)\) es sesgado para estimar \(f(x)\).

  • No entraremos en detalles sobre los cálculos del sesgo, variancia y el ECM y ECMI.

  • Se puede comprobar que el óptimo ancho del segmento es: \[h_{opt} \sim n^{-1/5}.\]

Ejemplo con la distribución Poisson

x<-rpois(n=100, lambda= 10)
df<-data.frame(x)
ggplot(df, aes(x = x)) +
  geom_histogram(binwidth = 2) +
  theme_minimal()
ggplot(df, aes(x = x)) +
  geom_density(kernel="gaussian",bw=0.5) +
  theme_minimal()

ggplot(df, aes(x = x)) +
  geom_density(kernel="gaussian",bw=1.5) +
  theme_minimal()

¿Qué discutimos hoy?

  • Histograma
  • Estimación de densidad por kernels.