10% 20% 30% 40% 50% 60% 70% 80% 90% 100%Como vemos, con la función hemos obtenido los diez deciles de la variable.
0 0 0 1 2 3 4 5 7 10
Sin embargo, no existe ninguna función que nos proporcione un listado o una tabla con todas las medidas estadísticas que puedan interesarnos.
De lo que sí dispone R (por ser en definitiva un lenguaje de programación) es la posibilidad de editar personalmente operaciones aritméticas y
de crear funciones que realicen determinadas operaciones. En el siguiente ejemplo se puede ver cómo se crea una función que
nos devuelva la media, suma, desviación estandard, variancia y rango de una variable. Una vez creada, podremos aplicarla a cualquier
variable.
estadisticos <
-function(x){
+ cat("\
n","La media es",mean(x),"\
n")
+ cat("\
n","La suma es",sum(x),"\
n")
+ cat("\
n","La desviacion estandard es",sd(x),"\
n")
+ cat("\
n","La variancia es",var(x),"\
n")
+ cat("\
n","El rango es","[",range(x),"]","\
n")
+ }5.1
Las funciones deben tener un nombre, en este caso estadisticos, y su cuerpo va encerrado entre llaves ({}) . En el
ejemplo, la función es una sucesión de funciones cat() (que encadena secuencias decaracteres) y las funciones estadísticas
que queremos obtener. Por supuesto, pueden añadir todas las que deseen...
Una vez creada, se puede aplicar a cualquier variable; por ejemplo cars$speed. Así,
estadisticos(cars$speed)
devuelve
La media es 15.4
La suma es 770
La desviacion estandard es 5.287644
La variancia es 27.95918
El rango es [ 4 25 ]
Esta función estará disponible en el espacio de trabajo siempre y cuando sea guardada (por ejemplo, al abandonar R, comunicando que deseamos
guardar las modificaciones) y no sea borrada
del mismo (con rm(estadisticos).
Si queremos que la función esté disponible en cualquier otro espacio de trabajo, podemos introducirla en el fichero de funciones de R. Otra posibilidad sería crear un paquete con nuestras propias funciones, pero esta posibilidad de momento no vamos a considerarla.
Una de las ventajas de R es que es software libre, de modo que se distribuye con el código fuente en formato editable.
De esta manera, podemos modificar el programa según nuestros intereses. En este caso, lo que nosotros vamos a hacer
es introducir una función nueva,
creada por nosotros mismos, en el paquete base de R.
Para ello (en Linux) no tenemos más que abrir el fichero /usr/lib/R/library/base/R/base (la localización puede variar en función
de la distribución de Linux) con cualquier editor de texto y teclear la función tal y como lo hemos hecho en R. Por supuesto,
debemos tener permiso de escritura sobre el fichero, cuyo propietario será por defecto root. Al guardar los cambios, la
nueva función estará disponible siempre que arranquemos R ya que el paquete base se carga automáticamente.
Como hemos adelantado anteriormente, en R también podemos construir expresiones algebráicas que nos permiten
calcular medidas no implementadas en los paquetes con los que trabajemos. Por ejemplo, si necesitamos conocer la media
geométrica de una variable, sabiendo que se define como
^
(1/length(cars$dist))
<
-function(x) {prod(x)^
(1/length(x)) }