Introducci´n a R: un entorno de programaci´n           o                                  o  para el an´lisis de datos y l...
´Indice general1. Estructuras de datos en R                                                         3  1.1. Creaci´n y eli...
´INDICE GENERAL                                                                  2  3.3. Establecer el directorio de traba...
Cap´   ıtulo 1Estructuras de datos en R1.1.       Creaci´n y eliminaci´n de objetos. Vectores                 o           ...
CAP´   ITULO 1. ESTRUCTURAS DE DATOS EN R                                         4     x<-c("Koldo","Kepa")     x     1/x...
CAP´   ITULO 1. ESTRUCTURAS DE DATOS EN R                                      5     temp¿C´mo se puede acceder a los elem...
CAP´   ITULO 1. ESTRUCTURAS DE DATOS EN R                                       6     fx     summary(fx)Tambi´n podemos cr...
CAP´   ITULO 1. ESTRUCTURAS DE DATOS EN R                                           71.4.       ListasLas listas son una g...
CAP´   ITULO 1. ESTRUCTURAS DE DATOS EN R                                          8La forma m´s c´moda de introducir dato...
CAP´   ITULO 1. ESTRUCTURAS DE DATOS EN R                                       9     tapply(Peso,Sexo,mean)     tapply(Al...
CAP´   ITULO 1. ESTRUCTURAS DE DATOS EN R                                      101.6.     Bases de datos en RR dispone de ...
Cap´   ıtulo 2An´lisis de datos  a2.1.      Variables aleatoriasR dispone de una calculadora de variables aleatorias. Con ...
CAP´          ´   ITULO 2. ANALISIS DE DATOS                                                12Vamos a dibujar funciones de...
CAP´          ´   ITULO 2. ANALISIS DE DATOS                                              13     summary(eruptions)     fi...
CAP´          ´   ITULO 2. ANALISIS DE DATOS                                                 14Y ahora obtengamos el histo...
CAP´          ´   ITULO 2. ANALISIS DE DATOS                                                   15Podemos modificar la direc...
CAP´          ´   ITULO 2. ANALISIS DE DATOS                                                162.4.     Tablas en RVamos a ...
CAP´          ´   ITULO 2. ANALISIS DE DATOS                                             17     assocplot(AgeSurvived)    ...
CAP´          ´   ITULO 2. ANALISIS DE DATOS                                               182.5.     Regresi´n lineal    ...
CAP´          ´   ITULO 2. ANALISIS DE DATOS                                              192.6.     An´lisis de component...
CAP´          ´   ITULO 2. ANALISIS DE DATOS                                                20     acp2El c´    ırculo de ...
CAP´          ´   ITULO 2. ANALISIS DE DATOS                                            21     acp2$indLos resultados para...
Cap´   ıtulo 3Varios3.1.     PackagesLas instalaciones de R consisten en un m´dulo b´sico y un conjunto de packages       ...
CAP´   ITULO 3. VARIOS                                                             233.3.     Establecer el directorio de ...
CAP´   ITULO 3. VARIOS                                                           243.6.     Ejecuci´n de comandos desde un...
Bibliograf´          ıaBerk, R.A. (2008); Statistical Learning form a Regression Perspective; Springer.Bliese, P. (2006); ...
CAP´   ITULO 3. VARIOS                                                        26Muenchen, B. (2007); R for SAS and SPSS Us...
Recursos onlineP´gina del proyecto R: http://www.r-project.org/ aThe Comprehensive R Archive Network: http://cran.r-projec...
CAP´   ITULO 3. VARIOS                                                     28A Brief Guide to R for Beginners in Econometr...
Upcoming SlideShare
Loading in …5
×

Sesion R

1,193 views
1,020 views

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,193
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
14
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Sesion R

  1. 1. Introducci´n a R: un entorno de programaci´n o o para el an´lisis de datos y la elaboraci´n de a o gr´ficos a Juan Jos´ Gibaja Mart´ e ıns 7 de noviembre de 2008
  2. 2. ´Indice general1. Estructuras de datos en R 3 1.1. Creaci´n y eliminaci´n de objetos. Vectores num´ricos, de car´cter o o e a y l´gicos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . o 3 1.2. Factores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 1.3. Arrays y matrices . . . . . . . . . . . . . . . . . . . . . . . . . . 6 1.4. Listas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 1.5. Dataframes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 1.6. Bases de datos en R . . . . . . . . . . . . . . . . . . . . . . . . . 102. An´lisis de datos a 11 2.1. Variables aleatorias . . . . . . . . . . . . . . . . . . . . . . . . . . 11 2.2. Estad´ ıstica descriptiva univariante . . . . . . . . . . . . . . . . . 12 2.3. Estad´ ıstica para dos variables . . . . . . . . . . . . . . . . . . . . 14 2.4. Tablas en R . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 2.5. Regresi´n lineal . . . . . . . . . . . . . . . . . . . . . . . . . . . . o 18 2.6. An´lisis de componentes principales . . . . . . . . . . . . . . . . a 19 2.7. Ejemplo de tipolog´ de Comunidades Aut´nomas con el paque- ıa o te ade4 (Cuidado: Antes de utilizar el package ade4 es preciso instalarlo) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 2.8. An´lisis de componentes principales con FactoMineR . . . . . . . a 203. Varios 22 3.1. Packages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 3.2. Ayuda en R . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 1
  3. 3. ´INDICE GENERAL 2 3.3. Establecer el directorio de trabajo . . . . . . . . . . . . . . . . . 23 ´ 3.4. Area de trabajo en R (Workspace) . . . . . . . . . . . . . . . . . 23 3.5. Hist´rico de comandos . . . . . . . . . . . . . . . . . . . . . . . . o 23 3.6. Ejecuci´n de comandos desde un archivo de texto . . . . . . . . . o 24 3.7. Trabajo con gr´ficos . . . . . . . . . . . . . . . . . . . . . . . . . a 24
  4. 4. Cap´ ıtulo 1Estructuras de datos en R1.1. Creaci´n y eliminaci´n de objetos. Vectores o o num´ricos, de car´cter y l´gicos e a oTodo en R son objetos. ¿De qu´ objetos disponemos en este momento? e ls()Creamos nuestro primer objeto: un vector num´rico. Efectuamos algunas op- eeraciones sobre ´l y vemos los resultados. Como no los guardamos en ning´n e uobjeto, los resultados se muestran y se pierden: x<-c(1,2,3) x sqrt(x) 1/x ls()...y lo eliminamos rm(x) ls()Creamos otro vector, esta vez de tipo car´cter. Intentamos efectuar operaciones anum´ricas sobre ´l, pero no es posible. e e 3
  5. 5. CAP´ ITULO 1. ESTRUCTURAS DE DATOS EN R 4 x<-c("Koldo","Kepa") x 1/x¿Se pueden crear vectores mixtos?. No. Se fuerza al tipo menos restrictivo. x<-c(1.5,"Kepa") xVamos a sumar dos vectores. El segundo s´lo tiene un elemento. ¿Qu´ ocurrir´? o e aSe repite tantas veces como sea necesario para ajustarse a la longitud del m´s alargo. N´tese que en R no existe el concepto de escalar sino como vector con un ounico elemento.´ x<-c(1,2) y<-3 x+yAlgunas funciones sobre vectores num´ricos con significados evidentes: e max(x) min(x) range(x) length(x) mean(x) # media aritm´tica e var(x) # varianza (con el divisor n-1)Los vectores l´gicos se pueden crear concatenando valores l´gicos TRUE, FALSE o o temp<-c(TRUE,FALSE,FALSE,FALSE,TRUE) tempO tambi´n mediante expresiones l´gicas (>,<,>=,<= ==, !=). ¿Son mayores e oque 13 los componentes del vector x? Algunos s´ (TRUE) y otros no (FALSE) ı temp<-x>13
  6. 6. CAP´ ITULO 1. ESTRUCTURAS DE DATOS EN R 5 temp¿C´mo se puede acceder a los elementos de un vector? Mediante un vector de o´ındices (entre [ ]) x<-c(10,20,30,40,50) x[1] # da como resultado el primer elemento del vector x x[c(1,2)] # proporciona los dos primeros elementos del vector x x[x>30] # nos da un vector con los elementos de x mayores que 30 x[c(-1,-2)] # nos da los elementos de x excepto los dos primerosPodemos transformar un tipo de vector en otro cx<-as.character(x) cx y<-as.numeric(cx) y1.2. FactoresLos vectores son muy importantes pero existen otras estructuras en R como losfactores. Creamos un vector num´rico x y a partir de ´l definimos un factor e efx. Vemos como el procedimiento summary() tiene diferentes efectos sobre unvector num´rico y sobre un factor. e x<-c(1,1,1,2,2,2,1,1,1) summary(x) fx<-as.factor(x) fx summary(fx)A los niveles de un factor les podemos poner etiquetas fx<-factor(x,labels=c("chico","chica"))
  7. 7. CAP´ ITULO 1. ESTRUCTURAS DE DATOS EN R 6 fx summary(fx)Tambi´n podemos crear factores a partir de vectores “continuos”. Para ello egeneramos una secuencia de 5000 n´meros aleatorios con una distribuci´n nor- u omal de media 100 y desviaci´n est´ndar 10. A partir de ese vector num´rico o a ecreamos un factor con la funci´n cut() estableciendo como puntos de corte o60,70,...,140. Vemos como la funci´n plot() act´a de forma diferente sobre un o ufactor (fincomes) y sobre un vector num´rico (incomes). El efecto de plot() esobre el factor es similar al efecto de hist() -histogramas- sobre un vectornum´rico. e incomes<-rnorm(5000,100,10) incomes fincomes<-cut(incomes,breaks=60+10*(0:8)) summary(fincomes) plot(fincomes) plot(incomes) hist(incomes)1.3. Arrays y matricesOtra estructura muy importante es el array. Un caso particular de array es lamatriz (array bidimensional). La definimos creando un vector y d´ndole la forma adeseada mediante su valor dim(). Como ejemplo vamos a crear una matriz dedos filas y tres columnas. x<-c(1,2,3,4,5,6) dim(x)<-c(2,3) x x[1,1] x[1,2] x[1,] x[,1] x[,] x
  8. 8. CAP´ ITULO 1. ESTRUCTURAS DE DATOS EN R 71.4. ListasLas listas son una generalizaci´n del concepto de vector. Mientras estos deben oconstar de componentes homog´neos en cuanto a su tipo, las listas pueden estar eformadas por componentes de distintos tipos: ingresos<-rnorm(5000,100,10) gastos<-rnorm(5000,80,10) lista1<-list(ingresos,gastos) lista1 patrimonio<-rnorm(5000,1000,10) lista2<-list(lista1,patrimonio) summary(lista2)1.5. DataframesMuy similares a las listas son los dataframes. Son las estructuras m´s utilizadas aen R para recoger los datos m´s habituales en Estad´ a ıstica, aquellos en los quecontamos con un conjunto de n individuos para cada uno de los cuales hemosobtenido los valores en k variables, que pueden ser de distinta naturaleza. df1<-data.frame(ingresos,gastos,patrimonio) df1 summary(df1) plot(df1)Para referirnos a las variables de un dataframe debemos escribir dataframe$variable.No obstante, se puede obtener una copia de las variables de un dataframe me-diante el comando attach(). Cuidado: los cambios que se efect´en sobre estas uvariables no afectan al dataframe. Para eliminar las variables de memoria em-pleamos el comando detach(). attach(df1) detach(df1)
  9. 9. CAP´ ITULO 1. ESTRUCTURAS DE DATOS EN R 8La forma m´s c´moda de introducir datos en R es mediante la lectura de un a ofichero de datos externo (normalmente en formato texto). Para ello construimosun fichero en cuya primera fila se recogen los nombres de las variables de losdatos separados por un espacio en blanco. En cada una de las restantes filas seincluye una etiqueta de la fila y los datos del individuo correspondiente en cadauna de las variables separados tambi´n por espacios en blanco. Un ejemplo es eel siguiente:Peso Altura Edad Sexo"Koldo" 80 175 18 "chico""Luis" 75 182 19 "chico""Nerea" 63 164 42 "chica""Juanjo" 85 177 34 "chico""Amaia" 59 160 34 "chica""Ainhoa" 45 167 19 "chica""Uxue" 52 170 17 "chica"N´tese que tanto los nombres de las filas como los valores de las variables cuali- otativas deben introducirse entrecomillados. No as´ los nombres de las variables. ıPara leer los datos utilizamos el comando read.table(). El resultado es unobjeto de la clase dataframe. En este caso, creamos el dataframe DatosPeso ycreamos una copia de sus variables mediante el comando attach(): DatosPeso<-read.table("DatosPeso.txt", header=TRUE) DatosPeso attach(DatosPeso)A continuaci´n empleamos algunos comandos de estad´ o ıstica descriptiva comosummary(), plot() e hist(): summary(Peso) plot(Peso) hist(Peso)Especialmente util es el comando tapply() que calcula el estad´ ´ ıstico recogido ensu tercer argmento a los datos de la variable recogida en su primer argumentoen los grupos formados por el segundo argumento. Los siguientes comandoscalculan la media -mean- del Peso y la Altura para los distintos valores de lavariable Sexo:
  10. 10. CAP´ ITULO 1. ESTRUCTURAS DE DATOS EN R 9 tapply(Peso,Sexo,mean) tapply(Altura,Sexo,mean)Podemos modificar un dataframe mediante el comando fix(). Podemos probar,por ejemplo, a a˜adir nuevos individuos -nuevas filas- al dataframe. n fix(DatosPeso) DatosPesoSin embargo, el n´mero de individuos de la variable Peso no ha cambiado. ¿Por uqu´? e length(Peso)¿Qu´ ocurrira si hacemos attach(DatosPeso) y volvemos a ver cu´ntos indi- e aviduos tenemos ahora? ¿Por qu´? e length(Peso)Puede construirse un dataframe desde cero introduciendo los datos desde elteclado. El siguiente comando abre una ventana en forma de hoja de c´lculo. Al acerrarla el resultado se guardar´ como un dataframe en el objeto Data: a Data<-edit(data.frame())Para exportar un dataframe de R a un documento de texto deber´ ıamos escribirla siguiente l´ ınea de comando: write.table(df1,file="nombrearchivo.txt")Asimismo podr´ ıamos exportar dicho dataframe de R a un documento de formatocsv con la siguiente l´ ınea de comando: write.csv(df1,file="nombrearchivo.csv")
  11. 11. CAP´ ITULO 1. ESTRUCTURAS DE DATOS EN R 101.6. Bases de datos en RR dispone de gran cantidad de bases de datos a cuyo listado se puede accedermediante el comando data(): data()Para acceder a una base de datos concreta basta con teclear su nombre -siest´ accesible en alguno de los packages cargados en R- a WorldPhones class(WorldPhones) carsSi queremos ver las bases de datos disponibles en alg´n otro package debe- umos emplear el comando data(package="package"). Por ejemplo, el siguientecomando nos proporciona la lista de bases de datos disponibles en el packagesurvival. data(package="survival")Para cargar los datos de una base de datos de un package no cargado en memoriadebemos emplear el comando data(database,package="package"): data(tobin,package="survival") tobin class(tobin)
  12. 12. Cap´ ıtulo 2An´lisis de datos a2.1. Variables aleatoriasR dispone de una calculadora de variables aleatorias. Con ella podemos generarvectores de n´meros aleatorios que siguen diferentes funciones de distribuci´n u ote´ricas -normal, binomial, t de Student, Chi cuadrado, F-, calcular probabili- odades a partir de estas funciones, calcular valores cr´ ıticos, etc´tera. Por ejemplo, eel siguiente comando genera un vector de 1000 n´meros aleatorios seleccionados ude una variable aleatoria con distribuci´n binomial de par´metros n=5 y p=0.5 o a x<-rbinom(5000,5,.5) x<-factor(x) plot(x) x<-rbinom(5000,5,.5) hist(x) x<-factor(x) x summary(x)Seguimos jugando con las variables aleatorias: pnorm(2,0,1) # ¿Qu´ ´rea queda a la derecha de 2 en una N(0,1)? e a qnorm(0.95,0,1) # ¿Qu´ valor de una N(0,1) deja a su izquierda e 0,95? 11
  13. 13. CAP´ ´ ITULO 2. ANALISIS DE DATOS 12Vamos a dibujar funciones de densidad. En primer lugar creamos un vectornum´rico con los n´meros desde -2 hasta +2 con un incremento de 0.001. e u x<-seq(-2,2,by=0.001)A continuaci´n calculamos la funci´n de densidad normal (0,1) para estos valores o oy la representamos gr´ficamente: a z<-dnorm(x,0,1) plot(x,z)Lo mismo para una N(0,2) w<-dnorm(x,0,2) lines(x,w)Lo mismo para una N(0,0.5) y<-dnorm(x,0,0.5) lines(x,y)2.2. Estad´ ıstica descriptiva univarianteVamos a revisar algunos conceptos de estadistica descriptiva univariante. Paraello vamos a recurrir a una base de datos disponible en R y reativa a las erup-ciones de un geyser. El dataframe contiene dos variables, eruptions (duraci´node la erupci´n) y waiting (tiempo entre erupciones). Mediante el nombre de la obase de datos accedemos a ella y con el comando class() comprobamos que setrata de un dataframe. A continuaci´n con el comando attach() hacemos una ocopia de las variables contenidas en el dataframe. faithful class(faithful) attach(faithful)Los comandos summary() y fivenum() nos proporcionan los estad´ ısticos b´sicos apara una variable num´rica. Con el comando stem() obtenemos un diagrama ede tallos y hojas:
  14. 14. CAP´ ´ ITULO 2. ANALISIS DE DATOS 13 summary(eruptions) fivenum(eruptions) stem(eruptions)A continuaci´n vamos a recodificar la variable eruptions -num´rica- para con- o evertirla en una variable ordinal. Empleamos el comando cut() y establecemosun corte en 5 grupos. Con el comando class() verificamos que el nuevo ob-jeto creado -feruptions- es un factor. Vemos, a continuaci´n, el efecto de los ocomandos summary() y plot() sobre un objeto de tipo factor: feruptions<-cut(eruptions,breaks=5) class(feruptions) summary(feruptions) plot(feruptions)Los histogramas resultan muy utiles para estudiar la distribuci´n de variables ´ ode naturaleza cuantitativa. El comando hist() proporciona el histograma deuna variable. En concreto, el siguiente comando establece un histograma con 20clases en el que las frecuencias no son absolutas sino relativas -freq=FALSE-: hist(eruptions,breaks=20,freq=FALSE)En ocasiones preferimos suavizar el histograma mediante las llamadas Estima-ciones kernel de densidad. Lo conseguimos con el comando density() para elque hemos establecido un ancho de banda de 0,1. Puede ser interesante jugarcon el valor de bw y ver el efecto sobre el gr´fico: a lines(density(eruptions,bw=0.1))La inspecci´n del histograma nos hace ver que los datos no siguen ninguna de olas distribuciones te´ricas habituales -normal, gamma,...- Vamos a jugar algo om´s con los datos. ¿Para qu´ sirve el siguiente comando?: a e longeruptions<-eruptions[eruptions>=3]Comprob´moslo: e length(longeruptions) length(eruptions)
  15. 15. CAP´ ´ ITULO 2. ANALISIS DE DATOS 14Y ahora obtengamos el histograma y la estimaci´n de densidad para las erup- ociones de al menos tres minutos de duraci´n: o hist(longeruptions,breaks=10,freq=FALSE) lines(density(longeruptions,bw=0.1))Este histograma no es perfectamente normal pero ¿existe evidencia suicientepara rechazar que sea normal? Utilicemos el test de Kolmogorov-Smirnov: ks.test(longeruptions,"pnorm",mean(longeruptions),sqrt(var(longeruptions)))O el de Shapiro shapiro.test(longeruptions)¡Vaya! Son contradictorios. A ver qu´ nos dice un gr´fico Q-Q: e a qqnorm(longeruptions)2.3. Estad´ ıstica para dos variablesVamos a ver algunos comandos para estad´ıstica de dos variables. Para empezarcreamos dos vectores A y B, que contienen valores de ciertas variables: A<-c(79.98,80.04,80.02,80.04,80.03,80.03,80.04,79.97,80.05,80.03,80.02,80.00,80.02) B<-c(80.02,79.94,79.98,79.97,79.97,80.03,79.95,79.97)Con el comando boxplot() obtenemos un diagrama de caja para una, dos om´s variables: a boxplot(A) boxplot(A,B)El comando t.test() nos permite comprobar la hip´tesis nula de que la media oaritm´tica poblacional de la variable de la que se han obtenido las observaciones ede A toma el valor mu -frente a la alternativa de que la media poblacional esdistinta de mu: t.test(A,mu=0)
  16. 16. CAP´ ´ ITULO 2. ANALISIS DE DATOS 15Podemos modificar la direcci´n de la hip´tesis alternativa mediante el argumento o oalternative: t.test(A,mu=0,alternative="less")El mismo comando t.test() nos permite efectuar un contraste de hip´tesis osobre la igualdad de las medias de dos poblaciones: t.test(A,B)Por defecto, el comando t.test() asume que existe heterocedasticidad y portanto lleva a cabo la conocida como aproximaci´n de Welch -n´tese que los o ogrados de libertad no son un n´mero entero-. uPero, no tenemos por qu´ suponer heterocedasticidad. Vemos qu´ nos dice el co- e emando var.test(). Con ´l conseguimos efectuar el contraste sobre la igualdad ede las varianzas poblacionales de dos variables. var.test(A,B)Como el resultado del test de igualdad de varianzas no arroja evidencia emp´ ıri-ca suficiente como para rechazar la hip´tesis de igualdad de varianzas pode- omos modificar el comando t.test() mediante el argumento var.equal=TRUE. Secalcula de este modo una varianza estimada com´n a partir de las varianzas umuestrales de cada una de las variables: t.test(A,B,var.equal=TRUE)Para aplicar el test de la t de Student debemos suponer que los datos provienende una variable con distribuci´n normal -o aplicar el teorema central del l´ o ımite-Si esto no es as´ -o el teorema no es aplicable-, es mejor recurrir a la prueba no ıparam´trica correspondiente: e wilcox.test(A,B)Una utilidad adicional de la prueba de Kolmogorov-Smirnov es la de contrastarque dos conjuntos de datos provienen de la misma poblaci´n. ¿Es as´ en nuestro o ıcaso? ks.test(A,B)
  17. 17. CAP´ ´ ITULO 2. ANALISIS DE DATOS 162.4. Tablas en RVamos a echar un vistazo a las tablas en R. Por ejemplo, la base de datosTitanic es de la clase tabla, como podemos comprobar con el comando class(): Titanic class(Titanic)El comando summary() proporciona -cuando se aplica sobre una tabla- la pruebade hip´tesis Chi cuadrado sobre la independencia de las variables que componen olas dimensiones de la tabla: summary(Titanic)Especialmente interesante es el comando plot() aplicado sobre tablas: plot(Titanic)El comando mosaicplot() nos permite obtener representaciones parciales de latabla total: mosaicplot(~ Sex + Age, data=Titanic)Vamos, a continuaci´n, a extraer algunas subtablas de la tabla global. En con- ocreto, creamos la tabla AgeSurvived a partir de las variables 3 y 4 de la tablaTitanic. Igualmente, obtenemos la tabla ClassSex a partir de las variables 1y 2 de la tabla Titanic: AgeSurvived<-margin.table(Titanic,c(3,4)) ClassSex<-margin.table(Titanic,c(1,2)) ClassSex AgeSurvivedAhora podemos utilizar el comando assocplot() con el fin de obtener una rep-resentaci´n gr´fica de la desviaci´n respecto a la independencia de las variables o a oconsideradas. Este comando s´lo puede emplearse para tablas de contingencia ode dos variables: assocplot(ClassSex)
  18. 18. CAP´ ´ ITULO 2. ANALISIS DE DATOS 17 assocplot(AgeSurvived) summary(ClassSex) summary(AgeSurvived)Seguimos extrayendo tablas. ¿Qu´ ocurri´ con el Titanic? e o ClassSurvived<-margin.table(Titanic,c(1,4)) summary(ClassSurvived) assocplot(ClassSurvived)En nuestro repaso de las tablas en R hemos partido de una base de datos conformato de tabla -la base de datos Titanic- pero ¿c´mo podemos construir ouna tabla a partir de datos de un dataframe -por ejemplo-? Para verlo vamos aemplear la base de datos cars -que es de la clase dataframe-: cars attach(cars)Para empezar creamos dos factores a partir de las variables num´ricas: e fdist<-cut(dist,breaks=5) fspeed<-cut(speed,breaks=5)El comando table() nos da como resultado un objeto de la clase tabla, que enesta ocasi´n se guarda con el nombre de DistSpeed: o DistSpeed<-table(fdist,fspeed) DistSpeed plot(DistSpeed) summary(DistSpeed) assocplot(DistSpeed)
  19. 19. CAP´ ´ ITULO 2. ANALISIS DE DATOS 182.5. Regresi´n lineal oLa regresi´n lineal la efectuamos en R mediante el comando lm(). Su resultado oes un objeto de la clase lista, al que podemos aplicar otros comandos de lasiguiente forma: lr1<-lm(dist~speed) summary(lr1) anova(lr1) plot(lr1)Para obtener el diagrama de dispersi´n de las variables recurrimos al comando oplot() y a˜adimos una l´ n ınea recta -la recta de regresi´n- mediante el comando oabline() al que le pasamos los valores correspondientes del objeto lr1 -que esel que almacena los resultados del ajuste lineal-: plot(speed,dist) abline(lr1)Podemos estudiar la existencia de observaciones influyentes mediante el coman-do influenc.measures() tomado como argumento unico el objeto que guarda ´los resultados de la regresi´n: o influence.measures(lr1)Para terminar con la regresi´n veamos un ejemplo de regresi´n lineal m´ltiple o o u-trabajamos con la base de datos LifeCycleSavings-. Es especialmente intere-sante ver la sintaxis de la formula que recoge la relaci´n entre las variables oex´genas y end´gena: o o LifeCycleSavings fm1 <- lm(sr ~ pop15 + pop75 + dpi + ddpi, data = LifeCycleSavings) summary(fm1) anova(fm1)
  20. 20. CAP´ ´ ITULO 2. ANALISIS DE DATOS 192.6. An´lisis de componentes principales aVamos a ver c´mo resuelve R el an´lisis de componentes principales. Para ello o avamos a emplear la base de datos USArrests, que recoge datos sobre detencionesefectuadas en diferentes estados de EE.UU.: USArrests plot(USArrests) # matriz de diagramas de dispersi´n o pc1<-princomp(USArrests) # guardamos los resultados del ACP en pc1 plot(pc1) #valores propios. ¿Es adecuado el ACP? biplot(pc1) #representaci´n simult´nea de variables e individuos o a pc1<-princomp(USArrests,scale=TRUE) #trabajamos con la matriz cor. biplot(pc1) summary(pc1) pc1$scores # puntuaciones de los individuos sobre los ejes2.7. Ejemplo de tipolog´ de Comunidades Aut´no- ıa o mas con el paquete ade4 (Cuidado: Antes de utilizar el package ade4 es preciso insta- larlo)Leemos los datos y creamos el data.frame DatosComunidades. DatosComunidades<-read.table("Prueba.txt", header=TRUE)Efectuamos un an´lisis de componentes principales normado y ponderado (con la apoblaci´n de las comunidades aut´nomas) empleando el comando dudi.pca(): o o library(ade4) acp2<-dudi.pca(subset(DatosComunidades,select=-c(UE15,POBLACION)),row.w=DatosComunidVeamos el resumen de resultados:
  21. 21. CAP´ ´ ITULO 2. ANALISIS DE DATOS 20 acp2El c´ ırculo de correlaci´n: o s.corcircle(acp2$co)Las coordenadas de las Comunidades Aut´nomas en el nuevo sistema de refer- oencia: s.label(acp2$li)Ahora vamos a aplicar un algoritmo de clasificaci´n jer´rquica ascendente con el o acomando hclust(). Previamente debemos calcular la matriz de distancias entrelas Comunidades Aut´nomas para lo que nos valdremos del comando dist(): o dist1<-dist(subset(DatosComunidades,select=-c(UE15,POBLACION))) dist1 clust1<-hclust(dist1) plot(clust1)2.8. An´lisis de componentes principales con Fac- a toMineRCargamos el package: library(FactoMineR)Efectuamos un ACP y guardamos los resultados en el objeto acp2: acp2<-PCA(subset(DatosComunidades,select=-c(UE15,POBLACION)),row.w=DatosComunidades$Vemos los resultados referidos a los valores propios (incluidos porcentajes deinercia acumulados y sin acumular correspondientes a cada componente princi-pal): acp2$eigLos resultados para los individuos (coordenadas, contribuciones y cosenos cuadra-dos):
  22. 22. CAP´ ´ ITULO 2. ANALISIS DE DATOS 21 acp2$indLos resultados para las variables (coordenadas, correlaciones con los compo-nentes principales, contribuciones y cosenos cuadrados): acp2$var
  23. 23. Cap´ ıtulo 3Varios3.1. PackagesLas instalaciones de R consisten en un m´dulo b´sico y un conjunto de packages o arecomendados -alrededor de 25-. Sin embargo existen cientos de packages querecogen las contribuciones de la comunidad que desarrolla R as´ como de otros ıinvestigadores. Para ver cu´les son los packages que se encuentran instalados aen R debe utilizarse el comando library(). Este mismo comando sirve paracargar un package previamente instalado, en la forma library(package). Elcomando search() proporciona un listado de los packages activos.La forma m´s sencilla de instalar un nuevo package es mediante la opci´n a oPaquetes / Instalar paquetes a partir de archivos zip locales que se encuen-tra disponible en el men´ principal de R Gui. Obviamente es necesario haber uobtenido previamente el package en formato zip.3.2. Ayuda en RLa sintaxis de R es relativamente complicada. Por ese motivo es del m´ximo ainter´s disponer de una buena ayuda on-line. Esa ayuda se puede invocar de evarias maneras: help.start() #arranca el navegador y la ayuda on-line help(comando) #proporciona ayuda sobre un comando en particular help.search(caracter") #busca ayuda sobre el tema caracter" library(help=package) #proporciona ayuda sobre los comandos de un package concreto example(comando) #proporciona ejemplos sobre un comando concreto 22
  24. 24. CAP´ ITULO 3. VARIOS 233.3. Establecer el directorio de trabajoPara conocer cu´l es el directorio de trabajo por defecto debemos utilizar la fun- aci´n getwd(). A continuaci´n podemos establecer el nuevo directorio de trabajo o omediante la funci´n setwd(), del siguiente modo: o setwd("c:/docs/mydir")3.4. ´ Area de trabajo en R (Workspace)El ´rea de trabajo es el lugar donde R guarda todos los objetos que est´n activos a aen un momento dado. Se puede obtener una copia del ´rea de trabajo mediante ael comando save.image().Si, por ejemplo, deseamos obtener una copia de todos los objetos del ´rea de atrabajo en el archivo .RData -archivo de ´rea de trabajo por defecto- deberemos aescribir: save.image()Si deseamos guardar s´lo algunos de los objetos y, adem´s, deseamos hacerlo en o aun archivo con un nombre distinto deberemos emplear el comando: save(ListaDeObjetos,file="myfile.RData")Cuando deseemos recuperar los objetos copiados en un archivo de ´rea de tra- abajo debemos emplear la funci´n: o load("myfile.RData")3.5. Hist´rico de comandos oSi deseamos guardar una copia de los comandos que hemos utilizado o cargarlaen la memoria debemos emplear respectivamente los comandos savehistory(file= ".Rhistory") y loadhistory(file = ".Rhistory").
  25. 25. CAP´ ITULO 3. VARIOS 243.6. Ejecuci´n de comandos desde un archivo de o textoAdem´s de trabajar interactivamente con R tambi´n es posible escribir un con- a ejunto de comandos -correspondientes, por ejemplo, a un an´lisis determinado- y aejecutar todos ellos de una sola vez -esta forma de funcionamiento se llama pro-ceso por lotes (batch processing)-. Podemos acceder a ella mediante el comandosource(). Por ejemplo, el siguiente comando ejecuta los comandos recogidos enel fichero de texto MiFichero.txt situado en el directorio de trabajo : source("MiFichero.txt")3.7. Trabajo con gr´ficos aAdem´s de ver los gr´ficos en la consola gr´fica puede interesar obtener una a a acopia de ellos para incluirlos en un documento de texto o en un informe. Paraello se puede utilizar el siguiente conjunto de comandos: jpeg("c:/MisGraficos/myplot.jpg") plot(x) dev.off()El primer comando indica a R que debe guardar una copia del gr´fico en un aarchivo llamado myplot.jpg situado en el directorio C:/MisGraficos. Adem´s, ael formato del gr´fico ser´ jpg -cabe tambi´n crear gr´ficos con formato pdf, a a e aWindows Metafile, png, etc´tera-. El segundo comando recoge la generaci´n del e ogr´fico. El tercero devuelve el destino de los gr´ficos a la consola gr´fica. a a a
  26. 26. Bibliograf´ ıaBerk, R.A. (2008); Statistical Learning form a Regression Perspective; Springer.Bliese, P. (2006); Multilevel Modeling in R;Burns, P. (2003); A Guide for the Unwilling S UserChambers, J.M. (2008); Software for Data Analysis. Programming with R;SpringerCohen, Y; Cohen, J.Y. (2008); Statistics and Data with R: An Applied ApproachThrough Examples; WileyCook D., Swayne D.F. (2007); Interactive and Dynamic Graphics for Data Anal-ysis; Springer.Crawley, M.J. (2007); The R Book; Wiley.Dalgaard, P. (2002); Introductory Statistics with R; SpringerEveritt B.S. (2005); And R and S-Plus Companion to Multivariate Analysis;Springer.Faraway J.J. (2002); Practical Regression and Anova using RFarnsworth, G.V. (2006); Econometrics in RGalwey N.W. (2006); Introduction to Mixed Modelling. Beyond Regression andAnalysis of Variance; Wiley.Gelman, A., Hill, J. (2007); Data Analysis Using Regression and Multilevel/HierarchicalModels; Cambridge University PressKuhnert, P., Venables, B. (2005); An Introduction to R: Software for StatisticalModelling & Computing; CSIRO.Maindonald, J.H. (2008); Using R for Data Analysis and Graphics. Introuduc-tion, Code and Commentary; Australian National UniversityMaindonald J., Braun J. (2003); Data Analysis and Graphics Using R – anExample-based Approach; Cambridge University Press.Marques de S´, J.P. (2007); Applied Statistics Using SPSS, STATISTICA, aMATLAB and R; 2nd edition; Springer. 25
  27. 27. CAP´ ITULO 3. VARIOS 26Muenchen, B. (2007); R for SAS and SPSS UsersMurrel P. (2006); R Graphics; Chapman & Hall / CRCOwen, W.J. (2007); The R Guide; University of RichmondParadis E. (2005); R for Beginners.Quen´, H. (2006); Statistics with R and S-Plus; Utrecht University eRobinson, A. (2008); icebrakeR; University of MelbourneSeefeld, K., Linder, E. (2007); Statistics using R with Biological Examples;University of New HampshireTorgo, L. (2003); Data Mining with R: learning by case studies.Venables W..N., Smith, D.M. (2008); An Introduction to R. Notes on R: AProgramming Environment for Data Analysis and Graphics.Venables W.N., Ripley B.D. (2000); S Programming; Springer.Venables W.N., Ripley B.D. (2002); Modern Applied Statistics with S 4th edi-tionVerzani, J. (2002); simpleR. Using R for Introductory StatisticsWang, K.K. (2002); R for Windows Users; Department of Statistics; New Zealand
  28. 28. Recursos onlineP´gina del proyecto R: http://www.r-project.org/ aThe Comprehensive R Archive Network: http://cran.r-project.org/R wiki: http://wiki.r-project.org/R news: http://cran.r-project.org/doc/Rnews/R en Wikipedia: http://en.wikipedia.org/wiki/R_%28programming_language%29P´gina web de Quick-R: http://www.statmethods.net/ aR Graphical Manual: http://bm2.genes.nig.ac.jp/RGM2/index.phpR video tutorials: http://www.decisionsciencenews.com/?p=261P´gina de JGR. Java GUI for R: http://jgr.markushelbig.org/JGR.html aResources to help you learn and use R: http://www.ats.ucla.edu/stat/R/Rtips (consejos para trabajar con R): http://pj.freefaculty.org/R/Rtips.htmlR for Categorical Data Analysis: http://www.stat.ufl.edu/~presnell/Courses/sta4504-2000sp/R/R-CDA.pdfPagina de la conferencia useR! 2008: http://www.r-project.org/useR-2008Statistical Analysis on the Web (RWeb): http://bayes.math.montana.edu/Rweb/Rweb.general.htmlR graph gallery: http://addictedtor.free.fr/graphiques/Statistics with R: http://zoonek2.free.fr/UNIX/48_R/all.htmlSerie use R de Springer: http://www.springer.com/series/6991Curso b´sico de R de la Universidad de Barcelona: http://www.ub.es/stat/ adocencia/EADB/Curso%20basico%20de%20R.htmCurso introductorio de R de Ra´l Vaquerizo Romero: http://es.geocities. ucom/r_vaquerizo/Manual_R_menu.htm 27
  29. 29. CAP´ ITULO 3. VARIOS 28A Brief Guide to R for Beginners in Econometrics: http://people.su.se/~ma/R_intro/Introduction to Statistical Thought: http://www.stat.duke.edu/~michael/book.htmlStatistical Computing with R: a tutorial: http://www.math.ilstu.edu/dhkim/Rstuff/Rtutor.htmlFactoMiner: http://factominer.free.fr/

×