270 likes | 427 Views
Sesión I. José Bustos 1 & Alex Mellado 2 1 Magister Estadística Aplicada, Análisis Estadístico Profesional AESpro. 2 Magister (c) Epidemiología, Departamento de Salud Pública, PUC. Lunes 18 de Julio de 2011. Descarga de R y otras más. Links de descargas
E N D
Sesión I José Bustos1 & Alex Mellado2 1 Magister Estadística Aplicada, Análisis Estadístico Profesional AESpro. 2 Magister (c) Epidemiología, Departamento de Salud Pública, PUC. Lunes 18 de Julio de 2011
Descarga de R y otras más Links de descargas http://dirichlet.mat.puc.cl/bin/windows/ # descarga de R http://cran.r-project.org # descarga de librerías http://cran.r-project.org/manuals.html # manuales (html y PDF) http://www.r-project.org/doc/bib/R-publications.html # publicaciones sobre R http://cran.r-project.org/doc/Rnews/ # noticias sobre R Tienen R instalado?
Interfaz de R • En la Interfaz de R. No hay menú “colgante” para análisis estadístico! • Existe un “área de trabajo”, llamada consola, disponible para la construcción de consultas matemáticas, estadísticas y gráficas.
Interfaz de R • Interfaz de S-Plus. Hay menú “colgante” para análisis estadístico, pero pagas por eso.
Interfaz de R: Uso del menú colgante de R • archivo|nuevo script # abre scrip para almacenar comandos (archivo .R) • archivo|abrir script # abre scrip guardado por el usuario (archivo .R) • archivo|guardar área trabajo # guarda sesión activa de R (archivo .Rdata) • archivo|cargar area de trabajo # carga sesión desde archivo .R (archivo .Rdata) • save.image() # guarda sesión activa en archivo ".Rdata“ • save(x, y, file = "xy.Rdata") # guarda objetos específicos en archivo "xy.Rdata“ • load(".RData") # carga sesión por defecto • paquetes|instalar paquetes a partir de zip local # igual a install.packages(“package") • editar|editor de datos # permite editar dataframe en una planilla tipo Excel • > fix(datos) # igual al comando anterior • archivo|salir # salir de R • > q() # salir de R
Uso de Scripts • Un “script” es un editor de comandos de R (se abre con Archivo|nuevo script). • Use el comando Ctrl-R para ejecutar un comando. Use Ctrl-S para guardar el archivo en disco (en un archivo con extensión .R). • Los comandos de uso frecuente pueden guardarse en un archivo .R y ejecutarlo con Archivo|abrir script al iniciar la sesión de R. También se puede usar el block de notas de Windows para escribir archivos de comandos (y ejecutarlos en R usando copy/paste).
Historial de comandos • Dado que los comandos en R son relativamente complicados, es conveniente saber manejar la “historia de comandos” dados en una sesión. > savehistory() # guarda comandos tipeados en R > loadhistory() # recupera comandos (.Rhistory) Menú: archivo|guardar histórico # igual a savehistory() Menú: archivo|cargar histórico # igual a loadhistory() > history() # muestra historia de comandos • Los comandos se recuperan con las flechas up y down del teclado. Pueden ser editados, copiados y pegados en la línea de comandos de R. • Si se quiere almacenar un conjunto específico de comandos se debe usar un script.
Interfaz de R: uso de comandos básicos # ------------------------------------- # Comandos iniciales básicos # el signo “#” se usa para iniciar un comentario # ------------------------------------- Comandos de ayuda > help.start() # ayuda inicial de R en html > help() # menú de ayuda de R en chm > help.search("command") # busca librería donde está el comando dado
Library() El comando library() muestra la librería de packages disponibles en R en el momento que instalaste R. Si se han instalado paquetes adicionales o versiones actualizadas de R, el resultado será distinto al mostrado en la ventana. Por ejemplo: el package “foreign” se encuentra disponible en esta version de R. En cambio el package “xlsReadWrite” que permite leer y escribir archivos Excel debe ser instalado.
Comandos básicos: Instalación de paquetes o packages • Para usar las funciones de un package, éste debe estar disponible para su consulta. (como aquellos que vimos anteriormente ya instalados: lattice, nlme o mgcv por ejemplo). Podemos usar los siguientes comandos para ello: > search() # muestra packages activos > install.packages() # abre ventana con packages para descargar > install.packages(“packagename") # instala package no incluido en R > library(foreign) # lectura/escritura de bases dBase y SPSS > library(xlsReadWrite) # lectura/escritura de bases Excel > library(tree) # arboles de decisión > library(effects) # grafico de efectos en modelos > library(lattice) # opciones graficas avanzadas > library(nlme) # modelos de mixtos lineales y no lineales > library(mgcv) # modelos GAM (generalized additive models) > library(survival) # sobrevida noparametrica, parametrica, Cox
Instalación de paquetes o packages • > install.packages() • El comando install.packages() permite instar nuevos paquetes en R (requiere tener conexión a Internet). • Las librerías son aportes hechos por colaboradores de todo el mundo (matemáticos, estadísticos, epidemiólogos, genetistas, administradores públicos, etc). • Muchas veces los packages están relacionados con algún texto, como “nlme” (modelos de efectos mixtos) que validan en su comunidad científica su utilización.
Lenguaje de R (convenciones) • Una característica importante de R es que es “case sensitive”. Es decir, hace diferencia entre letras mayúsculas y minúsculas. > x, X, z1, Z1, Y.star # nombres válidos para objetos en R > c,I,q,t,s, TRUE,FALSE,pi,... # nombres reservados en R > 2+1 # evaluación de expresiones aritméticas [1] 3 > 3*(5/21 + log(3.3)) [1] 4.296053 • Operadores aritméticos básicos: +, -, *, /, ^ . • Símbolo ^ se usaparapotencias. Se puedeusar ** en vez de ^. • Para multiplicarescalares se usa *. Para multiplicar matrices se usa %*%.
Lenguaje de R (convenciones) • Hay palabras específicas en R para referirse a cosas que no son número (NaN), valores ausentes (NA) y operaciones con infinito (Inf o –Inf). > 1/0 [1] Inf > -1/0 [1] -Inf > 0^Inf [1] 0 > (0:3)^Inf [1] 0 1 Inf Inf > 1/NA [1] NA > NA-NA [1] NA > Inf/NA [1] NA > NaN/NA [1] NA Operaciones con ∞ Operaciones con NA > 0/0 [1] NaN > Inf-Inf [1] NaN > Inf/Inf [1] NaN NaN, NA, Inf y –Inf tienen el mismo significado si se usan en una base de datos a ser leída por R. Operaciones con NaN
Lenguaje de R (convenciones) Asignaciones usando <- o= > a <- 6 # asignación. a variable “a” se le asigna el valor 6 > 6 -> a # asignación. igual al anterior > a = 6 # asignación. no puede usarse 6=a > a <- b <- 6 # doble asignación. a y b toman el valor 6 > a <- 6; b <- a+1 # con ";" se pueden dar varios comandos por línea > texto <- "the quick brown fox jumps over the lazy dog" > texto [1] "the quick brown fox jumps over the lazy dog“ >sd • El último comando muestra que al usar el objeto definido como si fuera un comando, R muestra el contenido del objeto.
Lenguaje de R (convenciones) Operadores relacionales y lógicos > 2==3 # comparación. arroja resultado TRUE o FALSE [1] FALSE > (2==3) | (4==2*2) # mezclas de comparaciones y funciones lógicas [1] TRUE • Los operadores relacionales son: • == (igual), > (mayor que), < (menor que), <= (menor o igual que), >= (mayor o igual que), != (distinto) • Los operadores lógicos son: & (and), | (or), ! (not) > !(3 != 2) # cual es el resultado de esta operacion?
Lenguaje de R (convenciones) Para repetir secuencias de valores numéricos se usa el comando rep. > rep(3,8) # repite 1er nro las veces indicadas por 2do nro [1] 3 3 3 3 3 3 3 3 > rep(1:3,2) # repite 2 veces la secuencia 1:3 [1] 1 2 3 1 2 3 > rep(1:3,each=2) # repite 2 veces cada nro de la secuencia 1,2,3 [1] 1 1 2 2 3 3 > rep(1:3,each=2,times=3) # repite 3 veces el comando rep(1:3,each=2) [1] 1 1 2 2 3 3 1 1 2 2 3 3 1 1 2 2 3 3 > rep(1:3,2:4) # repite c/valor de 1:3 las veces indicada en 2:4 [1] 1 1 2 2 2 3 3 3 3 > rep(1:3,c(4,1,2)) # repite c/valor de 1:3 las veces indicada en c() [1] 1 1 1 1 2 3 3
Lenguaje de R (convenciones) Generación de <= de dos niveles para un factor • El comando gl se usa para generar niveles de un factor. Aunque es similar a rep, al usar gl se genera una variable que es entendida como categórica por los modelos, lo cual no es automático con rep. > gl(4,2) # levels: 4 niveles, c/u repetido 2 veces [1] 1 1 2 2 3 3 4 4 Levels: 1 2 3 4 > gl(4,3,15) # igual al anterior hasta completar 15 datos [1] 1 1 1 2 2 2 3 3 3 4 4 4 1 1 1 Levels: 1 2 3 4 > gl(4,3,17) # igual al anterior (trunca el número de niveles) [1] 1 1 1 2 2 2 3 3 3 4 4 4 1 1 1 2 2 Levels: 1 2 3 4 > gl(3,2,12,labels=c(“a",“b",“c")) # generación de niveles character [1] a a b b c c a a b b c c Levels: a b c
Lenguaje de R (convenciones) Valores ausentes • Toda variable numérica, carácter o lógica puede tomar el valor NA (notavailable). Operaciones con objetos que involucran valores NA pueden dar como resultado NA. > 1+NA [1] NA > datos <- c(1.5, 4.6, -1.1, 2.8, NA) # vector numerico con dato NA > mean(datos) [1] NA > mean(datos, na.rm=T) [1] 1.95 > letras <- c("a", "b", "b", "b", "a", NA) # vector character con dato NA > table(letras) letras a b 2 3
Lenguaje de R (convenciones) Lenguaje de comandos para algunas funciones matemáticas en R
Lenguaje de R: creación de objetos Manipulación de objetos (escalares, vectores o matrices) > objects() # muestra objetos activos en sesión de R > ls() # igual a objects() > rm(objeto1,objeto2,...) # remueve objetos indicados > rm(list=ls()) # remueve todos los objetos en sesión actual > a <- 20 # definición de variable numérica > saludo <- "Hello World” # definición de variable character > compara <- 3<2 # definición de variable lógica (TRUE o FALSE) > compleja <- 3+2i # definición de variable compleja > mode(saludo) # muestra el tipo (atómico) de variable [1] "character" > mode(compara) [1] "logical"
Lenguaje de R: creación de objetos Manipulación de objetos (escalares, vectores o matrices) > y <- 1 # escalar y (vector de largo 1) > y <- 10:16 # vector con datos correlativos 10 al 16 > y <- c(10:16) # igual al anterior (usando “concatenate”) > y <- c(10,11,12,13,14,15,16) # igual al anterior > length(y) # largo del vector Para ver el contenido de un vector se puede dar el nombre como comando > y [1] 10 11 12 13 14 15 16 Para ver valores específicos se usa [ ] para indicar elementos a mostrar > y[2]; y[3:5] [1] 11 [1] 12 13 14
Lenguaje de R: creación de objetos Manipulación de objetos (escalares, vectores o matrices) > x <- c(1, 5, 7, 9, 12, 23, 30, 38, 40, 50) > g <- c("A", "A", "A", "A", "A", "B", "B", "B", "B", "B") Mostrar valores de x según distintas condiciones sobre x, g o ambos: > x[x>=30] [1] 30 38 40 50 > x>30 # produce un efecto distinto al comando anterior [1] FALSE FALSE FALSE FALSE FALSE FALSE FALSE TRUE TRUE TRUE > x[g=="B"] #nótese que x y g son objetos aislados [1] 23 30 38 40 50 > x[g != "B” & x>7] [1] 9 12
Lenguaje de R: creación de objetos Manipulación de objetos (escalares, vectores o matrices) Hay varias formas de generar secuencias numéricas en R (regulares o irregulares). > x <- 10:15 # secuencia regular: 10,11,12,13,14,15 > x <- 15:10 # secuencia regular inversa: 15,14,13,12,11,10 > x <- -1.5:4.5 # secuencia regular: -1.5, -0.5, 0.5, 1.5, 2.5, 3.5, 4.5 > x <- -1.5:4 # secuencia regular truncada: -1.5, -0.5, 0.5, 1.5, 2.5, 3.5 > x <- seq(10, 15) # igual a x<-10:15 (secuencia regular) > x <- seq(10, 30, 5) # secuencia intervalo distinto de 1 (r: 10,15,20,25,30) > x <- seq(10, 30, 7) # secuencia truncada (r: 10,17,24) > x <- seq(1.5, 0.7, -0.2) # secuencia inversa (r: 1.5, 1.3, 1.1, 0.9, 0.7) > x <- sequence(5) # secuencia que comienza desde 1 (r: 1,2,3,4,5) > x <- sequence(c(5, 2, 4)) # secuencias consecutivas (r: 1,2,3,4,5,1,2,1,2,3,4)
Lenguaje de R: creación de objetos Funciones para vectores • Las funciones sobre vectores serán útiles más adelante cuando se manipulen variables de bases de datos (que también son vectores). > xnew <- sort(x) # ordenamiento de x (creciente) > xnew <- sort(x, decreasing=T) # orden decreciente > xnew <- rev(x) # vector en orden reverso > xnew <- rev(sort(y)) # ordenamiento de x decreciente > xnew <- rank(x) # rangos de vector x > xnew <- rank(x,ties="min") # ranking típico de deportes > xnew <- order(x) # indicadores de posición de datos en x si # estuvieran ordenados > x[order(y)] # muestra valores de x ordenados según y
Lenguaje de R: creación de objetos Función “cbind” • La función cbind es útil para crear una especie de dataframe (aunque en realidad es una matriz) a partir de un conjunto de vectores que sean objetos aislados en R. > peso <- c(2300, 3000, 3150, 3540, 2900) > talla <- c(49, 50.5, 52, 50, 49.5) > ID <- 1:5 > datos <- cbind(ID, peso, talla) > datos ID peso talla [1,] 1 2300 49.0 [2,] 2 3000 50.5 [3,] 3 3150 52.0 [4,] 4 3540 50.0 [5,] 5 2900 49.5 >
Lenguaje de R: creación de objetos Matrices* *Aunque en este curso manejaremos principalmente vectores, aquí se muestran las operaciones básicas con matrices. > x <- matrix(0, 2, 2) # generación de matriz 2x2 inicializada en 0 > x <- matrix(c(1,2,1,3),ncol=2) # matriz 2x2 por columnas: col1=(1,2)^t col2=(1,3)^t > x <- matrix(c(1,2,1,3),nrow=2) # matriz 2x2 por filas: row1=(1,2)^t row2=(1,3)^t > ident <- diag(3) # genera matriz identidad de 3x3 > dim(x) # dimension de la matriz > y <- t(x) # matriz traspuesta de x > y <- solve(x) # matriz inversa de x > y <- t(x)%*%x # producto matricial: t(x)*x > y <- x*z # x*z multiplica elemento a elemento
Ejercicio 1 • Genere los siguientes objetos: • vector peso: 58, 67, 54, 56.5, 55.1, 79.3, 66.7, 75, 83.9, 71 • vector talla: 1.56, 1.66, 1.7, 1.57, 1.68, 1.7, 1.73, 1.68, 1.8, 1.76 • Genere un vector imc definido como el peso dividido por la talla al cuadrado. Describa el vector imc (peso / talla2) • Genere un vector sexo que tome el valor F para los primeros 5 registros y el valor M para los últimos 5 registros (use comandos rep o gl) • Describa el vector imc en forma separada para cada sexo • Genere una matriz llamada datos con los 4 vectores: peso, talla, imc y sexo. Muestre la matriz en pantalla • En el vector peso, cambie el valor 83.9 (penúltimo dato) por NA. Describa el vector resultante. • Ejecute el comando: peso[order(talla)]. ¿Qué interpretación tiene el vector resultante? • Aplique el siguiente comando a sus objetos (summary)