Sei sulla pagina 1di 31

Introduccin al R

Vctor Morales Oate 20/02/2013

ndice
1. Introduccin 1.1. Caractersticas de R y su funcionamiento . . . . 1.1.1. Caractersticas . . . . . . . . . . . . . . . 1.1.2. Cmo funciona? . . . . . . . . . . . . . . 1.2. Entorno Grco . . . . . . . . . . . . . . . . . . . 1.3. Objetos en R . . . . . . . . . . . . . . . . . . . . 1.3.1. Objetos . . . . . . . . . . . . . . . . . . . 1.3.2. Objetos en R . . . . . . . . . . . . . . . . 1.3.3. Nombres de los objetos y consideraciones 1.4. Ayuda de R . . . . . . . . . . . . . . . . . . . . . 2. Operaciones con Objetos 2.1. Operaciones bsicas en R . . . . . . . 2.1.1. Creacin de secuencias . . . . . 2.1.2. Funciones bsicas y operaciones 2.2. Bluces . . . . . . . . . . . . . . . . . . 3. Funciones grcas 3.1. Grcas de alto nivel . 3.1.1. Plot . . . . . . 3.1.2. Boxplot . . . . 3.1.3. Pie . . . . . . . 3.2. Grcas de bajo nivel 4. Funciones estadsticas 5. Anlisis de Varianza . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 2 2 3 3 4 4 5 9 10 11 11 12 12 14 15 15 16 18 20 21 22 24

. . . . . . . . . . . . . . . . con matrices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

6. Estadstica Descriptiva, bases de datos con factor de expansin 26 6.1. Estadsticas descriptivas mediante el diseo muestral de la encuesta. 27

1.

Introduccin

R es un sistema para anlisis estadsticos y grcos creado por Ross Ihaka y Robert Gentleman1 . Al principio R puede resultar un tanto complejo para una persona que no ha tenido experiencia en el manejo de paquetes estadsticos. Esto es verdad en cierta medida. Sin embargo, la curva de aprendizaje para este tipo de usuario, pese a ser lenta al principio, llega a tener excelentes resultados. Una vez que el usuario se familiariza con el lenguaje y la potencialidad de la herramienta, es capaz de desarrollar funciones y aplicaciones personalizadas. El uso de un objeto para el manejo de R es una ventaja importante que le permite mayor versatilidad en el manejo de datos. Adems, R es un paquete totalmente libre que se distribuye bajo la licencia GNU GPL o General Public Lisence2 . Un conocimiento bsico de Ingls ayuda a manejar R con mayor facilidad. Se abordar en el presente documento las herramientas necesarias para que la mencionada curva de aprendizaje sea fcil de llevar y que el usuario pierda el miedo al uso de R. Es importante mencionar que la herramienta RStudio3 es necesaria para que el usuario tenga un interfase ms amigable y de ese modo aprovechar la potencialidad de R.

1.1.
1.1.1.

Caractersticas de R y su funcionamiento
Caractersticas Posee una variedad de tcnicas estadsticas de fcil manejo y generacin grca verstil y avanzada. Es un lenguaje completo de programacin, lo cual permite que usuarios avanzados incrementen la funcionalidad mediante la denicin de funciones y paquetes. Es una herramienta de uso intensivo dentro de la comunidad cientca. Posee capacidad de combinar, sin censuras, anlisis preempaquetados con anlisis ad-hoc, especcos para una situacin. Capacidad de combinar los diferentes objetos y sus operaciones. Genera grcos de alta calidad (Produccin de grcas de papers). La comunidad de R es muy amplia y dinmica (Ej., crecimiento del nmero de paquetes), integrada por estadsticos de gran renombre(Ej., J. Chambers, L. Terney, B. Ripley, etc). Extensiones especcas a reas nuevas (bioinformtica, geoestadstica, modelos grcos).

1 Ihaka R. & Gentleman R. 1996. R: a language for data analysis and graphics. Journal of Computational and Graphical Statistics 5: 299314. 2 http://www.gnu.org/licenses/gpl.html 3 http://www.rstudio.com/

Un lenguaje orientado a objetos. Muy parecido a Matlab y Octave, y con sintaxis parecidas a C y C++. 1.1.2. Cmo funciona?

El siguiente esquema4 presenta el funcionamiento de R:

Figura 1: Esquema de funcionamiento de R Se puede apreciar que R hace un uso efectivo de las memorias que dispone el ordenador. La memoria activa se reere a la memoria RAM del computador. En este lugar se almacenan las funciones, datos y resultados. Todos ellos son objetos (se detallar mas adelante la denicin de objetos). Por otro lado e interrelacionadamente, R hace uso de la memoria del disco duro. En este lugar se ubican las libreras del paquete as como datos almacenados y las imgenes generadas. Complementariamente, R mantiene una comunicacin permanente con internet para la descarga de paquetes as como para el uso y consulta de las ayudas del programa.

1.2.

Entorno Grco

R y RStudio presentan dos componentes muy importantes en el manejo de la herramienta, a saber: Consola y Scripts. RStudio en su afn de una mejor organizacin e implementacin de R tradicional, presenta un componente de objetos y otro de ayudas e imgenes, entre otros.
4 Tomado

de R para principiantes, Emmanuel Paradis

