You are on page 1of 9

Anlisis Exploratorio de Datos con R

http://r-econ.blogspot.com/2011/05/analisis-exploratorio-de-datos-con-r.html En esta seccin ilustraremos brevemente algunas tcnicas estndar para el anlisis exploratorio de datos. Para aquellos que buscan una introduccin ms detallada sobre estadsticas bsicas con R refiranse a Dalgaard ( !! ". #saremos los datos contenidos en CPS1985 tomados de $erndt (%&&%". Despus de tener disponibles los datos va data(), podremos tener alguna informacin a travs de la funcin str(). 'odo este anlisis fue tomado de (leiber ) *eileis ( !!+". Descarga los cdigos usados en este post aqu
> data("CPS1985", package="AER") > str(CPS1985) 'data.frame' 5!! "#s. "f 11 $ar%a#&es ' (age )*m +.95 ,.,- + -.5 1!..- ... ' ed*cat%") %)t 9 1/ 1/ 1/ 1! 1. 1/ 1, 1/ 1/ ... ' e0per%e)ce %)t +/ 1 + 1- 9 /- 9 11 9 1- ... ' age %)t 5- 19 // !5 /8 +! /- !! /- !5 ... ' et1)%c%t2 3act"r (4 ! &e$e&s "ca*c","1%spa)%c",.. 1 1 1 1 1 1 1 1 1 1 ... ' reg%") 3act"r (4 / &e$e&s "s"*t1",""t1er" / / / / / 1 / / / / ... ' ge)der 3act"r (4 / &e$e&s "ma&e","fema&e" / 1 1 1 1 1 1 1 1 1 ... ' "cc*pat%") 3act"r (4 , &e$e&s "("rker","tec1)%ca&",.. 1 1 1 1 1 1 1 1 1 1 ...

' sect"r 3act"r (4 ! &e$e&s "ma)*fact*r%)g",.. 1 1 ! ! ! ! ! 1 ! ! ... ' *)%") 3act"r (4 / &e$e&s ")"","2es" 1 1 1 1 / 1 1 1 1 / ... ' marr%ed 3act"r (4 / &e$e&s ")"","2es" / 1 1 / 1 1 1 / 1 / ... > Esta salida revela que CPS1985 es un 5data.frame6 compuesto por ,-- observaciones y %% variables, incluyendo la variable numrica (continua) (age, las variables numricas (enteras) ed*cat%"), e0per%e)ce, and age y siete factores (variables categricas, llamadas 3act"r en R) cada una con 6 categoras (las categoras son llamas niveles (levels) en R). En vez de utilizar la vista tipo lista que nos proporciona la funcin str(), es ms usual inspeccionar el inicio y el final de la base de datos (data.frame) en su forma natural, es decir, como un arreglo rectangular de valores. Para este objetivo e isten funciones apropiadas tales como 1ead() y ta%&() que nos proporcionan (por defecto) las primeras ! observaciones y las "ltimas ! observaciones de cada variable, respectivamente. #s$ por ejemplo, 1ead(CPS1985) (age ed*cat%") e0per%e)ce age et1)%c%t2 reg%") ge)der "cc*pat%") 1 +.95 9 +/ 5ca*c "t1er fema&e ("rker / ,.,1/ 1 19 ca*c "t1er ma&e ("rker ! +... 1/ + // ca*c "t1er ma&e ("rker + -.5. 1/ 1- !5 ca*c "t1er ma&e ("rker 5 1!..1! 9 /8 ca*c "t1er ma&e ("rker , +.+5 1. /- +! ca*c s"*t1 ma&e ("rker sect"r *)%") marr%ed 1 ma)*fact*r%)g )" 2es / ma)*fact*r%)g )" )" ! "t1er )" )" + "t1er )" 2es 5 "t1er 2es )" , "t1er )" )" > Por razones de espacio no se presenta el resultado de aplicar ta%&(CPS1985), pero el lector lo puede ejecutar y ver que la informacin que proporciona es muy semejante a 1ead(CPS1985), la diferencia es que ta%&() da las "ltimas ! filas como se %a se&alado antes. .tra manera apropiada ) rpida de obtener un resumen de la informacin contenida en la base de datos es a travs de la funcin s*mmar2() la cual proporciona un resumen por cada una de las variables. > s*mmar2(CPS1985) (age ed*cat%") e0per%e)ce age 7%). 1.... 7%). /... 7%). .... 7%). 18... 1st 8*. 5./5. 1st 8*. 1/... 1st 8*. 8... 1st 8*. /8... 7ed%a) -.-8. 7ed%a) 1/... 7ed%a) 15... 7ed%a) !5... 7ea) 9..!1 7ea) 1!..! 7ea) 1-.8/ 7ea) !,.8+

!rd 8*. 11./5. 7a0. ++.5.. et1)%c%t2 sect"r ca*c ++. ma)*fact*r%)g 1%spa)%c /, c")str*ct%") "t1er ,+11 9-

