Última actualización:
jueves 04 abril 2019, 23:27:25Si 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)" )
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 )
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" )