Figura 2: Pantalla de RStudio Se puede apreciar en la gura 2 que el entorno que presenta RStudio est dividido en 4 secciones. La parte superior derecha corresponde al Script que es donde se escriben los cdigos de R para ser guardados y ejecutados cuando sea necesario como rutinas predeterminadas. En la parte inferior derecha se encuentra la Consola de R. En esta consola se pueden ejecutar comandos directamente y se presentan los resultados de las instrucciones, pero se recomienda usar el Script para organizar mejor el cdigo. Hasta este momento se tiene bastante similitud entre R y RStudio en cuanto a estos dos componentes. Complementariamente, RStudio presenta en la parte superior derecha los Objetos creados por el usuario. Finalmente, en la parte inferior derecha se presenta un apartado para desplegar las ayudas del paquete, directorios de trabajo y los grcos de resultado.

1.3.
1.3.1.

Objetos en R
Objetos

Los objetos5 son entidades que tienen un determinado estado, comportamiento (mtodo) e identidad. Los objetos tienen las siguientes caractersticas: El estado est compuesto de datos o informaciones; sern uno o varios atributos a los que se habrn asignado unos valores concretos (datos).
ca
5 http://zarza.usal.es/~fgarcia/doc/tuto2/I_1.htm,

Universidad de Salamanca, Jos Gar-

El comportamiento est denido por los mtodos o mensajes a los que sabe responder dicho objeto, es decir, qu operaciones se pueden realizar con l. La identidad es una propiedad de un objeto que lo diferencia del resto; dicho con otras palabras, es su identicador (concepto anlogo al de identicador de una variable o una constante). En resumen, un objeto es una entidad que contiene datos, operaciones y un nombre. 1.3.2. Objetos en R

Como ya se ha dicho, los objetos son aquellos que tienen datos, operaciones y un nombre. En R casi todo es un objeto. A continuacin abordaremos cada uno de los objetos en R. Vector: Coleccin ordenada de objetos del mismo tipo. Veamos un ejemplo en R, digite en su Script (se debe ejecutar cada lnea mediante ctrl+R o ctrl+ENTER): x <- c(1, 2, 3); y <- c("a", "b", "Hola") z1 <- c(TRUE, TRUE, FALSE) Es importante notar que los elementos del vector son del mismo tipo, es decir que no se puede tener vectores numricos y alfabticos en un mismo vector. Otro aspecto importante del ejemplo anterior es que se puede tener dos instrucciones en una misma lnea si se los separa por un ; como se puede apreciar al crear los vectores x e y . El vector x es numrico, y es alfabtico y cada elemento debe estar contenido entre comillas y por ltimo el vector z es un vector lgico, es decir que responde a condiciones verdaderas o falsas. Note que declarar c antes del parntesis es lo que le informa a R que el contenido del parntesis es un vector. Para visualizar (imprimir) el contenido de los vectores (objetos) creados se tiene varias opciones: Escribir el nombre del objeto en la siguiente lnea del Script y ejecutar esa lnea. Escribir el nombre del objeto en la consola de R y oprimir ENTER. Si est trabajando en RStudio se puede dar click (en la parte superior derecha) sobre el objeto creado. Observe que se usa el signo <- para nombrar el objeto deseado. Este signo se llama asignacin. Se puede usar = en lugar del signo de asignacin. Sin embargo, se recomienda usar el signo de asignacin. Esto se debe a que de el signo = se usa tambin en instrucciones lgicas (que se ver ms adelante). Adems usar el signo de asignacin permite una mejor identicacin de los objetos creados en el Script. 5

Array: Es una generalizacin multidimensional de un vector. Por lo tanto son elementos del mismo tipo. x <- array(1:20, dim=c(4,5)) # ESTE ES UN COMENTARIO Habiendo ejecutado la instruccin anterior e imprimindola, usted debe visualizar lo siguiente: > x [1,] [2,] [3,] [4,] [,1] [,2] [,3] [,4] [,5] 1 5 9 13 17 2 6 10 14 18 3 7 11 15 19 4 8 12 16 20

