2014-12-05

Calculadora y gráfica de la distribución normal no estándar en R

Title Con pequeñas modificaciones de la función creada anteriormente, podemos calcular y representar la probabilidad de un área bajo la curva de la función de densidad de una distribución normal no estándar.

Ejemplo: N(2, 9), media de 2 y varianza de 9.

En primer lugar nos pedirá el valor de la media y de la desviación típica. Si los dejamos en blanco asumirá que es una distribución normal estándar N(0,1). Luego nos solicitará dos valores, el límite inferior x1 y el superior x2. La función pnorm devuelve la probabilidad a la izquierda del valor especificado.

Intervalo: Pr(x1<X<x2) = Pr(X<x2) − Pr(X<x1)

  • Para calcular la probabilidad comprendida dentro de un intervalo, restamos de la probabilidad del límite superior x2 la probabilidad del límite inferior.
Cola izquierda: Pr(X<x2)

  • Para calcular la probabilidad por debajo de un valor, solamente introducimos el límite superior x2. Cuando nos solicite el límite inferior x1, lo dejamos en blanco y presionamos la tecla Entrar.
Cola derecha: Pr(X>x1)

  • Para calcular la probabilidad por encima de un valor, solamente introducimos el límite inferior x1. Cuando no solicite el límite superior x2, lo dejamos en blanco y presionamos la tecla Entrar.

Función

fun <- function(){
  # Pregunta la media y desviación típica 
  media <- as.numeric(readline("¿Cuál es la media?"))
  sd <- as.numeric(readline("¿Cuál es la desviación típica?"))
  # Distribución normal estándar si se dejan en blanco
  if (is.na(media)) {
    media <- 0
  }
  if (is.na(sd)) {
    sd <- 1
  }    
  # Límites
  x1 <- as.numeric(readline("¿Cuál es el valor inferior x1?"))
  x2 <- as.numeric(readline("¿Cuál es el valot superior x2?"))
  # Cola izquierda y derecha
  if (is.na(x1)) {
    x1 <- -100
  }
  if (is.na(x2)) {
    x2 <- 100
  }  
  prob <- pnorm(x2, media, sd) - pnorm(x1, media, sd)
  curve(dnorm(x, mean = media, sd = sd), 
        xlim=c(-4*sd, 4*sd), 
        las = 1, 
        main = bquote("Probabilidad:" ~ .(round(prob, 4))),
        ylab = bquote("Media:" ~ .(media) ~ "Desv. típica:"~ .(sd)))
  cord.x <- seq(x1, x2, 0.1)
  cord.y <- dnorm(cord.x, media, sd)
  polygon(c(x1, cord.x, x2), c(0, cord.y, 0), col = "skyblue") 
  prob
}

Intervalos

El ejemplo del gráfico anterior. Con una N(2, 9), calcular la probabilidad entre -1 y 1: Pr(-1<X<1)

# Ejecutamos la función
fun()
En la consola nos preguntará la media, la desviación típica y los dos límites del intervalo. Tecleamos todos.

¿Cuál es la media?2
¿Cuál es la desviación típica?3
¿Cuál es el valor inferior x1?-1
¿Cuál es el valot superior x2?1
La consola arrojará el resultado:

[1] 0.2107861
Creará el siguiente gráfico con el área sombreada. He modificado el código de la entrada anterior para que muestre la probabilidad en la misma línea del título y el título del eje de ordenadas con la media y desviación típica introducida. He usado la función bquote.

Ejemplo práctico

Si los resultados de un test del inteligencia realizados a unos niños se distribuyen con una media de un coeficiente intelectual de 100 y una desviación típica de 15. ¿Qué proporción de niños se espera que tengan un coeficiente de inteligencia entre 80 y 120?

¿Cuál es la media?100
¿Cuál es la desviación típica?15
¿Cuál es el valor inferior x1?80
¿Cuál es el valot superior x2?120
[1] 0.8175776
Entradas relacionadas:

2 comentarios:

Nube de datos