Representación de la Normal

Si queremos representar la función de densidad de la distribución normal podemos utilizar la función plot().

Una forma de utilizar esta función es tomar un montón de puntos x y para cada uno el valor de la función de densidad.

x <- seq( -5, 5, by = 0.1)
y <- dnorm( x )
plot( x, y, ylim = c( 0, 0.4 ), col = "blue", type = "l", lwd = 2,
      main = "Función densidad N(0,1)" )

En este caso, como es una función continua también podemos pasarle como argumento la propia función y plot() la dibujarÔ eligiendo él los puntos entre los valores que fijemos.

plot( function(x) dnorm( x ), -5, 5, ylim = c( 0, 0.4 ),
      col = "blue", type = "l", lwd = 2,
      main = "Función densidad N(0,1)" )

plot( dnorm, -5, 5, ylim = c( 0, 0.4 ),
      col = "blue", type = "l", lwd = 2,
      main = "Función densidad N(0,1)" )

Representación de la t de Student

En este caso se hace igual que con la normal (tambiƩn es continua). Si queremos representar la t de Student con 2 grados de libertad.

plot( function(x) dt( x, df = 2 ), -5, 5, ylim = c( 0, 0.4 ),
      col = "red", type = "l", lwd = 2,
      main = "Función densidad t de Student df = 2" )

Si queremos aƱadir un grƔfico al que tenƭamos basta con escribir el argumento add = TRUE.

plot( function(x) dt( x, df = 2 ), -5, 5, ylim = c( 0, 0.4 ),
      col = "red", type = "l", lwd = 2,
      main = "Función densidad t de Student df = 2 y 5" )
plot( function(x) dt( x, df = 5 ), -5, 5, col = "green",
      type = "l", lwd = 2, add = TRUE )

Normal y t de Student

Haciendo un bucle for y con el argumento add = TRUE podemos generar un grÔfico con el número de distribuciones t de Student que queramos fijando el grado de libertad donde parar.

TambiƩn podemos aƱadir texto en el punto (x,y) con text( x, y ). Con el argumento cex fijamos el tamaƱo y con un vector fijamos los sucesivos tamaƱos (en cada paso del bucle).

Con col especificamos el color. En este caso, con gray decimos que el color sea gris, y con un vector lo que hacemos es representar mƔs negro cuanto mayor es el grado de libertad.

# Normal
plot( dnorm, -5, 5, ylim = c( 0, 0.4 ), col="blue", lwd=3 )

# t de Student
dfmax <- 9 # hasta cuƔl queremos representar
for(i in 1:dfmax){
  plot( function(x) dt( x, df = i ), -5, 5, add = TRUE,
        lwd = 1, col = gray( 1 - i/dfmax ) )
  text( 0, dt( 0, df = i ), i, cex = 0.5/i+0.5 )
}

También podemos representar la función de densidad de la t de Student con un grado de libertad infinito (el límite). Como esperamos que se solape con la normal dibujamos puntos vacíos con type = 'b'.

# Normal
plot( dnorm, -5, 5, ylim = c( 0, 0.4 ), col="blue", lwd=3 )

# t de Student
dfmax <- 9 # hasta cuƔl queremos representar
for(i in 1:dfmax){
  plot( function(x) dt( x, df = i ), -5, 5, add = TRUE,
        lwd = 1, col = gray( 1 - i/dfmax ) )
  text( 0, dt( 0, df = i ), i, cex = 0.5/i+0.5 )
}

# t de Student grados de libertad Inf
plot( function(x) dt( x, df = Inf ), -5, 5, add = TRUE,
        type = "b", lwd = 2, col = "green" )