La palabra array es lo que hace que R reconozca que lo que est contenido en el parntesis sea un objeto array. En esta instruccin lo que se hace crear un array (tambin llamado arreglo) de dimensin 5 por 5. Es decir que se lo puede interpretar como una matriz con valores del 1 al 20 (1:20). La potencialidad del array est en el manejo adecuado de las dimensiones del mismo. Es decir, si se tiene un array de tres dimensiones, usted debe imaginar que tiene un cubo que tiene cajas y cada caja contiene un nmero del array. En el ejemplo anterior, lo anlogo sera un cuadrado que contiene cada valor del arreglo. Se puede tener arreglos de mayores dimensiones a tres. Observe que se ha usado a x como nombre del objeto para el array. De haber ejecutado correctamente el comando anterior del ejemplo del vector x, usted notar que la informacin se sobreescribe, es decir que los valores que corresponden a x son los del ltimo comando ejecutado. Finalmente, advierta que se ha ingresado el signo de numeral (#) despus de la instruccin de creacin del arreglo x. Este signo sirve para comentar cada lnea de cdigo generado. Si se desea comentar bloques de cdigo en el Script se debe usar comillas simples ( ) el inicio y al nal del bloque. Dataframe: Como array, pero permiten elementos (columnas que funcionan como vectores) de distintos tipos. Es el objeto ms habitual para manejo de datos procedentes de experimentos. my.data.frame <- data.frame(ID = c("Carla", "Pedro", "Laura"), Edad = c(10, 25, 33), Ingreso = c(NA, 34, 15), Sexo = c(TRUE, FALSE, TRUE), Etnia = c("Mestizo","Afroecuatoriana", "Indgena")) Habiendo ejecutado la instruccin anterior e imprimindola, usted debe visualizar lo siguiente:

> my.data.frame ID Edad Ingreso Sexo Etnia 1 Carla 10 NA TRUE Mestizo 2 Pedro 25 34 FALSE Afroecuatoriana 3 Laura 33 15 TRUE Indgena Es decir que usted ha creado un objeto que contiene informacin numrica, alfabtica y lgica dispuestas en forma de columnas. Cada columna, a diferencia de lo que suceda en un arreglo, puede tener un nombre en particular. En nuestro ejemplo las etiquetas de las columnas son: ID, Edad, Ingreso, Sexo y Etnia. La columna Ingreso presenta un valor particular llamado NA. Este valor corresponde a lo que se conoce como valor perdido (o missing value en ingls). En este ejemplo se puede ver que el cdigo para crear el objeto my.data.frame est dispuesto en varias lneas. Para ejecutar la instruccin debe sealar todo el cdigo y despus ejecutarlo. Factor: Funciona como un tipo de vector para datos categricos. t <-factor(letters[1:5], labels="letter") Habiendo ejecutado la instruccin anterior e imprimindola, usted debe visualizar lo siguiente: > t [1] letter1 letter2 letter3 letter4 letter5 Levels: letter1 letter2 letter3 letter4 letter5 Se ha creado un objeto que repite la palabra que se encuentra en labels. En este ejemplo se introduce la primera funcin predeterminada en R llamada letters. Esta funcin crea las 26 letras del alfabeto romano. Veamos un segundo ejemplo: t <-- factor(letters[1:5]) Habiendo ejecutado la instruccin anterior e imprimindola, usted debe visualizar lo siguiente: > t [1] a b c d e Levels: a b c d e Como se mencion anteriormente, se ha creado un factor con etiquetas de la 1 a la cinco conteniendo las primeras 5 letras del alfabeto romano. List: Es un "vector generalizado". Cada lista est formada por componentes (que pueden ser otras listas), y cada componente puede ser de un tipo distinto. Son unos "contenedores generales.

n s b x

= = = =

c(2, 3, c("aa", c(TRUE, list(n,

5) "bb", "cc", "dd", "ee") FALSE, TRUE, FALSE, FALSE) s, b, 3)

Habiendo ejecutado la instruccin anterior e imprimindola, usted debe visualizar lo siguiente (para x): > x [[1]] [1] 2 3 5 [[2]] [1] "aa" "bb" "cc" "dd" "ee" [[3]] [1] TRUE FALSE TRUE FALSE FALSE [[4]] [1] 3 Advierta que en este ejemplo se usa el signo = en vez del de asignacin para crear los objetos. Por otro lado, la lista x creada tiene dimensin 4. Cada uno de los elementos de la lista x responde a los vectores creados n,s y b adems de un elemento incluido directamente en la lista 3. Si se desea imprimir un elemento de la lista x en particular, se debe ejecutar: x[3] Lo cual mostrar: > x[3] [[1]] [1] TRUE FALSE

TRUE FALSE FALSE

Es decir que muestra el tercer elemento de la lista, corresponde al vector b. La forma en que se ha impreso el elemento 3 de la lista x es mediante corchetes. Funciones: Las funciones creadas en R no son estrictamente un objeto, pero se cubrir esta apartado en esta seccin por razones didcticas. f_x=function(x){ y=x^2 y } En la instruccin anterior se ha puesto como ejemplo la funcin f (x) = x2 . Es decir que cada valor de entrada debe generar el cuadrado del nmero ingresado en la funcin. Si est usando RStudio, note que en la parte superior derecha se ha creado un apartado llamada Functions que es donde se almacenan todas las funciones creadas por el usuario. Para probar que la funcin trabaja correctamente: 8

f_x(3) Lo cual muestra: > f_x(3) [1] 9 Es decir que se ha generado el cuadrado del nmero ingresado en la funcin f_x construida. 1.3.3. Nombres de los objetos y consideraciones

Los nombres vlidos para un objeto son combinaciones de letras, nmeros, y el punto ("."). Los nombres no pueden empezar con un nmero. R es "case-sensitive". Es decir que x no es igual a X, son nombres de objetos diferentes. Hay nombres reservados ("function", "if", etc). Se debe evitar el uso de nombres que R ya tiene guardados en bases de datos (swiss), funciones (mean), entre otros. Otras consideraciones: Las asignaciones se hacen con"<-", y es buen estilo el rodear" <"por un espacio a cada lado. x<-1:5 # Mal estilo x <-1:5 # Mucho mejor Es importante sealar que, en este punto, el usuario habr reconocido ciertos patrones en cuanto al uso de ciertos simbolos en R. Entre estos patrones se puede mencionar: Los parntesis () son usados para englobar elementos de un objeto as como para el uso de funciones. La coma ,, se usa para delimitar cada elemento de los objetos. Los corchetes son usados para sealar posiciones de un objeto. Las llaves {} son usadas para delimitar funciones. Tambin se usa estos signos para englobar lneas de cdigo que se desea ejecutar conjuntamente, en el caso de lazos, entre otros. Las comillas dobles se usan para que R reconozca lo que se encuentre dentro de ellas como texto. El numeral # se usa para comentar una lnea de cdigo Las comillas simples se usan para comentar bloques de cdigo. 9

1.4.

Ayuda de R

La ayuda de R proporciona informacin de cada una de las funciones de las que dispone. Cada librera tambin engloba un conjunto de funciones que tienen su respectiva ayuda. help(lm) Esta funcin help(funcin) le permitir observar una pantalla que contiene los detalles de la funcin que desee. Si trabaja en RStudio, esta ayuda se despliega en la parte inferior derecha. Otra forma de acceder a la ayuda es: ?lm Es decir, ?funcin. Esto producir el mismo efecto que help(funcin). A travs de un conocimiento medio de Ingls, el usuario puede enterarse de la estructura de la funcin as como de las opciones disponibles en la misma. En general las funciones reportan la siguiente informacin6 : Description: descripcin breve. Usage: para una funcin, proporciona el nombre de la misma con todos sus argumentos y los posibles valores por defecto (opciones); para un operador describe su uso tpico. Arguments: para una funcin, describe en detalle cada uno de sus argumentos. Details: descripcin detallada. Value: si se aplica, el tipo de objeto retornado por la funcin o el operador. See Also: otras pginas de ayuda con funciones u operadores similares. Examples: algunos ejemplos que generalmente pueden ser ejecutados sin abrir la ayuda con la funcin examples(). En general, R proporciona una ayuda extensa de las funciones que contiene. Es importante que se tome con mayor atencin los elementos Arguments y Examples de la ayuda. Existen foros en internet que proporcionan ayudas un poco ms especcas para alguna rutina que presente algn tipo de problema. Por ejemplo: http://stackoverow.com/questions/tagged/r.
6 Tomado

de R para principiantes, Emmanuel Paradis

10

2.

Operaciones con Objetos

En general, R funciona como una calculadora normal. Por ejemplo, si usted digita en la consola: 6+2*3 Obtendr como resultado: 12 Advierta que en este caso no se ha asignado este resultado a ningn objeto, es decir que lo que se ha digitado en el ejemplo anterior no es un objeto. Si se desea guarda el resultado de la operacin en un objeto se debe escribir: x <- 6+2*3 Lo cual no genera ningn resultado inmediatamente, pero para ver el resultado deber imprimir el valor del objeto x. Con lo cual se reporta: > x [1] 12 De esta manera puede disponer del valor del objeto (en este caso 12 para el objeto x) cuando lo requiera. Por ejemplo: x <- 6+2*3 y <- 3 As tiene dos objetos, x que contiene el valor 12 e y que contiene el valor 3. Una vez realizado esto, puede operar nuevamente con los resultados: > x+y [1] 15 As, puede realizar las operaciones bsicas que desee.

2.1.

Operaciones bsicas en R

La siguiente tabla muestra un resumen de los operadores que pueden ser usados en R para el manejo de objetos. Aritmticos adiccin substraccin multiplicacin divisin potencia mdulo divisin de enteros Operadores Comparativos < menor que > mayor que <= menor o igual >= mayor o igual == igual != diferente de Lgicos !x NO lgico x&Y Y lgico x && y Y lgico x|y O lgico x || y O lgico xor(x, y) O exclusivo

+ * / ^ %% %/ %

Cuadro 1: Operadores lgicos 11

Antes de continuar con el manejo de las operaciones con objetos, es importante sealar la creacin de secuencias en R. 2.1.1. Creacin de secuencias

Una secuencia de nmeros, por ejemplo del 1 al 20 se realiza: x <- 1:20 Este genera un vector con 20 datos del 1 al 20. Otra forma de generar secuencias es usar la funcin seq. seq(0,10,2) Esto genera una secuencia de nmeros enteros desde el 0 hasta el 10 de dos en dos. Es decir que genera los nmeros pares del 0 al 10. Es as que la funcin seq presenta la siguiente estructura: seq(from=0, to=10, by=2) Es decir que el primer argumento es el valor inicial, el segundo es el valor nal y by representa el incremento. Para la creacin de secuencias, otra de las funciones usadas ampliamente es la funcin rep. Esta funcin crea un vector con elementos idnticos: rep(5,10) [1] 5 5 5 5 5 5 5 5 5 5 Que tambin puede ser elementos no numricos: rep("Lunes",5) [1] "Lunes" "Lunes" "Lunes" "Lunes" "Lunes" 2.1.2. Funciones bsicas y operaciones con matrices

La siguiente tabla resume algunas funciones bsicas para realizar operaciones con vectores y objetos en general: Veamos algunos ejemplos a partir de la tabla anterior: Usando sum: x <- c(4,5,3,2) sum(x) [1] 14 Reporta la suma de los elementos de x. Usando which.max:

12

Funcin sum(x) prod(x) max(x) min(x) which.max(x) which.min(x) length(x) round(x, n) sort(x) which(x == a)

Descripcin suma de los elementos de x producto de los elementos de x valor mximo en el objeto x valor mnimo en el objeto x devuelve el ndice del elemento mximo de x devuelve el ndice del elemento mnimo de x nmero de elementos en x redondea los elementos de x a n cifras decimales ordena los elementos de x en orden ascendente; para hacerlo en orden descendente: rev(sort(x)) Devuelve un vector de los ndices de x si la operaciones (TRUE (en este ejemplo, los valores de i para los cuales x[i]==a).El argumento de esta funcin debe ser una variable de tipo lgico

Cuadro 2: Funiciones bsicas para el manejo de objetos which.max(x) [1] 2 Reporta la posicin en la que se encuentra el mximo valor en el objeto x. Ahora veamos algunas operaciones bsicas con matrices. En este contexto es apropiado ver un par de funciones que nos permiten agrupar nmeros en forma de matriz. Estos comandos son cbind y rbind. Veamos su uso en el siguiente ejemplo: m1 <- matrix(1, nr = 2, nc = 2) m2 <- matrix(2, nr = 2, nc = 2) Aplicando rbind a las matrices creadas tendremos: > rbind(m1,m2) [,1] [,2] [1,] 1 1 [2,] 1 1 [3,] 2 2 [4,] 2 2 Aplicando cbind a las matrices creadas tendremos: > cbind(m1,m2) [,1] [,2] [,3] [,4] [1,] 1 1 2 2 [2,] 1 1 2 2

13

Como el usuario habr notado, rbind agrupa las matrices o vectores en las mientras que cbind los agrupa en columnas. Para multiplicar matrices se usa el operador %* %: > m1 %* %m2 [,1] [,2] [1,] 4 4 [2,] 4 4 Otras operaciones importantes en matrices son t y solve. Estas funciones obtienen la transpuesta de la matriz y sy inversa respectivamente.

2.2.

Bluces

Una ventaja de R comparado con otros programas estadsticos con mens y botones es la posibilidad de programar de una manera muy sencilla una serie de anlisis que se puedan ejecutar de manera sucesiva. Por ejemplo, denamos un vector con 50.000 componentes y calculemos el cuadrado de cada componente primero usando las propiedades de R de realizar clculos componente a componente y luego usando un ciclo. Normal: x <- 1:50000 y <- x^2 Con bucles: z=0 for (i in 1:50000) z[i] <- x[i]^2 El usuario puede notar que en este caso el uso de un bucle para calcular los cuadrados de los valores del vector x es un poco ms demorado que hacindolo de la manera tradicional. Esto indica que el uso de bucles debe ser realizado con cierta selectividad por parte del usuario. En general la estructura de la sintaxis de un bucle es:

Figura 3: Estructura de un bucle 14

Los bucles pueden manejar ejemplos numricos y no numricos. Numricos (ivalores): > for (i in c(3,2,9,6)) {print (i^2)} [1] 9 [1] 4 [1] 81 [1] 36 No numricos: > medios.transporte <- c("carro", "camion","metro", "moto") > for (vehiculo in medios.transporte) + {print (vehiculo)} [1] "carro" [1] "camion" [1] "metro" [1] "moto" Sin duda el uso de bucles en la elaboracin de una rutina en particular puede llegar a parecer una tarea bastante extensa, pero siempre guarda la estructura aqu mencionada.

3.

Funciones grcas

Resultara un curso exclusivo de gracacin en R para poder dar a conocer todas las posibilidades de R en este campo. Para ilustrar algunas de las opciones que se pueden lograr con el uso de R digite demo(graphics) en la consola. En general no se puede asignar una grca a un objeto. Las grcas son asignadas a dispositivos grcos o ventanas donde se presenta el grco ejecutado. Existen dos tipos de funciones grcas: de alto nivel y de bajo nivel.

3.1.

Grcas de alto nivel

Estas grcas son generadas por comandos directos. Esto signica que el grco que se desea es generado directamente con la funcin. Entre otras, la siguiente tabla recoge las principales funciones para la generacin de grcas de alto nivel: Cada una de las funciones grcas expuestas en la tabla anterior tiene una batera de opciones para personalizarlas. Sin embargo, los comandos grcos de alto nivel tienen ciertas opciones transversales, las principales son: Veamos algunas de las funciones grcas ms usadas:

15

Funcin plot(x) plot(x,y) pie(x) boxplot(x) hist(x) barplot(x)

Descripcin gracar los valores de x (en el eje y) ordenados en el eje x grco bivariado de x (en el eje x) y y (en el eje y) grco circular tipo pie Grco de caja y bigotes histograma de las frecuencias de x histograma de los valores de x Cuadro 3: Funciones grcas de alto nivel

Opcin add=FALSE axes=TRUE type="p" xlim=, ylim= main= sub=

Descripcin si es TRUE superpone el grco en el ya existente (si existe) si es FALSE no dibuja los ejes ni la caja del grco especica el tipo de grco; "p": puntos, "l": lneas, "h": lneas verticales, "s": escaleras, los datos se representan como la parte superior de las lneas verticales, entre otros especica los lmites inferiores y superiores de los ejes; por ejemplo con xlim=c(1, 10) o xlim=range(x) Ttulo principal; debe ser de tipo caracter sub-ttulo (escrito en una letra ms pequea) Cuadro 4: Principales opciones grcas

3.1.1.

Plot

Digite: x<- seq(10,20,1) plot(x) Con lo cual se tiene:

16

Figura 4: Plot con una variable El grco presenta en el eje de las x una escala ascendente por defult de R. empieza en 1 termina en 11. El eje y recoge la informacin del objeto gracado Usando dos variables: x<- seq(10,20,1) y<- seq(30,40,1) plot(x,y)

17

Figura 5: Plot con dos variables La gura toma pares ordenados, es decir que el eje x responde a los valores del objeto x mientras que el eje y responde a los valores del eje y. 3.1.2. Boxplot

Tambin conocido como grco de caja y bigotes, reeja grcamente el resumen de estadsticas principales (Min,Q1,Mediana,Q3,Max, Outlayers). Para ejemplicar este comando grco, abramos la base de datos Mundo.csv y ejecutar los siguientes comandos7 : boxplot(PNB_PC) boxplot(log(PNB_PC)) De esta manera se tienen los siguientes grcos:
7 Recuerde usar el comando attach(datos) despus de haber importado la base de datos para poder usar las etiquetas de la base libremente

18

Figura 6: Boxplot del Producto Nacional Bruto per cpita Si al aplicar el boxplot sobre una variable se tiene un resultado como muestra Directo, se debe usar el logaritmo para una mejor lectura de la variable. Para obtener un boxplot de varias categoras (en nuestro ejemplo continentes) se tiene que crear un objeto como factor que recoja las etiquetas de las categoras y luego se graca el boxplot: fregion = factor(REGION,labels=c("Africa","America","Asia", "Europa","Oceania")) boxplot(log(PNB_PC)~fregion, col=rainbow(5), main="Varios Boxplot a la vez con etiquetas")

19

Figura 7: Boxplot de varias categoras Note que se ha usado en este ltimo grco ciertas opciones como main y col. Estas opciones pueden ser usadas y ejecutadas por el usuario en grcos anteriores si dicultad. 3.1.3. Pie

Recuerde que un grco de pie tiene sentido nicamente si se trata de una variables con categoras de suma 1. z.pie<-c(20,40,10,30) names(z.pie) <- c("Soltero", "Casado","Viudo", "Divorciado") pie(z.pie, col = c("purple", "violetred1", "green3","cornsilk"))

20

Figura 8: Grco de PIE

3.2.

Grcas de bajo nivel

Estas funciones sirven para agregar detalles al grco principal (generado por funciones grcas de alto nivel). Funcin points(x, y) lines(x,y) segments(x0, y0, x1, y1) abline(a,b) Descripcin Agrega puntos Mismo que points pero con lneas dibuja una lnea desde el punto (x0,y0) hasta el punto (x1,y1) dibuja una lnea con pendiente b e intercepto a

Cuadro 5: Funciones grcas de bajo nivel Una de las funciones grcas importantes es el comando curve. Esta opcin permite gracar una funcin en un determinado rango: curve(x^3-3*x,-2,2) abline(h=0)

21

Figura 9: Grco de la funcin x3 3x en el intervalo: 2 x 2 Note que en est ejemplo se ha hecho uso de una funcin de bajo nivel (abline) que permite dibujar la lnea roja.

4.

Funciones estadsticas

Una forma rpida de obtener un resumen estadstico de una variable continua es la siguiente8 : > summary(PNB_PC) Min. 1st Qu. Median 126 354 995 Mean 3rd Qu. 3635 4700 Max. 21330 NAs 7

Una funcin como summary se le conoce como una funcin genrica. Este tipo de funciones reportan una salida diferente en segn el objeto al que se le aplique. Vemos que usando un vector de datos continuos reporta el valor mnimo, primer cuartil, mediana, media, tercer cuartil, valor mximo y nmero de valores perdidos (missing values ). Para obtener valores individuales de los estadsticos bsicos se aplican las siguientes funciones: mean, var, sd y corr. A continuacin veamos ejemplos de cada una usando la misma variable anterior para vericar los datos. Media
8 Use la base de datos Mundo.csv. No olvide usar attach para usar los nombres de las variables libremente

22

> x <- mean(PNB_PC,na.rm=TRUE) > x [1] 3635.309 note que se ha usado la opcin na.rm. Esta opcin indica que no se tome en cuenta los valores perdidos en el clculo del estadstico solicitado. Si no se usa esta opcin, el valor reportado sera NA. Varianza > x <- var(PNB_PC,na.rm=TRUE) > x [1] 26768678 Desviacin Estndar > x <- sd(PNB_PC,na.rm=TRUE) > x [1] 5173.846 Correlacin: > x <- cor(tasa_ferti,tasa_mort,use="complete.obs") > x [1] 0.5596316 Note que en el caso de la correlacin, dado que se tiene valores perdidos en las variables, se debe usar la opcin: use="complete.obs" para obtener un resultado. Recordemos un par de detalles de la correlacin: La correlacin esta siempre entre -1 y 1. Lo primero que se interpreta es el signo Directamente proporcional si es positivo, si es negativo pasa lo contrario Se interpreta es la fuerza de la relacin. Si esta ms cerca de 1, signica que si aumenta una variable, la otra tambin. Nmeros intermedios, reducen la fuerza de la relacin. Se puede realizar un anlisis grco til a partir de variables normalizadas en dos dimensiones. Abra la base de datos tabla2_8.csv 9 para realizar este anlisis. Normalicemos las variables10 TOTALEXP y FOODEXP y realicemos un grco de las variables originales as como las variables normalizadas.
9 gasto 10 X

en comida y gasto total (en rupias) para una muestra de 55 familias rurales de India =
X X x

norm

23

totnorm <- (TOTALEXP-mean(TOTALEXP))/sd(TOTALEXP) foodnorm <- (FOODEXP-mean(FOODEXP))/sd(FOODEXP) plot(TOTALEXP,FOODEXP,col="blue") plot(totnorm,foodnorm,col="blue") abline(v=0,h=0,col="red") De donde se tiene:

Figura 10: Grcos de variables normales y normalizadas Se puede apreciar que ambos grcos se muestran similares. Esto es de esperarse dado que la normalizacin mantiene los mismo datos pero de una forma reescalada y con media cero. De este modo las variables normalizadas nos permiten realizar un anlisis descriptivo de las variables: Cuadrante 1: gasto total y en comida en comida mayor que el promedio Cuadrante 2: gasto total inferior al promedio, pero gastan ms que el promedio en comida Cuadrante 3: tienen menos gasto total que el promedio y el gasto en comida es menor al promedio Cuadrante 4: tiene un gasto total mayor el promedio pero su gasto en comida es menor al promedio

5.

Anlisis de Varianza

En general, el anlisis de varianza se utiliza para responder a una incgnita: Existe diferencia signicativa entre las medias de los grupos? 24

Analicemos los siguientes datos11 : data(InsectSprays) Realizamos una tabla de frecuencias de los datos: > table(InsectSprays$spray) A B C D E F 12 12 12 12 12 12 Note que el signo $ sirve para describir la variable a la que nos referimos dentro de la base de datos que estamos usando. Una forma de analizar si hay diferencia en las medias los grupos es realizar un boxplot por cada tipo de spray:

Figura 11: Boxplot por tipo de spray Se puede apreciar que es probable que exista diferencia en las medias entre varios grupos. Por ejemplo, es probable que exista diferencia en las medias entre el tipo A con el tipo C. Es este punto usemos el anlisis ANOVA para evidenciar esta diferencia: > aov.spray1 <- aov(sqrt(count)~spray, data = InsectSprays) > summary(aov.spray1) Df Sum Sq Mean Sq F value Pr(>F) spray 5 88.44 17.688 44.8 <2e-16 *** Residuals 66 26.06 0.395 --Signif. codes: 0 *** 0.001 ** 0.01 * 0.05 . 0.1 1
11 Nmero

de insectos combatidos con diferentes tipos de insecticidas

25

En el anlisis ANOVA se tienen las siguientes hiptesis: Ho : u1 = u2 = . . . = un Ha : al menos una es dif erente Es decir que dado que nuestro p valor del estadstico F es menor a 0.05 es signicativo al 95 % de conanza y se puede rechazar la hiptesis nula. De modo que si hay diferencias signicativas en el tipo de insecticidas. Finalmente, para evidenciar la diferencia dentro del grupo de usa el anlisis Tukey: > TukeyHSD(aov.spray1,"spray") Tukey multiple comparisons of means 95 % family-wise confidence level Fit: aov(formula = sqrt(count) ~ spray, data = InsectSprays) $spray diff lwr upr p adj B-A 0.1159530 -0.6369601 0.8688661 0.9975245 C-A -2.5158217 -3.2687349 -1.7629086 0.0000000 D-A -1.5963245 -2.3492377 -0.8434114 0.0000006 E-A -1.9512174 -2.7041305 -1.1983042 0.0000000 F-A 0.2579388 -0.4949744 1.0108519 0.9144964 C-B -2.6317747 -3.3846879 -1.8788616 0.0000000 D-B -1.7122775 -2.4651907 -0.9593644 0.0000001 E-B -2.0671704 -2.8200835 -1.3142572 0.0000000 F-B 0.1419858 -0.6109274 0.8948989 0.9935788 D-C 0.9194972 0.1665841 1.6724103 0.0080813 E-C 0.5646043 -0.1883088 1.3175175 0.2512638 F-C 2.7737605 2.0208474 3.5266736 0.0000000 E-D -0.3548928 -1.1078060 0.3980203 0.7366389 F-D 1.8542633 1.1013502 2.6071764 0.0000000 F-E 2.2091561 1.4562430 2.9620693 0.0000000 De esta manera se puede ver si existe diferencia signicativa dentro de las categoras del grupo con la misma regla usada en el anlisis ANOVA. Por ejemplo, no existe diferencia signicativa entre los tratamientos A y B pero si existe diferencia entre el A y el C.

6.

Estadstica Descriptiva, bases de datos con factor de expansin

Uno de los usos ms frecuentes de la obtencin de estadsticas descriptivas es cuando nos enfrentamos al uso de bases de datos con factores de expansin. El paquete que nos ayuda a manejar este problema es Hmisc.

26

install.packages(Hmisc) library(Hmisc) Recuerde que un paquete debe ser instalado solamente una vez, pero se debe llamar a la librera (library) cada vez que se lo use. La siguiente tabla recoge algunas funciones bsicas del paquete: Funcin wtd.mean wtd.var wtd.quantile wtd.table Descripcin Calcula la media pesada Calcula la varianza pesada Obtiene los cuantiles pesados Obtiene las frecuencias pesadas

Cuadro 6: Funciones de estadsticos bsicos de Hmisc Veamos un ejemplo. Abra la base de datos de personas de diciembre de 2012 ENEMDU. Ejecute: datos=read.dta("per12_2010.dta",convert.factors=TRUE) > table(p02) p02 hombre mujer 41208 41566 > wtd.table(p02,weights=fexp) $x [1] "hombre" "mujer" $sum.of.weights hombre mujer 7056148 7223538 Se puede apreciar a diferencia en los valores que incluyen los pesos de las variables.

6.1.

Estadsticas descriptivas mediante el diseo muestral de la encuesta.

La ENEMDU es una muestra probabilstica trietpica. Cuenta con un diseo muestral que permite realizar clculo de errores estndar ms robustos al momento de calcular indicadores por ejemplo. En R, el paquete que nos permite trabajar con encuestas que tienen diseo muestral es el paquete Survey. En primer lugar, se debe correr el diseo muestral de la encuesta12 . Se recomienda tener el cdigo del diseo muestral en un archivo a parte dado que no cambia y se hace uso del mismo segn se necesite. Veamos:
12 El cdigo del diseo muestral lo tiene en los documentos de respaldo o tambin puede copiarlo de los anexos del presente documento

27

source("dise_muestral_dic2010 (original).R") disem<- svydesign(ids=upm,weights=fexp,strata=dominio1,data=datos.stata) h<-svytable(~datos.stata$p02,disem) > h datos.stata$p02 1 2 7056148 7223538 El comando source permite acceder al cdigo donde se encuentra el diseo muestral13 . El comando svydesign sirve para especicar opciones del diseo como la unidad primaria de muestreo, la variable de pesos, los estratos, y los datos en los que se desea aplicar el diseo. Se puede apreciar que los resultados son exactamente los mismos que usando el paquete Hmisc. ANEXOS 1) Diseo muestral ENEMDU diciembre 2010 en R. upm<- as.numeric(paste(ciudad, zona, sector,sep="")) canton<- trunc(ciudad/100) provincia<- trunc(ciudad/10000) region1<- NULL region1[which(provincia==1 | provincia==2 | provincia==3 | provincia==4 | provincia==5 | provincia==6 | provincia==10 | provincia==11 | provincia==17 | provincia==18 | provincia==23)]=1 region1[which(provincia==7 | provincia==8 | provincia==9 | provincia==12 | provincia==13 | provincia==24 | provincia==90)]=2 region1[which(provincia==14 | provincia==15 | provincia==16 | provincia==19 | provincia==21 | provincia==22)]=3 region1[which(provincia==20)]=4 region<- as.factor(region1) levels(region)<- c("Sierra", "Costa", "Amazon??a", "Insular") # Santo Domingo 1706 provincia[which(canton==1706)]=23 # Santa Elenea 917; Libertad 926; Salinas 915. provincia[which(canton==917 | canton==915 | canton==926)]=24 # Amazon??a provincia[which(region1==3)]=89 provincia1<- provincia provincia<- as.factor(provincia1) levels(provincia)<- c("Azuay", "Bolivar", "Ca??ar", "Carchi",
13 Recuerde que el cdigo del diseo muestral debe estar en el mismo directorio en el que encuentre trabajando, de lo contrario debe especicar su ubicacin

28

"Cotopaxi", "Chimborazo", "El Oro", "Esmeraldas", "Guayas", "Imbabura", "Loja", "Los R??os", "Manab??", "Pichincha", "Tungurahua", "Santo Domingo", "Santa Elena", "Amazon??a", "Zonas no Demiliatadas") ### Dominios ### area1<- area area<-as.numeric(area1) dominio<- NULL dominio[which(provincia1==1 & area==1)]=1 dominio[which(provincia1==2 & area==1)]=2 dominio[which(provincia1==3 & area==1)]=3 dominio[which(provincia1==4 & area==1)]=4 dominio[which(provincia1==5 & area==1)]=5 dominio[which(provincia1==6 & area==1)]=6 dominio[which(provincia1==7 & area==1)]=7 dominio[which(provincia1==8 & area==1)]=8 dominio[which(provincia1==9 & area==1)]=9 dominio[which(provincia1==10 & area==1)]=10 dominio[which(provincia1==11 & area==1)]=11 dominio[which(provincia1==12 & area==1)]=12 dominio[which(provincia1==13 & area==1)]=13 dominio[which(provincia1==17 & area==1)]=14 dominio[which(provincia1==18 & area==1)]=15 dominio[which(provincia1==23 & area==1)]=16 dominio[which(provincia1==24 & area==1)]=17 dominio[which(provincia1==89 & area==1)]=18 dominio[which(provincia1==1 & area==2)]=19 dominio[which(provincia1==2 & area==2)]=20 dominio[which(provincia1==3 & area==2)]=21 dominio[which(provincia1==4 & area==2)]=22 dominio[which(provincia1==5 & area==2)]=23 dominio[which(provincia1==6 & area==2)]=24 dominio[which(provincia1==7 & area==2)]=25 dominio[which(provincia1==8 & area==2)]=26 dominio[which(provincia1==9 & area==2)]=27 29