!rd 8*. 15... !rd 8*. /,... !rd 8*. ++... 7a0. 18... 7a0. 55... 7a0. ,+... reg%") ge)der "cc*pat%") s"*t1 15, 98 "t1er !-/+ ma&e /89 ("rker tec1)%ca& ser$%ces "ff%ce sa&es 155 1.5 8! "t1er

fema&e /++

!8 ma)ageme)t 55 *)%") )" +!2es 9, marr%ed )" 18+ 2es !+9

'ado que en lo sucesivo de esto post se utilizar repetidamente la base CSP1985, trataremos de evitar usar comandos muy e tensos comoCSP1985'ed*cat%") para ello separaremos cada variable de la base de datos y as$ podremos acceder a ella directamente por su nombre sin necesidad de anteponer el nombre de la base donde estn contenidas, para lograr eso %aremos uso de la funcin attac%(). #dems para evitar escribir muc%as letras, renombraremos y abreviaremos los nombres de dos niveles (categor$as) de la variable occupation, cambiaremos (tec1c)%ca&) por (tec1)) y (ma)ageme)t) por mgmt. > &e$e&s(CPS1985'"cc*pat%"))9c(/,,):;<c("tec1)", "mgmt") > attac1(CPS1985)

!ora las variables son accesibles por sus nombres.

"s !ora del an#lisis, procederemos con l ilustrando cmo se !ace una an#lisis e$ploratorio considerando una sola variable, luego pares de variables, !aciendo la distincin entre variables numricas, factores (categricas) y combinaciones de ambas. "mpe%amos con el caso m#s simple, considerando una &nica variable.

Slo una variable numrica


Empezaremos dando una mirada a la distribucin de los salarios de la muestra, esto es la variable (age > s*mmar2((age) 7%). 1st 8*. 7ed%a) 7ea) !rd 8*. 7a0. 1.... 5./5. -.-8. 9..!1 11./5. ++.5..

*a funcin s*mmar2() proporciona un resumen de seis n"meros+ el valor m$nimo, el primer cuartil, el segundo cuartil (,mediana), el tercer cuartil, el valor m imo y el valor medio de la distribucin. *a media y la mediana tambi-n se pudieron %aber obtenido de la siguiente manera > mea)((age) 91: 9..!1+/, > med%a)((age) 91: -.-8

