Notación

\[ X{\sim}F_{(n_1,n_2)} \]

Nota: El cociente de dos variables aleatorias con distribución chi cuadrado (suma de variables elevadas al cuadrado divididas cada una de ellas entre sus correspondientes grados de libretad) sigue o tiene una distribución F; con grados de libertad iguales al número de variables aleatorias sumadas: en el numerador (primer parámetro \(n_1\)) y en el denominador (segundo parametro \(n_2\))

\[ \text{Si }X_1{\sim}\chi_{(n_1)}^2\text{ y }X_2{\sim}\chi_{(n_2)}^2\text{ entonces }X=\frac{\frac{X_1}{n_1}}{\frac{X_2}{n_2}}{\sim}F_{(n_1,n_2)} \]

Parámetros

\[ E(X)=\frac{n_2}{n_2-2}\text{ para }n_2>2 \]

\[ Var(X)=\frac{2n_2^2\left(n_1+n_2-2\right)}{n_1\left(n_2-2\right)^2\left(n_2-4\right)}\text{ para }n_2>4 \]

donde \(n_1\) es el número de variables aleatorias normales elevadas al cuadrado que son sumadas en el numerador y \(n_2\) es el número de variables aleatorias normales elevadas al cuadrado que son sumadas en el denominador.

Notas:

Simulación, deducción y ejercicios

library(ggfortify)
## Loading required package: ggplot2
F <- function(df1,df2,fill="gray",colour="black",p=NULL){
  ggdistribution(
    func=df,
    x=seq(
      from=0,
      to=9*sqrt((2*df2**2*(df1+df2-2))/(df1*(df2-2)**2*(df2-4))),
      by=0.01
    ),
    df1=df1,
    df2=df2,
    fill=fill,
    colour=colour,
    p=p
  )
}
F(df1=5,
  df2=7,
  p=F(df1=11,
      df2=13,
      fill="red",
      colour="orange",
      p=F(df1=17,
          df2=19,
          fill="green",
          colour="blue")))

Construcción de la variable aleatoria

fsimulada <- function(n, df1, df2, fill="orange", color="red") {
  # Simular la distribución F
  fsimulada <- replicate(n=n,expr=((sum(rnorm(df1)**2))/df1)/((sum(rnorm(df2)**2))/df2))
  
  # Valores teóricos de la distribución F
  valoresenx <- seq(from=0, to=max(fsimulada), by=0.01)
  densidadf <- df(valoresenx, df1, df2)
  fteorica <- data.frame(x=valoresenx, y=densidadf)
  
  # Crear el gráfico
  ggplot() + 
    geom_histogram(
      mapping=aes(
        x=fsimulada,
        y=after_stat(density)
      ),
      bins=round(sqrt(n)),
      fill=fill,
      color=color
    ) + 
    geom_line(
      data=fteorica,
      mapping=aes(x=x, y=y),
      color="black",
      alpha=0.7,
      linewidth=2
    ) +
    labs(title = paste("Simulación de la Distribución F con df1 =", df1, "y df2 =", df2),
         x = "Valores de F",
         y = "Densidad")
}
fsimulada(n=10000,df1=3,df2=5)

fsimulada(n=10000,df1=17,df2=23,fill="yellow",color="green")

fsimulada(n=10000,df1=31,df2=37,fill="blue",color="purple")

Cálculo de probabilidades

  • \(P_{F_{(3,7)}}(X=1)\)
densidad.f <- function(x,df1,df2){
  ggdistribution(
    func=df,
    x=seq(
      from=0,
      to=9*sqrt((2*df2**2*(df1+df2-2))/(df1*(df2-2)**2*(df2-4))),
      by=0.01
    ),
    df1=df1,
    df2=df2,
    colour="blue",
    p=ggdistribution(
      func=df,
      x=seq(
        from=x-0.05,
        to=x+0.05,
        by=0.01
      ),
      df1=df1,
      df2=df2,
      fill="blue",
      colour="blue"
    )
  )
}
densidad.f(x=1,df1=3,df2=7)

df(x=1,df1=3,df2=7)
## [1] 0.3842511
  • \(P_{F_{(19,29)}}(X{\leq}3)\)
distribucion.f <- function(q,df1,df2,lower.tail=TRUE){
  ggdistribution(
    func=df,
    x=seq(
      from=0,
      to=9*sqrt((2*df2**2*(df1+df2-2))/(df1*(df2-2)**2*(df2-4))),
      by=0.01
    ),
    df1=df1,
    df2=df2,
    colour="blue",
    p=ggdistribution(
      func=df,
      x=if(lower.tail==TRUE){
        seq(
          from=0,
          to=q,
          by=0.01
        )
      } else {
        seq(
          from=q,
          to=9*sqrt((2*df2**2*(df1+df2-2))/(df1*(df2-2)**2*(df2-4))),
          by=0.01
        )
      },
      df1=df1,
      df2=df2,
      fill="blue",
      colour="blue"
    )
  )
}
distribucion.f(q=3,df1=19,df2=29)

pf(q=3,df1=19,df2=29)
## [1] 0.996197
  • \(P_{F_{(19,29)}}(X{\geq}3)\)
distribucion.f(q=3,df1=19,df2=29,lower.tail=FALSE)

1-pf(q=3,df1=19,df2=29,lower.tail=TRUE)
## [1] 0.003802985
pf(q=3,df1=19,df2=29,lower.tail=FALSE)
## [1] 0.003802985
  • \(P_{F_{(31,27)}}(0.5{\leq}X{\leq}2.5)\)
probabilidad.f <- function(a,b,df1,df2){
  ggdistribution(
    func=df,
    x=seq(
      from=0,
      to=9*sqrt((2*df2**2*(df1+df2-2))/(df1*(df2-2)**2*(df2-4))),
      by=0.01
    ),
    df1=df1,
    df2=df2,
    colour = "blue",
    p = ggdistribution(
      func=df,
      x=seq(
        from=a,
        to=b,
        by=0.01
      ),
      df1=df1,
      df2=df2,
      colour ="blue",
      fill = "blue"
    )
  )
}
probabilidad.f(a=0.5,b=2.5,df1=31,df2=27)

pf(q=2.5,df=31,df2=27)-pf(q=0.5,df=31,df2=27)
## [1] 0.9589596

Tarea