dominio[which(provincia1==10 dominio[which(provincia1==11 dominio[which(provincia1==12 dominio[which(provincia1==13 dominio[which(provincia1==17 dominio[which(provincia1==18 dominio[which(provincia1==23 dominio[which(provincia1==24 dominio[which(provincia1==89 dominio[which(provincia1==90 dominio1<- dominio dominio<-as.factor(dominio1) levels(dominio)<-c( "Azuay urbano", "Bolivar urbano", "Ca??ar urbano", "Carchi urbano", "Cotopaxi urbano", "Chimborazo urbano", "El Oro urbano", "Esmeraldas urbano", "Guayas urbano", "Imbabura urbano", "Loja urbano", "Los R??os urbano", "Manab?? urbano", "Pichincha urbano", "Tungurahua urbano", "Santo Domingo urbano", "Santa Elena urbano", "Amazon??a urbano", "Azuay rural", "Bolivar rural", "Ca??ar rural", "Carchi rural", "Cotopaxi rural", "Chimborazo rural", "El Oro rural", "Esmeraldas rural", "Guayas rural", "Imbabura rural", "Loja rural", "Los R??os rural", "Manab?? rural", "Pichincha rural", "Tungurahua rural",

& & & & & & & & &

area==2)]=28 area==2)]=29 area==2)]=30 area==2)]=31 area==2)]=32 area==2)]=33 area==2)]=34 area==2)]=35 area==2)]=36 )]=37

30

"Santo Domingo rural", "Santa Elena rural", "Amazon??a rural", "N/D")

31

Potrebbero piacerti anche