y la funcin f%$e)*m() calcula un resumen de las cinco medidas de posicin no central listados anteriormente. En tanto que, m%)() y ma0() %abr$an proporcionado el m$nimo y el m imo valor de la distribucin. *os cuartiles se podr$an %aber obtenido usando =*a)t%&e(). Para las medidas de dispersin, e isten las funciones > $ar((age) 91: /,.+!.9, > sd((age) 91: 5.1+11.5

'ue nos devuelven el valor de la varian%a y el de la desviacin tpica (desviacin est#ndar seg&n guste llamarla).

*os res"menes grficos tambi-n son muy "tiles. Para variables num-ricas como el caso de (age, las visualizaciones de densidad (v$a %istogramas o (.ernel smoot%ing)) y los diagramas de caja son adecuados. *os diagramas de caja se considerarn cuando se nos refiramos a anlisis de dos variables. *a /igura 0, obtenida v$a

par(mfc"&=c(1,/)) 1%st((age, fre==3) 1%st(&"g((age), fre==3) &%)es(de)s%t2(&"g((age)), c"&=+) muestra las densidades de (age y su logaritmo (esto es, el #rea ba(o la curva es igual a %, resultando del

!ec!o de fre==3A>SE) de otra manera las frecuencias absolutas !abran sido dibu(adas). "n el panel derec!o de la *igura + se !a a,adido al !istograma la densidad -ernel estimada a partir de la funcin de)s%t2(). .laramente, la distribucin de los logaritmos es menos sesgada 'ue la de los datos originales (datos brutos). /ote 'ue de)s%t2() slo calcula las coordenadas de la densidad pero no la grafica, por eso esta estimacin es agregada usando la funcin &%)es(). /igura 0. 1istogramas de 2ages (izq.) y de su logaritmo con densidad superpuesta (derec%a)

Slo una variable categrica


Para datos categricos, no tiene muc%o sentido calcular la media ni la varianza3 en su lugar, lo que necesitamos es una tabla que nos indique las frecuencias con las cuales las categor$as ocurren. 4i a 5 se le dice que cierta variable es categrica (%aci-ndola un ( fact"r)), -l automticamente escoger el resumen adecuado+ > s*mmar2("cc*pat%")) ("rker tec1) ser$%ces "ff%ce sa&es mgmt 155 1.5 8! 9!8 55

Esto tambi-n pudo %aber sido calculado a trav-s de ta#&e("cc*pat%")). 4i en lugar de las frecuencias absolutas, lo que se desea son las frecuencias relativas, entonces e iste la funcin pr"p.ta#&e() que lo %ace.

> ta#;< ta#&e("cc*pat%")) > pr"p.ta#&e(ta#) "cc*pat%") ("rker tec1) ser$%ces "ff%ce sa&es mgmt ../9.8.,-5 ..19,9981/ ..155-//!! ..181988-+ ...-1/9+5, ..1.!189+9 *as variables categricas con com"nmente visualizadas mediante diagramas de barras, los grficos de pastel tambi-n son "tiles. Ejemplo, > #arp&"t(ta#) > p%e(ta#) /igura 6. 'iagrama de barras y de pastel de "cc*pat%")

7ote cmo ambas funciones utilizan las frecuencias como input. 8tilizando la funcinp&"t("cc*pat%")) se logra lo mismo que se logr con#arp&"t(ta#&e("cc*pat%"))), estos procedimientos son equivalentes, pero usando p&"t() se va directamente al grfico no %ay clculos intermedios como los %ay si se utiliza #arp&"t() en la que primero se debe calcular la tabla de frecuencias.

Dos variables categricas


*a relacin entre dos variables categricas es frecuentemente resumida en una tabla de contingencia. Estas tablas pueden ser creadas ya sea con 0ta#s()una funcin que requiere de una frmula de interface o con ta#&e(), que es una funcin que toma arbitrariamente un n"mero de variables para la tabulacin cruzada . 9onsideremos los factores (variables categricas) "cc*pat%" ) y ge)der para ilustrar+ > 0ta#s(? ge)der @ "cc*pat%"), data=CPS1985) "cc*pat%") ge)der ("rker tec1) ser$%ces "ff%ce sa&es mgmt ma&e 1/, 5! !+ /1 /1 !+ fema&e /9 5/ +9 -, 1/1 *o cual pudo %aber sido creado de forma equivalente con ta#&e(ge)der, "cc*pat%")). 8na simple visualizacin de esto es a trav-s de un (mosaic plot) (/artigan ) (leiner %&+%0 1riendl) %&&2), el cual es visto como una generalizacin de los grficos de columnas apiladas. El grfico dado en la /igura : (tambi-n conocido como (spine plot), que es una variante de la presentacin estndar de la forma estilo mosaico), se obtuvo v$a

/igura :. ;osaic plot (spine plot) de gender vs occupation

> p&"t(ge)der?"cc*pat%"), data=CPS1985) *a /igura : muestra que la proporcin de %ombres y mujeres cambia considerablemente entre las categor$as de ocupacin (niveles de "cc*pat%")). #dems de las partes sombreadas que nos muestran la distribucin condicional del g-nero (gender) dada la ocupacin ("cc*pat%")), la anc%ura de las barras ofrecen la distribucin marginal de la

ocupacin, indicando que %ay comparativamente muc%as personas en la categor$a (("rkers) y menos en (sa&es), es decir ms obreros que vendedores.

Dos variables numricas


Ejemplificaremos el anlisis e ploratorio de la relacin entre dos variables num-ricas utilizando las variables (age y ed*cat %"). 8na medida de relacin entre dos variables num-ricas es el coeficiente de correlacin implementado en la funcin c"r(). 4in embargo, el coeficiente de correlacin estndar de Pearson no es muy significativo cuando estamos ante variables con un pronunciado sesgo positivo como es el caso de (age, de manera que calcularemos una versin no param-trica del coeficiente de correlacin, usaremos la correlacin de 4pearman, la cual est disponible en la funcin c"r()como una opcin. > c"r(&"g((age), ed*cat%")) 91: ..!-9..9! > c"r(&"g((age), ed*cat%"), met1"d="spearma)") 91: ..!-9-895

/igura <. 'iagrama de dispersin de (age (en logs) vs ed*cat%")

#mbas medidas son virtualmente id-nticas e indican slo una modesta correlacin entre las variables, veamos el correspondiente diagrama de dispersin en la /igura <. > p&"t(&"g((age)? ed*cat%"))

Una variable numrica y una variable categrica


Es com"n tener tanto variables num-ricas como categricas en un data frame. Por ejemplo, en nuestro caso tenemos 2age y gender y podr$a %aber alg"n inter-s en saber la distribucin del salario dado el g-nero. 8na funcin adecuada para resumir este tipo de datos combinados es tapp&2(). Esta funcin aplica a la variable num-rica que es su primer argumento una clasificacin seg"n la variable categrica que es su segundo argumento y a la vez aplica la respectiva funcin que %ayamos establecido, esto es el tercer argumento de la

funcin tapp&2(). #s$ por ejemplo, es posible obtener la media de los salarios condicionado al g-nero de la siguiente manera > tapp&2(&"g((age), ge)der, mea)) ma&e fema&e /.1,5/8, 1.9!5/8-

8sando comandos similares pueden obtenerse ms estad$sticos descriptivos o incluso se puede obtener un resumen completo, basta con sustituir s*mmar2en el lugar de mea) y se obtendr

> tapp&2(&"g((age), ge)der, s*mmar2) 'ma&e 7%). 1st 8*. 7ed%a) 7ea) !rd 8*. 7a0. ..... 1.-9/ /.189 /.1,5 /.5,5 !./,9 'fema&e 7%). 1st 8*. 7ed%a) 7ea) !rd 8*. 7a0. ..559, 1.551. 1.9/!. 1.9!5. /.!.!. !.-95.

#decuadas salidas grficas para estos datos tales como diagramas de cajas y diagrama cuartil=cuartil (quantile=quantile plot, qq=plot) se presentan en la /igura >.

/igura >. 'iagrama de 9ajas y ?? plot de 2age estratificado por gender

*os comandos plot(y@ ) y bo plot(y@ ) proporcionan el mismo resultado si (variable categrica), as$ pues plot(log(2age)@gender)

es un factor

proporcionar la parte izquierda de la /igura >. Este muestra que las distribuciones son bastante similares en su forma pero con la salvedad que los %ombres disfrutan de una ventaja substancial, especialmente los del rango medio. Este "ltimo aspecto es corroborado por el ??=plot que est a la derec%a de la /igura > el cual resulta de ejecutar la siguiente secuencia de comandos m(age ;< s*#set(CPS1985, ge)der=="ma&e")'(age f(age ;< s*#set(CPS1985, ge)der=="fema&e")'(age ==p&"t(m(age, f(age, 0&%m=ra)ge((age), 2&%m=ra)ge((age), 0a0s="%", 2a0s="%", 0&a#="ma&e", 2&a#="fema&e") a#&%)e(.,1)

donde la mayor$a de puntos estn debajo de la l$nea diagonal (la cual corresponde a una id-ntica distribucin en ambas muestras). Este grfico nos dice que para la mayor$a de cuantiles, el salario de los %ombres es mayor que el de las mujeres. #cabamos este post volviendo a unir todas las variables en una sola base de datos con detac1(CPS1985)

Referencias
Dalgaard P ( !! ". Introductory Statistics with R. Springer-Verlang, 3e4 5or6. 1riendl) 7 (%&&2". Mosaic Displays for Multi-Way Contingency Ta les. 8ournal of t9e :merican ;tatistical :ssociation< 89< %&!= !!. /artigan 8 :< (leiner $ (%&+%". Mosaics for Contingency Ta les. >n ?@ Edd) (ed."< ABomputer ;cience and ;tatisticsC Proceedings of t9e %-t9 ;)mposium on t9e >nterfaceD< pp. E+= F-. ;pringer=Gerlang< 3e4 5or6. (leiber ) *eileis ( !!+". !pplied "cono#etrics with R. ;pringer. 3e4 5or6.