Documente Academic
Documente Profesional
Documente Cultură
Gua de campo de R
De Wiki IMBIV
http://wiki.imbiv.unc.edu.ar/index.php/Gu%C3%ADa_de_campo_de_R 1/62
7/7/2016 Gua de campo de R - Wiki IMBIV
Contenido
1 PRLOGO
2 INTRODUCCIN
2.1 Antes de empezar
2.2 Las ayudas para R
2.3 Sobre los paquetes y su instalacin
2.4 Sobre los objetos
2.5 Flujo del Trabajo en R
2.6 Sobre las rutinas
3 BASES DE DATOS
3.1 La base de datos a usar
3.2 Importando y exportando bases de datos
3.2.1 Importando
3.2.2 Exportando
4 TRABAJANDO CON BASES DE DATOS
4.1 Extrayendo informacin de un data.frame
4.2 Accediendo a la informacin contenida en un data.frame
4.3 Trabajando con columnas
4.3.1 La informacin de una columna
4.3.2 Creando nuevas columnas
4.3.3 Modificando una columna
4.4 Trabajando con filas
4.5 Uniendo bases de datos
4.6 Dividiendo bases de datos
4.7 Ordenando la base de datos
5 ESTADSTICA DESCRIPTIVA Y PRUEBAS BSICAS
5.1 Medias, varianzas y dems
5.2 Funciones que retornan matrices
5.3 Pruebas bsicas
6 GRFICOS BSICOS
6.1 Funciones bsicas de alto nivel
6.2 Funciones bsicas de bajo nivel
6.3 Argumentos comunes a varias funciones grficas
6.3.1 Smbolos para graficar
6.3.2 Colores para graficar
6.4 Sobre el espacio de graficacin
http://wiki.imbiv.unc.edu.ar/index.php/Gu%C3%ADa_de_campo_de_R 2/62
7/7/2016 Gua de campo de R - Wiki IMBIV
PRLOGO
Con esta gua buscamos aportar los fundamentos bsicos para utilizar R de la manera ms eficiente. R es un programa con
grandes capacidades, sin embargo, en esta gua nos enfocamos en el manejo de bases de datos y anlisis bsicos. Como somos
bilogos esta gua est sesgada al contexto de anlisis de datos biolgicos seguiendo la lgica de una gua de campo la cual,
idealmente, debe ser concisa, liviana y bien ilustrada.
Para aquellos que comienzan a usar R, el manejo de bases de datos, la modificacin de columnas y/o filas o la obtencin de
estadsticas bsicas son uno de los principales retos. Muchas veces los principiantes se ven tentados a regresar a los viejos
programas y dejan R para el momento de hacer anlisis "sofisticados". Esta prctica es en realidad muy poco eficiente y
cortoplacista ya que obtienes lo necesario en el momento pero dejas de lado el proceso de aprendizaje de un lenguaje que, a
largo plazo, impactar en tu capacidad de anlisis y creatividad. Otra ventaja importante es que, de la misma manera en que
comunicas ideas al escribir un libro o un artculo, puedes escribir los anlisis usando R. Esto permite dejar un registro completo
de los procedimientos que se siguieron, permitiendo repetir los anlisis meses o aos despus, adems de poder compartirlos
con otras personas.
Esta gua est dirigida a aquellas personas que quieren comenzar a utilizar R o a aquellas personas que, como nosotros, siempre
olvidan algunas funciones y quisieran tener una ayuda a mano. En especial pensamos en estudiantes de licenciatura y en aquellos
que comienzan su posgrado, pero tambin estamos seguros que hay varios investigadores consagrados que quisieran comenzar a
usar este lenguaje.
La gua est estructurada siguiendo las etapas generales del anlisis de datos tales como ingreso de datos, modificacin de bases
de datos, estadsticos bsicos, grficos y modelos lineales. No pretendemos cubrir exhaustivamente diferentes anlisis
estadsticos sino brindar una gua bsica para el proceso de anlisis usando R.
http://wiki.imbiv.unc.edu.ar/index.php/Gu%C3%ADa_de_campo_de_R 3/62
7/7/2016 Gua de campo de R - Wiki IMBIV
Finalmente, R es un software libre que puede ser copiado, distribuido y modificado a voluntad, lo que permite generar nuevas
rutinas y paquetes de anlisis. Esto te convierte en participante del desarrollo cientfico y no en un simple cliente que condiciona
su creatividad a la paga de una licencia de un software cerrado, el cual evoluciona independientemente de las necesidades del
usuario. La utilizacin de programas como R es una oportunidad que instituciones de caracter pblico y en especial de pases en
desarrollo, no deben dejar pasar.
Esperamos que esta versin wiki de la Gua de Campo de R sea de utilidad para cualquiera que quiera comenzar a trabajar con
este lenguaje y de manera especial esperamos contribuir a la formacin de los estudiantes e investigadores del Instituto de
Ecologa de la Universidad Nacional Autnoma de Mxico y del Instituto Multidisciplinario de Biologa Vegetal de la
Universidad Nacional de Crdoba - CONICET, las instituciones donde trabajamos. Por ser esta una versin wiki esperamos
que sufra modificaciones con el tiempo y estamos abiertos a sugerencias, correcciones y adiciones de nuevos captulos por parte
de cualquier interesado en colaborar con esta tarea. Los contenidos de esta gua son de libre difusin citando la fuente.
Los autores
Diego Carmona
Santiago Benitez-Vieyra
INTRODUCCIN
Antes de empezar
Creemos importante comenzar la gua resaltando que R es un lenguaje y que su aprendizaje, como todos, se halla asociado a una
curva (Fig. 1). Tener esto en mente, pensamos, debera de disminuir la ansiedad al tratar de comunicarse con R. Tambin, en
esta seccin te compartimos cuatro smbolos bsicos para comenzar a entender la sintaxis de R.
http://wiki.imbiv.unc.edu.ar/index.php/Gu%C3%ADa_de_campo_de_R 4/62
7/7/2016 Gua de campo de R - Wiki IMBIV
Esta curva de aprendizaje muestra como aprender a usar R lleva tiempo y claramente impacta en nuestra relacin cognitivo-
emocional con el programa. Es muy probable que los saltos ocurran en diferente orden, lo relevante es notar el proceso.
http://wiki.imbiv.unc.edu.ar/index.php/Gu%C3%ADa_de_campo_de_R 5/62
7/7/2016 Gua de campo de R - Wiki IMBIV
<-
El smbolo asignar. Guarda el resultado de una operacin dentro de un
objeto llamado a en el ejemplo (el nombre es elegido arbitrariamente por el
usuario). Si utilizo nuevamente ese nombre en una asignacin (por ej a<-
a <- 4 + 6
c(1:20)) el primer objeto se pierde. El smbolo = puede sustituir a <- (hay
rutinas donde lo hacen as) pero esto podra resultar confuso en ciertos
casos, por lo que no es recomendable.
?
?mean Si tienes duda sobre una funcin, puedes obtener informacin (poco
amable, pero bsica) usando el signo de interrogacin. Si desconoces el
?lm
nombre de la funcin que realizara determinada accin, puedes hacer que R
??"linear models" busque en todos los paquetes instalados usando ??
vector <- c(1:4) c concatena (pega) elementos, ya sea numricos, categricos. Es una de las
funciones ms bsicas.
vector <- c(a, b, c, d)
marcadores o bookmarks en tu navegador. Algunas pginas de internet pueden ser de ayuda general, pero adems existen
muchas listas de correo donde los usuarios postean preguntas y respuestas. Casi siempre alguien ha tenido previamente el mismo
problema que tu tienes, estas listas son el lugar ideal para buscar posibles soluciones.
function {package}
Esta parte identifica la funcin. El paquete debe estar cargado (ver seccin 1.3) para que la ayuda funcione.
Description.
Usage.
Parte central de la ayuda. Toda funcin acta sobre una serie de argumentos, los cuales se hallan encerrados entre
parntesis y separados por comas. En esta seccin se enumeran todos los argumentos posibles (a veces es posible
agregar argumentos adicionales no descriptos, en este caso se indica con puntos suspensivos). Estos argumentos se
dividen en dos grupos, aquellos fijados en un valor por defecto (por ejemplo na.rm = FALSE, notar el smbolo igual) y
aquellos que requieren que se especifique su valor (por ejemplo data). Estos ltimos pueden ser optativos u obligatorios.
Arguments.
Descripcin ms detallada de los argumentos. Es muy importante que prestes atencin al tipo de objeto (como marcos de
datos, vectores, frmulas o valores lgicos) que requiere cada argumento.
Value.
Especifica la salida de la funcin. En general, cuando se realiza un anlisis estadstico, la funcin crea un objeto que guarda
diferentes aspectos del resultado. Por ejemplo, si lo que realizamos es una regresin lineal y llamamos fit a nuestro anlisis,
los parmetros de la regresin estarn en fit$coeffcients, los residuales en fit$residuals, etc. Muchas veces no queremos
conocer todos esos resultados, sino solamente un resumen. Esta actividad la realiza casi siempre la funcin summary.
Las funciones grficas solamente crean o modifican grficos, en general no tienen valores que mostrar.
Author.
References.
http://wiki.imbiv.unc.edu.ar/index.php/Gu%C3%ADa_de_campo_de_R 7/62
7/7/2016 Gua de campo de R - Wiki IMBIV
Posibles libros o trabajos donde hay ayuda sobre el anlisis que realiza la funcin.
See Also.
Examples.
Otra seccin importante. Si copias y pegas el ejemplo en la consola de R, vers como trabaja la funcin. Es importante
notar que los autores de los ejemplos en general incluyen una simulacin de datos (para evitar que la ayuda tenga un set de
datos que haya que ingresar cada vez), y que esta simulacin a veces es confusa para los principiantes. Debes
concentrarte en la parte donde se ejecuta la funcin.
http://www.r-project.org/
http://www.r-bloggers.com/
http://www.statmethods.net/index.html/
http://rwiki.sciviews.org/doku.php
http://r-forge.r-project.org/
http://finzi.psych.upenn.edu/nmz.html
http://www.rseek.org/
http://wiki.imbiv.unc.edu.ar/index.php/Gu%C3%ADa_de_campo_de_R 8/62
7/7/2016 Gua de campo de R - Wiki IMBIV
Si bien R es un lenguaje, no es muy eficiente para la poesa o para expresar emociones, pero es sumamente eficaz para contarle a
otra persona los pasos de un anlisis estadstico, realizar un grfico o programar un nuevo mtodo. Lo ms importante es que
cada vez que quieran repetir ese anlisis o ese grfico, los pasos para realizarlos ya estarn guardados en una rutina. Igualmente,
es muy sencillo adaptar esa rutina a nuevos datos o modificarla para agregarle o quitarle algunos pasos.
La base de todo el lenguaje es el smbolo <- que crea objetos (en ocasiones podrs encontrar que se substituye por =, sin
embargo preferimos la flechita por su directa relacin con su significado, y para evitar posibles confusiones con otros usos de
"="). Un objeto puede ser cualquier cosa: un set de datos, una columna de esos datos, una lista, una matriz, una frmula, una
funcin estadstica o un resultado de un anlisis. Es decir que, mientras usas el programa, un montn de esos objetos son creados
y guardados en la memoria de la computadora. Por ejemplo, siguiendo uno de los pasos del grfico de la siguiente seccin, al
importar datos se crear un objeto de tipo data.frame, sus columnas sern vectores (vectors), algunos de ellos sern factores
(factor) y otros sern numricos (numeric). Podemos construir una regresin con dos de estas columnas, aplicando la funcin
lm. El resultado puede ser guardado en un objeto lm el cual es en realidad una lista (list) que en su interior, entre muchos otros,
contiene distintos objetos como los coeficientes, los residuos, los predichos (todos ellos numeric), el nmero de observaciones
(integer) y la frmula usada (formula). De esta forma, puedes considerar que R es un espacio vaco abierto a ser llenado con
objetos de diferentes naturalezas y propiedades y, all, bajo ciertas reglas (que debes aprender), usar tu creatividad para hacerlos
interactuar y crear tu propio mundo de anlisis. De esta manera, podrs hacer rutinas tan sencillas como un tweet o tan
http://wiki.imbiv.unc.edu.ar/index.php/Gu%C3%ADa_de_campo_de_R 9/62
7/7/2016 Gua de campo de R - Wiki IMBIV
complejos y rebuscados como una novela. Sin embargo una buena programacin es un arte de decir muchas cosas de manera
sucinta como en un haiku. Sea cual sea la temtica de tu programa es bueno tener la idea del flujo de trabajo, es decir,
estructura.
Un data.frame consiste en una serie de variables (vectors) de igual longitud y que pueden ser
del mismo tipo o no.
Coleccin de datos del mismo tipo (nmeros, letras, etc.) que puede ser creado dentro de R o
importado como una columna de un data.frame. Existen muchos tipos de vectores, entre ellos:
numeric. Consiste de nmeros reales (es decir que pueden tener decimales).
factor. Una forma ms elegante de los character, sirve para representar variables categricas,
portando informacin extra sobre los niveles del factor (levels) y sobre si estos niveles siguen un
orden o no.
Matriz formada por la unin de vectores de un mismo tipo y largo, por un solo vector que es
matrix partido en columnas y filas o (ms habitualmente) producto de ciertas funciones, por ejemplo
cor, que construye matrices de correlacin.
http://wiki.imbiv.unc.edu.ar/index.php/Gu%C3%ADa_de_campo_de_R 10/62
7/7/2016 Gua de campo de R - Wiki IMBIV
Los restantes captulos de esta gua siguen el flujo de trabajo habitual en R. Comenzaremos por las distintas formas de ingresar
conjuntos de datos, manipularlos, dividirlos en subgrupos o unir varios conjuntos de datos en uno solo. Una vez importados los
datos podemos realizar diferentes operaciones sobre ellos, desde las ms sencillas como extraer parmetros como la media o
realizar una prueba t hasta realizar modelos lineales. La capacidad grfica de R es particularmente poderosa, y una seccin
especial ser dedicada a la realizacin de grficos.
http://wiki.imbiv.unc.edu.ar/index.php/Gu%C3%ADa_de_campo_de_R 11/62
7/7/2016 Gua de campo de R - Wiki IMBIV
Muchas veces desde el inicio de la gua hemos nombrado las "rutinas", pero qu son esas rutinas? Una rutina es cualquier
anotacin que contenga los comandos para realizar un anlisis, un grfico o lo que sea en R. Slo contiene los comandos
(instrucciones) pero no la salida (resultados). Lo ms til es guardarla en un archivo de manera de poder cargarla y ejecutarla
directamente en R (usando el formato .R) o al menos que se pueda ejecutar haciendo "copy-paste".
Es recomendable utilizar un texto "plano" y una tipografa de igual ancho para todas las letras (es decir, donde una "i" ocupe el
mismo espacio que una "A", como Courier New). Jams utilices Word para construirla, o sufrirs al corrector ortogrfico y
gramatical metiendo sus garras donde no debe. Utiliza el editor del mismo R o Block de Notas. Muchos programas adems
reconocen el "lenguaje R" y asignan diferentes colores a los signos y argumentos de manera de facilitar la escritura. Entre ellos
sobresalen gedit, Tinn R y R Studio. Todos ellos son libres, y el ltimo ofrece adems muchas utilidades para interactuar con R.
BASES DE DATOS
La base de datos a usar
Construimos una base lo suficientemente general para ejemplificar las situaciones ms comunes. La base tienen dos factores,
poblacin (pob) con tres poblaciones (i.e. tres niveles a, b y c) y tratamiento (trat) con dos niveles (1 y 2). Como podrs notar
en una columna usamos letras y en otra nmeros para denotar cada nivel del factor. R al identificar las letras sabr que la variable
es un factor, lo que no sucede si usas nmeros. Por otro lado, la base tiene dos variables numricas: tamao (tam) que tiene una
distribucin normal y nmero de frutos (frutos) que tiene una distribucin poisson (variables provenientes de conteos que no
admiten nmeros fraccionarios: por ejemplo 20 frutos, 6 frutos, etc.). Finalmente incluimos la columna obs que podra servir para
identificar el individuo donde se hicieron las observaciones. Para cargar esta base de datos ve la seccin siguiente. Puedes
guardarla en una tabla copiando de la wiki a un block de notas o planilla de clculo.
mibase
http://wiki.imbiv.unc.edu.ar/index.php/Gu%C3%ADa_de_campo_de_R 12/62
7/7/2016 Gua de campo de R - Wiki IMBIV
http://wiki.imbiv.unc.edu.ar/index.php/Gu%C3%ADa_de_campo_de_R 13/62
7/7/2016 Gua de campo de R - Wiki IMBIV
Importando
El primer problema y quizs el ms frustrante al comenzar a usar R es no poder ingresar los datos para comenzar los anlisis.
Una prctica que podra hacer ms sencillo todo el proceso sera crear una nica carpeta en tu computadora, con una ruta
sencilla (es decir cerca de la "raz" como C:/datos) donde siempre guardes archivos de datos (analisis R). Ej.
C:/analisisR/tesis/datos.txt.
La ruta donde se encuentra el archivo que contiene la base de datos. Usar sintaxis que no corresponden al sistema
operativo (Windows, Mac, Linux).
El formato del archivo de la base de datos (i.e. .txt o .csv)
Nombres de columnas: no debe comenzar con nmeros, tienen que ser sencillos y sin espacios ni caracteres raros como
&, %, ^, ~, (ej. evita: dao floral, 4dao; favorece: danofloral, dano.floral, dano_floral, d.flo, etc.).
Como sugerencia, los nombres de columnas deben ser cortos, ya que tendrs que escribirlos muchas veces.
No debe haber datos faltantes y si hay se deben remplazar por NA (con maysculas).
Para cargar la base de datos y bautizarla con el nombre de mibase se debe utilizar la funcin read.table. Al hacerlo, creamos un
objeto (llamado aqu mibase) del tipo data.frame
http://wiki.imbiv.unc.edu.ar/index.php/Gu%C3%ADa_de_campo_de_R 14/62
7/7/2016 Gua de campo de R - Wiki IMBIV
mibase <- read.table("C:/analisisR/tesis/datos.txt", mibase Es el nombre que le dimos arbitrariamente a la base con la
header = TRUE, sep = ".") #Windows que vamos a trabajar.
"C:/analisisR/tesis/datos.txt" Ruta donde se encuentra el archivo.
mibase <- Nota que las barras estn inclinadas a la derecha, como en Linux
read.table("/Users/Yo/Documents/tesis/datos.txt", pero al contrario que en Windows.
header = TRUE, sep = ".") #Mac header = TRUE Le indica a R que la base que est leyendo tiene
nombres en las columnas, es decir encabezados.
mibase <-
.txt o .csv Esta terminacin indica que formato tiene el archivo. Un
read.table("/home/Yo/Documentos/tesis/datos.txt",
error clsico es que se olvide poner la terminacin
header = TRUE, sep = ".") #Ubuntu
dec = "." o dec = "," El separador decimal por defecto de R es el
mibase <- read.csv("C:/analisisR/tesis/datos.csv", punto. Si vives en Latinoamrica (excepto Mxico) o Espaa tu
header = TRUE, sep = ".") #Windows sistema operativo estar usando coma y R no lo podr leer. Cambia
las configuracin regional (por ejemplo desde el panel de control) o
escribe dec = "," cada vez que ingreses tus datos.
file.choose()
mibase <-
Si uno no tiene clara la ruta. Contra: no puedes automatizar el cargar la
read.table(file=file.choose(),header=TRUE, sep =
base.
".")
"clipboard"
setwd()
http://wiki.imbiv.unc.edu.ar/index.php/Gu%C3%ADa_de_campo_de_R 15/62
7/7/2016 Gua de campo de R - Wiki IMBIV
setwd("C:/analisisR/tesis/")
base1 <- read.table("datos1.txt", header = T) setwd fija la ruta que R usar para leer los archivos. Ventaja: evita escribir
esa ruta cada vez, en cada read.table(). Desventaja: puedes olvidarte cul
base2 <- read.table("datos2.txt", header = T) era la ruta que usabas. Es ese caso usar getwd()
Si no se conoce la ruta de acceso al archivo o se sospecha que est mal escrita se puede obtener poniendo el puntero
sobre el archivo y usando el botn izquierdo del mouse para obtener las "propiedades" del archivo.
Para poner NA en cada lugar donde falta un dato, puedes seleccionar en Excel toda la base de datos, luego utilizar la
opcin "buscar y remplazar". En el campo de bsqueda no pones nada (i.e. busca donde hay vacios) y en el de remplazo
pones NA.
La ventaja del formato csv (comma-separated values) sobre el txt es que se abre en excel (o mejor Libre0ffice Calc) y
se tienen todas las herramientas de este programa para modificar la base de datos de manera directa.
Si, de todos modos, queremos modificar los datos en R, podemos usar la funcin fix(mibase). Tiene sus problemas por
lo que lo recomendamos nicamente para alterar datos numericos (cambiar un 3 por un 7 etc).
El set de datos cargado no es mostrado hasta que escribamos su nombre (en nuestro ejemplo: mibase).
Jams, jams utilices attach() para fijar la base de datos que usars en los anlisis. En un principio puede parecer
prctico, pero cuando se tiene rutinas complicadas es fcil perderse (cul es el maldito origen de ste objeto?...
diablos!), por lo tanto, es buena idea hacerse el hbito de no usar esta funcin (aunque algunos libros la recomienden).
Exportando
http://wiki.imbiv.unc.edu.ar/index.php/Gu%C3%ADa_de_campo_de_R 16/62
7/7/2016 Gua de campo de R - Wiki IMBIV
write.table(mibase,
"C:/analisisR/tesis/mibase2.txt", col.names = Aqu se le da a R el nombre del objeto (i.e. mibase) que ser salvado en un
TRUE, row.names = FALSE) directorio particular con el nombre de mibase2 y con formato determinado
write.csv(mibase, "C:/analisisR/tesis/mibase2.csv", (txt, csv, etc.)
col.names = TRUE, row.names = FALSE)
http://wiki.imbiv.unc.edu.ar/index.php/Gu%C3%ADa_de_campo_de_R 17/62
7/7/2016 Gua de campo de R - Wiki IMBIV
head
Muy til. Nos muestra las primeras seis filas de la base incluyendo los
head(mibase)
encabezados. El equivalente en indexacin sera: mibase[1:6,].
tail
Nos muestra las ltimas seis filas de la base. El equivalente en indexacin
tail(mibase)
sera: mibase[19:24, ] (en este caso).
names
nrow
ncol
dim
na.omit
Quita todas las filas que contengan NA en la base de datos. Puede no ser
mibase <- na.omit(mibase) muy recomendable hacer esto ya que uno puede perder mucha informacin
(todas las filas con al menos un NA).
fix
http://wiki.imbiv.unc.edu.ar/index.php/Gu%C3%ADa_de_campo_de_R 18/62
7/7/2016 Gua de campo de R - Wiki IMBIV
Abre una ventana donde pueden modificarse los datos. Los cambios no son
guardados en el archivo de datos original, sino en el objeto data.frame que
fix(mibase)
R guarda en la memoria, por lo que se pierden al cerrar el programa. No es
muy recomendable su uso.
http://wiki.imbiv.unc.edu.ar/index.php/Gu%C3%ADa_de_campo_de_R 19/62
7/7/2016 Gua de campo de R - Wiki IMBIV
Indexacin
[,]
Ventaja: sintaxis general aplicable a cualquier tipo de objeto no solo a
mibase[row, col]
data.frame.
mibase[1:18, ] Muestra las filas del 1 al 18 y todas las columnas del objeto mibase.
mibase[, 1:4] Muestra las columnas del 1 al 4 y todas las filas del objeto mibase.
mibase[1:18, 1:4] Muestra todas las filas y todas las columnas del objeto mibase.
combinando $ y [ ]
http://wiki.imbiv.unc.edu.ar/index.php/Gu%C3%ADa_de_campo_de_R 20/62
7/7/2016 Gua de campo de R - Wiki IMBIV
Una base de datos suele tener varias columnas y cada una de ellas tener sus propias particularidades. Muchas veces necesitamos
conocer qu tipo de datos almacena una columna, crear nuevas o transformarlas.
http://wiki.imbiv.unc.edu.ar/index.php/Gu%C3%ADa_de_campo_de_R 21/62
7/7/2016 Gua de campo de R - Wiki IMBIV
mibase$tam Mostrar una columna. Notar que si esta columna es un factor, al final
indicar sus niveles (levels: a, b, c; en el caso de pob)
mibase[, "pob"]
class
levels
levels (mibase$pob) Te confirma el nmero de niveles que tiene esta factor y te indica el orden.
is...
Se le puede preguntar explcitamente si esa columna es numrica o factor y
is.numeric(mibase$tam) si as es R responde con TRUE.
is.factor(mibase$pob) Si tiene letras la columna por defecto ser factor. En una columna numrica
las nicas letras aceptadas son NA. Si usaste un smbolo decimal
is.factor(mibase$frutos) equivocado en read.table, R leer todos tus nmeros como letras.
length
which
which (is.na(mibase$tam))
http://wiki.imbiv.unc.edu.ar/index.php/Gu%C3%ADa_de_campo_de_R 22/62
7/7/2016 Gua de campo de R - Wiki IMBIV
length (which(is.na(mibase$tam))) Te indica que elementos de una columna poseen, en este caso, un
NA.Combinado con length indica cuantos elementos cumplen esa
condicin.
En realidad, una columna es un vector con cierto nmero de objetos con un orden determinado. Por ejemplo, la columna obs es
un vector que va de 1 a 24 mientras que la columna pob repite ocho veces a, ocho veces b y ocho veces c. Aprender a
hacer vectores nos da mucho poder para crear nuevas formas de categorizar nuestra base de datos. Esto podr tener grandes
beneficios a la hora de manipular la base e incluso de analizarla.
http://wiki.imbiv.unc.edu.ar/index.php/Gu%C3%ADa_de_campo_de_R 23/62
7/7/2016 Gua de campo de R - Wiki IMBIV
Creacin de columnas
<-
Indica concatenar. Los dos puntos evitan escribir todos los nmeros
intermedios. De esta forma construimos la columna obs. Si en vez de
mibase$obs <- c(1:24)
nmeros consecutivos quieres usar otros valores, hay que escribir cada uno
de ellos, separados por coma.
rep
Creando columna rep La primera rutina se lee as: repite "a" 12 veces y
mibase$rep <- rep(c(rep("a", 12), rep("b", 12))) luego "b" 12 veces. Luego concatena esta secuencia. Importante, el
principal error en este tipo de sintaxis son los parntesis, se cuidadoso.
sep
mibase$seq <- seq (0, 1, length.out = 24) Hace una secuencia del 0 al 1 con 24 pasos.
paste
Uniendo factores para crear una clave ms complicada. Une pob y trat sin
mibase$clave <- paste(mibase$pob, mibase$trat, separarlos con nada (sep="") por lo que quedara a1, a2,,c8. Si se desea
sep = "") separar con un carcter como el punto se hace sep="." Esto da como
http://wiki.imbiv.unc.edu.ar/index.php/Gu%C3%ADa_de_campo_de_R 24/62
7/7/2016 Gua de campo de R - Wiki IMBIV
strsplit
strsplit(mibase$clave, split = "\\.") Invierte la funcin anterior. Nos permite separar los caracteres y los muestra
en forma de lista, un tipo de objeto un tanto incomodo. Si el separador fue
H <- strsplit(mibase$clave, split = "")
punto requiere una notacin particular. Para volver a un objeto cmodo se
pob <-numeric(24) requieren pasos de programacin que involucran usar for.
pob
Las situaciones ms comunes en las cuales hay que modificar el contenido de una columna son: 1) cuando codificamos una
variable categrica con nmeros y debemos avisarle a R que los lea como letras (si, por ejemplo, planeamos hacer un ANOVA,
ver seccin XXX); 2) cuando queremos crear una nueva columna con datos transformados (por ejemplo tomando logaritmos o
estandarizndolos).
http://wiki.imbiv.unc.edu.ar/index.php/Gu%C3%ADa_de_campo_de_R 25/62
7/7/2016 Gua de campo de R - Wiki IMBIV
Modificacin de columnas
colnames
colnames(mibase)[3] <- "edad" Para cambiar de nombre la columna 3 de trat a edad
colnames(mibase) <- c("observ", "poblacin", Para cambiar simultneamente el nombre de las columnas del objeto
"tratamiento", "tamao", "frutos") mibase. OJO: usar el mismo nmero de nombres.
as...
mibase$trat <- as.numeric(mibase$trat) Para forzar a una columna a ser numrica
Para forzar a una columna a ser factor. Extremadamente til si hemos
mibase$trat <- as.factor(mibase$trat)
codificado los niveles de un factor utilizando nmeros.
factor
Funcin ms flexible que as.factor. levels ayuda a determinar cul de los
mibase$pob <- factor(mibase$pob, levels = c("b",
niveles es tomado como referencia (el primero de la lista). Esto es til para
"c", "a"))
realizar comparaciones.
Indica que los niveles de una factor poseen un orden natural (de menor a
mibase$pob <- factor(mibase$pob, levels = c("b",
mayor), por ejemplo el orden de llegada en una carrera. til en ciertos
"c", "a"), ordered = TRUE)
anlisis.
mibase$pob <- factor(mibase$pob, levels = c("b",
Permite renombrar los niveles de un factor. Seguir el orden definido por
"c", "a"), labels = c("Bolivia", "Colombia",
levels, remplazando valores
"Argentina"))
Remplaza el primer valor (10) de la columna frutos con el valor 3. Si
mibase$frutos[1] <- 3
quisieras remplazar el segundo valor seria (mibase$frutso[2] <- 3)
Remplaza todos los valores que eran 10 por el valor 3. Se pueden utilizar <
mibase$frutos[which(mibase$frutos == 10)] <- 3
(menor),> (mayor),!= (distinto)
http://wiki.imbiv.unc.edu.ar/index.php/Gu%C3%ADa_de_campo_de_R 26/62
7/7/2016 Gua de campo de R - Wiki IMBIV
Modificacin de filas
rownames
nombres<-c("a", "b", "c", "d", "e", "f", "g", "h", "i",
"j", "k", "l", "m", "n","o", "p", "q", "r","s", "t", "u",
"v", "w", "x") Para asignarle por nombre una letra a cada fila
rownames(mibase) <- nombres
Adhesin de columnas (horizontal): se debe estar seguro que ambas bases de datos tengan el mismo nmero de filas.
Adhesin de filas (vertical): se debe estar seguro de tener el mismo nmero de columnas y que el nombre de las columnas
sea igual.
mibase2 contiene una columna llamada largo con datos numricos y una columna llamada trat2 que consiste en un factor
con dos niveles: "a" y "b".
mibase3 contiene las mismas variables que la base original, pero agrega los datos de una cuarta poblacin.
mibase2
http://wiki.imbiv.unc.edu.ar/index.php/Gu%C3%ADa_de_campo_de_R 27/62
7/7/2016 Gua de campo de R - Wiki IMBIV
mibase3
http://wiki.imbiv.unc.edu.ar/index.php/Gu%C3%ADa_de_campo_de_R 28/62
7/7/2016 Gua de campo de R - Wiki IMBIV
http://wiki.imbiv.unc.edu.ar/index.php/Gu%C3%ADa_de_campo_de_R 29/62
7/7/2016 Gua de campo de R - Wiki IMBIV
Uniendo bases
cbind
Une las columnas de ambas bases (c=columna, bind= unin). Usar cbind
slo si mibase y mibase2 son dos data.frame o dos vectores de un mismo
BASE.A <- cbind(mibase, mibase2) tipo (por ej. dos columnas numricas o dos columnas de caracteres).
Ambas bases deben tener el mismo nmero de filas (o el mismo nmero de
elementos si son vectores).
rbind
Une las filas de ambas bases (r=row, bind= unin). Ambas bases deben
BASE.B <- rbind(mibase, mibase3)
tener el mismo nmero de columnas.
data.frame
BASE.A <- data.frame(mibase, mibase2) n.base Une las bases de datos por columnas. A diferencia de cbind, puede usarse
<- data.frame(tratamiento = mibase$trat, largo = para construir data.frames a partir de vectores (columnas) de distinto tipo y
mibease2$largo) tambin se puede asignarles un nuevo nombre.
merge
# versin reducida de mibase2 M2 <- til cuando deben coincidir dos bases de datos con distinto nmero de filas
mibase2[c(1:5,7:22),] (siempre que tengamos una columna indicando a qu observacin
corresponde, en este caso es obs). Los espacios faltantes son llenados con
BASE.C <- merge(mibase, M2, by = "obs", all =
TRUE) NA.
http://wiki.imbiv.unc.edu.ar/index.php/Gu%C3%ADa_de_campo_de_R 30/62
7/7/2016 Gua de campo de R - Wiki IMBIV
Para casos ms complicados usa el paquete multitable que permite unir muchas bases con diferentes dimensiones (i.e.
diferente nmero de columnas y filas) y te ahorra muchos problemas. Por ejemplo, si quisieras integrar la informacin de
temperatura y precipitacin de cada poblacin a cada una de las observaciones realizadas, slo tendras un valor climatolgico
por poblacin mientras que cada poblacin tendra ocho observaciones. Claramente las dimensiones entre estas bases seran
diferentes.
http://wiki.imbiv.unc.edu.ar/index.php/Gu%C3%ADa_de_campo_de_R 31/62
7/7/2016 Gua de campo de R - Wiki IMBIV
Dividiendo bases
subset
Permite armar una nueva base que incluye a la poblacion "a" y "b".
base2 <- subset(mibase, mibase$pob == "a" &
La rutina de abajo es un sinnimo pero con la ventaja de que permite incluir
mibase$pob == b) base2 <- subset(mibase,
muchas poblaciones (niveles) de manera mas eficiente, incluyndolas en un
mibase$pob %in% c ("a","b"))
vector c("a","b", ...etc)
http://wiki.imbiv.unc.edu.ar/index.php/Gu%C3%ADa_de_campo_de_R 32/62
7/7/2016 Gua de campo de R - Wiki IMBIV
== Igual
!= distinto
> mayor que
< menor que
>= mayor o igual que
|o
&y
http://wiki.imbiv.unc.edu.ar/index.php/Gu%C3%ADa_de_campo_de_R 33/62
7/7/2016 Gua de campo de R - Wiki IMBIV
baseFila3 <- mibase[order(mibase$trat, Ordenando la base en funcin de arreglar dos columnas (pob y tam) de
mibase$tam), ] manera ascendente.
baseFila4 <- mibase[order(mibase$trat, - Ordenando la base en funcin de arreglar dos columnas: trat de manera
(mibase$tam), ] ascendente y tam de manera descendente
Ordena de manera aleatoria las filas de la base pero con remplazo, es decir
baseFila7 <- mibase[sample(1:nrow(mibase),
algunas filas podran aparecer repetidas y otras no aparecer en absoluto. La
replace = TRUE), ]
base del bootstrap.
Las funciones bsicas para extraer informacin de parmetros como media y varianza son sencillas y similares. Como ayuda
general, si se aplican sobre datos que contienen NA el resultado ser NA tambin, por lo cual hay indicarle a las funciones que
los elimine.
http://wiki.imbiv.unc.edu.ar/index.php/Gu%C3%ADa_de_campo_de_R 35/62
7/7/2016 Gua de campo de R - Wiki IMBIV
median
Me <- median(mibase$tam, na.rm = TRUE) Calcula la mediana. Mismos argumentos que la media.
var
V <- var(mibase$frutos, na.rm = TRUE) Calcula la varianza muestral (sobre N-1). Mismos argumentos que la media.
sd
quantile
range
summary
http://wiki.imbiv.unc.edu.ar/index.php/Gu%C3%ADa_de_campo_de_R 36/62
7/7/2016 Gua de campo de R - Wiki IMBIV
cor
CO <- cor(mibase[, 4:5], use = "complete.obs") Calcula la matriz de correlacin. En el caso de "complete.obs" eliminar
todas las filas del set de datos que tengan un NA. Se puede cambiar el
CO <- cor(mibase[, 1:6], use = "complete.obs", mtodo para estimar la correlacin agregando por ejemplo: method =
method = "spearman") "spearman"
Pruebas bsicas
http://wiki.imbiv.unc.edu.ar/index.php/Gu%C3%ADa_de_campo_de_R 37/62
7/7/2016 Gua de campo de R - Wiki IMBIV
#paso previo
t.test(mibase$tam, mu = 5, na.action = na.omit) Prueba t para una media, requiere una variable continua y un valor de media
wilcox.test
wilcox.test(tam ~ trat, data = mibase, na.action = La versin no paramtrica de la prueba t. Tiene las mismas opciones que
na.omit) t.test.
cor.test
chisq.test
http://wiki.imbiv.unc.edu.ar/index.php/Gu%C3%ADa_de_campo_de_R 38/62
7/7/2016 Gua de campo de R - Wiki IMBIV
fisher.test
prueba.F <- fisher.test(ji) Se usa cuando el 75% de las entradas de la tabla de contingencia tienen
prueba.F valores menores a 5.
kruskal.test
kruskal.test(frutos ~ trat, data = mibase) Prueba no paramtrica equivalente a un ANOVA de una via.
GRFICOS BSICOS
R tiene gran poder para hacer grficos, no lo desperdicies. R tiene diferentes paquetes para graficar, entre ellos destacamos:
graphics Contiene las funciones bsicas para graficar. Hace grficos poco ostentosos pero que en muchas ocaciones son
perfectos para publicaciones en revistas indexadas.
lattice y grid Contienen grficos tiles para datos multivariados y explorar interacciones.
ggplot2 Sirve para hacer grficos modernos y elegantes.
Otra cosa importante a considerar es como se construyen los objetos grficos. En general tiene tres niveles de construccin:
Funciones grficas de alto nivel Crean un grfico que es dibujado en una ventana grfica. A este nivel, no solo se crea
el grfico en bruto sino que se le puede hacer ciertas modificaciones como cambio de color, tamao, tipo de fuente y otras
caractersticas.
Funciones grficas de bajo nivel Agregan ms informacin a un grfico ya existente, como puntos extras, lneas,
funciones y leyendas.
http://wiki.imbiv.unc.edu.ar/index.php/Gu%C3%ADa_de_campo_de_R 39/62
7/7/2016 Gua de campo de R - Wiki IMBIV
Abre un espacio grfico con una escala definida (-1:1) en cada uno de sus
plot(-1:1, -1:1, type = "n", xlab = "eje x", ylab =
ejes, pero no incluye ningn dato. Con type = "n" (nulo) no se grafica punto
"eje y")
alguno.
plot(mibase$tam, mibase$frutos)
Grafico bivariado de x (en el eje x) e y (en el eje y) (plot(x, y)). Si x es un
plot (mibase$frutos ~ mibase$tam)
factor R har un boxplot
plot (mibase$pob, mibase$tam)
boxplot
coplot
interaction.plot
pairs
pairs (mibase) Dibuja todas las posibles grficas bivariadas entre todas las columnas
pie
http://wiki.imbiv.unc.edu.ar/index.php/Gu%C3%ADa_de_campo_de_R 40/62
7/7/2016 Gua de campo de R - Wiki IMBIV
hist
hist(mibase$tam)
Grafica un histograma de frecuencias de x. Incluir breaks permite
hist (mibase$tam, breaks = 10)
manipular el nmero de columnas. Incluir freq = FALSE convierte al eje de
las y en densidad, es decir, el histograma tiene un rea de 1. La linea points
hist (mibase$tam, freq = FALSE)
sobrelapa, sobre el histograma, un grfico de densidad.
points(density(mibase$tam, na.rm = TRUE)
qqnorm
qqnorm(mibase$tam) Cuantiles de x con respecto a los esperado bajo una distribucin normal
qqplot
library(sciplot); bargraph.CI
library(sciplot)
library(sciplot); lineplot.CI
library(sciplot)
Grfico de lineas incluyendo errores estndar.
lineplot.CI(x.factor = pob, response = frutos,
group = trat, data = mibase)
http://wiki.imbiv.unc.edu.ar/index.php/Gu%C3%ADa_de_campo_de_R 41/62
7/7/2016 Gua de campo de R - Wiki IMBIV
http://wiki.imbiv.unc.edu.ar/index.php/Gu%C3%ADa_de_campo_de_R 42/62
7/7/2016 Gua de campo de R - Wiki IMBIV
Agrega puntos al grfico. En este caso para que se note utilizamos pch para
points(mibase$tam, mibase$frutos, pch = 3) introducir un formato de punto diferente. Ver abajo los tipos de puntos
disponibles.
lines
text
segments
Agrega segmentos (lineas) desde la coordenada x0; y0 hasta x1; y1. Notar
segments(3, 4, 4, 5)
que las x e y pueden ser vectores de igual longitud
arrows
abline
http://wiki.imbiv.unc.edu.ar/index.php/Gu%C3%ADa_de_campo_de_R 43/62
7/7/2016 Gua de campo de R - Wiki IMBIV
polygon
axis
Agrega ejes al grafico: abajo (side = 1), a la izquierda (side = 2), arriba
axis(side = 3)
(side = 3) y derecha (side = 4).
title
http://wiki.imbiv.unc.edu.ar/index.php/Gu%C3%ADa_de_campo_de_R 44/62
7/7/2016 Gua de campo de R - Wiki IMBIV
Argumentos grficos
axes = TRUE o FALSE, dibuja o no los ejes.
bty = Tipo de caja: "o", "I", "7", "c", "u", "ou", "n" (n no dibuja la caja)
col = Controla el color de los smbolos o lneas (ver tabla de referencia de colores).
"p" puntos (por defecto), "l" lneas, "b" puntos conectados por lneas, "o" lneas sobre los
type = puntos, "h" lneas verticales, "s" en escalera (un paso horizontal, uno vertical), "S" en esacalera
(un paso vertical, uno horizontal).
Define los lmites de los ejes (ej. xlim = c(0, 12), o sea que el eje x vaya de la coordenada 0 a
xlim =, ylim =, zlim =
la 12)
xlab =, ylab =, zlab = Para establecer la leyenda de los ejes (ej. xlab = "nmero de ranas")
Controla el grosor de las lneas (por ej. lwd = 1 para tamao normal, lwd = 2 es el doble de lo
lwd =
normal, lwd = 0.5 es la mitad de lo normal).
Controla el tipo de lnea: slidas (lty = 1), con guiones (lty = 2), con puntos (lty = 3), puntos y
lty =
lneas (lty = 4), etc.
Controla el tipo de smbolo, por ejemplo cambia de puntos a cruces (ver tabla de referencia de
pch = diseo de smbolo). Adems de los smbolos de la tabla puede utilizarse cualquier smbolo del
teclado ponindolo entre comillas. Por ejemplo pch = "j".
http://wiki.imbiv.unc.edu.ar/index.php/Gu%C3%ADa_de_campo_de_R 45/62
7/7/2016 Gua de campo de R - Wiki IMBIV
Define el tamao relativo de los smbolos (cex = 2) y letras (ejes y ttulos), para esto ltimo
cex =
existen cex especiales: cex.axis, cex.lab, cex.main, cex.sub.
http://wiki.imbiv.unc.edu.ar/index.php/Gu%C3%ADa_de_campo_de_R 46/62
7/7/2016 Gua de campo de R - Wiki IMBIV
Tendrs que hacer mucho zoom para leer los nombres de los colores. Si prefieres puedes construir tu propia tabla de colores y
guardarla en con los siguientes comandos:
http://wiki.imbiv.unc.edu.ar/index.php/Gu%C3%ADa_de_campo_de_R 47/62
7/7/2016 Gua de campo de R - Wiki IMBIV
plot(A, B, axes = FALSE, pch = 15, cex = 2.8, col = colors()[1:240], xlim = c(0, 17))
dev.off()
pdf(file = "hoja colores 2 de 3.pdf", width = 8.5, height = 11, paper = "a4")
plot(A, B, axes = FALSE, pch = 15, cex = 2.8, col = colors()[241:480], xlim = c(0, 17))
dev.off()
pdf(file = "hoja colores 3 de 3.pdf", width = 8.5, height = 11, paper = "a4")
plot(A, B, axes = FALSE, pch = 15, cex = 2.8, col = c(colors()[481:657], rep("white", 63)), xlim = c(0, 17))
http://wiki.imbiv.unc.edu.ar/index.php/Gu%C3%ADa_de_campo_de_R 48/62
7/7/2016 Gua de campo de R - Wiki IMBIV
dev.off()
http://wiki.imbiv.unc.edu.ar/index.php/Gu%C3%ADa_de_campo_de_R 49/62
7/7/2016 Gua de campo de R - Wiki IMBIV
layout(matrix(1:4, 2, 2))
layout (1)
layout(1)
par
plot(mibase$pob, mibase$tam, main = "tam x Otra forma de dividir el espacio es usar esta funcin.
pob")
par ()
http://wiki.imbiv.unc.edu.ar/index.php/Gu%C3%ADa_de_campo_de_R 50/62
7/7/2016 Gua de campo de R - Wiki IMBIV
par()
Guardando grficos
Hay varios formatos en los que se pueden guardar las figuras. Para este ejemplo usaremos el histograma de la variable tamao
(tam). Se puede establecer previamente el directorio donde se van a guardar los grficos usando setwd(). La forma ms prctica
de guardar los grficos depende del sistema operativo que tengas y de qu programa pienses usar para abrirlos o editarlos. En
windows lo mas sencillo es seleccionar el grfico con el puntero del mouse y dar click en el botn derecho y salvar el formato
que se requiera. La ventaja de usar las funciones que mostramos a continuacin es que se puede definir desde R el tamao final
que se quiere para la figura, adems de automatizar el proceso. Como regla general, todo el proceso de guardar un grfico tiene
tres pasos: la primera funcin (svg, pdf, jpeg, etc.) crea el archivo. En el segundo paso ingresamos todos los comandos grficos
necesarios, que "rellenan" el archivo. Finalmente dev.off() hace que R cierre el archivo de modo que se pueda abrir con otros
programas.
http://wiki.imbiv.unc.edu.ar/index.php/Gu%C3%ADa_de_campo_de_R 51/62
7/7/2016 Gua de campo de R - Wiki IMBIV
eps
dev.off()
svg
svg(file = "mi_grafico.svg", width = 7, height = 6) Para generar figuras svg. svg (Scalable vector graphics) es el formato
vectorial libre y puede ser abierto y editado por softwares libres (nuestros
hist (mibase$tam, main="histograma tamao")
preferidos) como Inkscape. Puedes usar este ltimo programa para pasar
dev.off() del formato svg a otros como eps o pdf.
http://wiki.imbiv.unc.edu.ar/index.php/Gu%C3%ADa_de_campo_de_R 52/62
7/7/2016 Gua de campo de R - Wiki IMBIV
http://wiki.imbiv.unc.edu.ar/index.php/Gu%C3%ADa_de_campo_de_R 53/62
7/7/2016 Gua de campo de R - Wiki IMBIV
hist(mibase$frutos)
plot(d)
plot(mibase$tam, mibase$frutos)
Para ver cada par de variables
text(mibase$tam, mibase$frutos, labels =
rownames(mibase), cex = 0.8)
http://wiki.imbiv.unc.edu.ar/index.php/Gu%C3%ADa_de_campo_de_R 54/62
7/7/2016 Gua de campo de R - Wiki IMBIV
Los modelos lineales tienen la ventaja de poder de poder incrementar en nivel de complejidad dependiendo de las necesidades y
el diseo experimental utilizado. Los resultados de estos modelos pueden resumirse de dos maneras bsicas, usando: summary y
anova.
summary da la tabla de coeficientes. En el caso de una regresin los coeficientes son las conocidas ordenada al origen
(0) y la pendiente (1) o pendientes parciales (1, 2, 3) cuando el modelo contienen mas de un variable
independiente. Para cada coeficiente hay una prueba t asociada que indica si difiere de 0. Cuando el modelo es una
anlisis de la varianza los coeficientes corresponden a las diferencias de medias entre los niveles de un factor y uno tomado
como referencia alfabticamente. Esta funcin tambin da los parmetros generales del modelo tales como el coeficiente
de determinacin (R2), el valor de F, los grados de libertad y el valor de P.
anova da la tabla de anlisis de varianza que muestra para cada variable los grados de libertad, la suma de cuadrados, los
cuadrados medios, una prueba F con su correspondiente valor de P que indica si la porcin de la variabilidad explicada
por esa variable es significativa en relacin con la variabilidad del error. Por defecto la funcin anova utiliza una suma de
cuadrados de tipo I (secuencial). Para las otros tipos de sumas de cuadrados (II y III) utilizar la funcin Anova del
paquete car. Por ejemplo Anova(nombre_modelo, type ="II")
http://wiki.imbiv.unc.edu.ar/index.php/Gu%C3%ADa_de_campo_de_R 55/62
7/7/2016 Gua de campo de R - Wiki IMBIV
anova(fit)
fit <- lm(frutos ~ pob, data = mibase) Anlisis de la varianza (ANOVA) de una va. La variable pob es categrica
con tres niveles. Si una variable es categrica y esta codificada con nmeros
summary(fit)
(ej. la variable trat) es necesario transformarla previamente utilizando factor
anova(fit) o as.factor.
aov
fit <- aov(frutos ~ pob, data = mibase) Forma alternativa de hacer un anlisis de varianza. En este caso el summary
da la tabla de anlisis de la varianza y no da la tabla de coeficientes. De aqui
summary(fit)
se puede obtener la prueba de diferencia de medias de Tukey (utilizando la
TukeyHSD(fit) funcin TukeyHSD)
Las formulas en los modelos lineales pueden representar distintas combinaciones de variables para ajustar modelos aditivos, con
interaccin (no aditivos), polinomios y modelos anidados.
http://wiki.imbiv.unc.edu.ar/index.php/Gu%C3%ADa_de_campo_de_R 56/62
7/7/2016 Gua de campo de R - Wiki IMBIV
Frmulas
Y~1 Modelo sin efecto. Solo intercepto
Y~A Modelo lineal simple (regresin lineal simple o ANOVA de una via)
Y~A- 1 Modelo lineal simple cuyo intercepto esta forzado a ser cero.
Y~A+B Modelo multiple aditivo (regresin multiple, ANCOVA o ANOVA de dos vias)
Y ~ A + B + A:B
Modelo con interaccin (A:B) y diferentes formas sinnimas de escribirlos, que son ms
Y~A*B eficientes cuando hay muchas variables. La ultima forma implica un modelo donde se ajustan
todos los efectos principales (A, B, C), todas las interacciones dobles (A:B, A:C, B:C) y la
Y ~ (A + B)^2
interaccin triple (A:B:C). Es posible escribir las interacciones hasta cualquier grado deseado.
Y~ (A + B + C)^3
Y ~ A + B %in% A Modelo con efecto principal de A y efecto de B anidado en A (dos formas sinnimas de
escribirlo).
Y ~ A/B
Modelo con efectos lineales y cuadrticos. I permite introducir efectos no lineales (cuadrticos,
Y~ A + I(A^2)
cbicos, logartmicos etc).
http://wiki.imbiv.unc.edu.ar/index.php/Gu%C3%ADa_de_campo_de_R 57/62
7/7/2016 Gua de campo de R - Wiki IMBIV
coef.fit <- coefficients(fit) Permite extraer los coeficientes. Hay dos formas alternativas de hacerlo.
Guardamos los valores en un objeto al que llamamos coef.fit.
coef.fit <- fit$coef
confint
residuals
res.fit <- residuals(fit) Permite extraer los residuales del modelo. Es importante guardarlos en un
nuevo objeto (que llamamos res.fit) para despus poder utilizarlos.
res.fit <- fit$resid
fitted
fit.fit <- fitted(fit) Permite extraer los valores predichos del modelo. Igual que arriba es
importante guardarlos en un objeto (fit.fit).
fit.fit <- fit$fit
Cuando el problema no es obtener los valores predichos del modelo sino obtener predicciones para una nueva serie de valores
podemos usar la funcin predict.
http://wiki.imbiv.unc.edu.ar/index.php/Gu%C3%ADa_de_campo_de_R 58/62
7/7/2016 Gua de campo de R - Wiki IMBIV
x <- seq(1, 5, 0.1) Primero se genera un nuevo grupo de valores para la variable independiente
(x). seq crea una secuencia del 1 al 5 en intervalos de 0.1.
fit <- lm(frutos ~ tam, data = mibase)
recordando el modelo...
y <- predict(fit, data.frame(tam = x), se.fit =
TRUE) Usamos la funcin predict a partir del objeto fit y de los valores de x recin
creados. Predice nuevos valores de frutos basados en el ajuste entre frutos
plot(x, y$fit, type = "l")
y tamao pero ahora utilizando los valores de x. Si se le aade el se.fit =
points(x, y$fit + y$se.fit) TRUE generar una columna de predichos y otra de errores estndar. Toda
esa informacin se puede graficar.
points(x, y$fit - y$se.fit)
Diagnsticos de modelos
La violacin del supuesto de no normalidad afectar la significancia de los terminos evaluados. Por otro lado, la presencia de
observaciones influyentes afectar la estimacin de los parmetros. Esto no quiere decir necesariamente que hay remover esas
observaciones. Generalmente, lo que indica es que el muestreo fue deficiente o que hubo un error en la toma de datos. Hay dos
formas de analizar los datos: la grfica y la numrica. Te recomendamos confiar en la grfica (aunque requiere prctica) porque
cuando el nmero de observaciones es muy pequeo los diagnsticos numricos son poco sensibles y, cuando es muy grande,
son excesivamente sensibles.
Diagnsticos Grficos
Diagnsticos grficos
plot
layout(matrix(1:4, 2, 2)) La funcin de plot aplicada sobre un objeto "modelo lineal" (fit) arroja 4
grficos de diagnostico. En todos los grficos las observaciones que podran
plot(fit)
generar algn problema estn sealizadas con un nmero que corresponde
layout(1) al nmero de la fila.
http://wiki.imbiv.unc.edu.ar/index.php/Gu%C3%ADa_de_campo_de_R 59/62
7/7/2016 Gua de campo de R - Wiki IMBIV
Grfico de residuales vs. predichos. Para probar linealidad y homogeneidad de residuos (homocedasticidad). La
linealidad se examina evaluando que la linea roja sea lo mas horizontal posible y sin curvatura. Si tuviera curvatura indicara
que el modelo puede necesitar un termino de ajuste no lineal (i.e. cuadrtico, logartmico etc) o que hay una variable
importante no incluida en el modelo. La homogeneidad de varianza se examina observando que la distribucin de los
valores (puntos) sea lo ms homognea posible en el espacio ("como una nube"). Cuando esto no se cumple el patrn ms
tpico es de forma de trompeta, lo que indica que valores ms altos son tambin ms variables.
Raz cuadrada de residuales estandarizados (i.e. residuales studentizados) vs. predichos. Prueba homogeneidad
de residuos (homocedasticidad). Si la linea de roja muestra una tendencia de los datos es tambin falta de homogeneidad.
Al estar estandarizados, los valores por arriba y por abajo de 2 son observaciones con residuos extremos lo que implica
que el modelo no los ajusta bien (su valor predicho por el modelo y su valor observado estn muy alejados).
Normal Q-Q plot. Este grfico prueba la normalidad de los residuos. Los valores (puntos) deben estar lo ms cercanos
de la linea diagonal. Las desviaciones indican desajuste.
Residuales estandarizados vs leverage (grfico de influencias). Un observacin ser muy influyente si posee un valor
residual muy grande y al mismo tiempo un leverage muy alto (esto ltimo indica que el valor de la variable independiente
para esa observacin es muy grande o muy pequeo). Esto significa que la presencia o ausencia de ese punto podr
afectar los resultados y prametros del modelo. Una medida de esa influencia es la distancia de Cook (que combina
residuales y leverage) la cual aparece dibujada en el grfico como curvas. Por arriba de 1 se considera influyente, aunque
no hay una regla estricta.
Diagnsticos numricos
http://wiki.imbiv.unc.edu.ar/index.php/Gu%C3%ADa_de_campo_de_R 60/62
7/7/2016 Gua de campo de R - Wiki IMBIV
fit <- lm(frutos ~ tam + pob, data = mibase) Prueba la normalidad de los residuos. Para eso primero guardamos los
residuos de nuestro modelo en el objeto res.fit. Un resultado significativo (P
res.fit <-residuals(fit)
< 0.05) indica que la distribucin de los residuales es significativamente
shapiro.test(res.fit) diferente a la esperada para una distribucin normal.
barlett.test
fit <- lm(frutos ~ pob, data = mibase) Para barlett.test nicamente se puede usar los residuales derivados de una
ANOVA (hay algunos trucos para extender su uso, pero finalmente es
res.fit <- residuals(fit)
mejor hacer un grfico). Un resultado significativo indica que no hay
bartlett.test(res.fit ~ pob, data = mibase) homogeneidad de varianza.
Sobre colinealidad
Existe uno problema extra: la colinealidad. La colinealidad surge cuando se agregan variables independientes en un modelo que
estan altamente relacionadas entre ellas, son redundantes, o que aportan la misma informacin (tres definiciones de redundante...
qu redundante!). La colinealidad afecta tanto la estimacin de los parmetros como su significancia. Aqui presentamos dos
mtodos para estimar la colinealidad: los coeficientes de correlacin (cor) y los valores de inflacin de la varianza (vif). La
colinealidad estimada a partir de cor solo es examinada entre pares de variables mientras que la estimada por los vif evala la
informacin redundante entre una variable y todas las otras. En caso de detectar problemas de colinealidad lo recomendable
dejar slo las variables no redundantes en el anlisis y eliminar las otras o utilizar combinaciones de variables que resuman la
informacin (por ejemplo componentes principales).
http://wiki.imbiv.unc.edu.ar/index.php/Gu%C3%ADa_de_campo_de_R 61/62
7/7/2016 Gua de campo de R - Wiki IMBIV
Deteccin de la colinealidad
cor
Creamos para este ejemplo una variable tam2 que es indntica a tam mas
mibase$tam2 <- mibase$tam + rnorm(24, mean =
1, sd = 0.5) un pequeo error generado por rnorm.
cor(mibase[, c("tam", "tam2")], use = Valores de correlacin por arriba 0.7 indican que las variables son
"complete.obs") colineales.
library(car); vif
library(car)
mibase$tam2 <- mibase$tam + rnorm(24, mean = Ajustamos un modelo con las tres variables y evaluamos los factores de
1,sd = 0.5) inflacin de la varianza (vif). Si una de las variables fuera un factor con ms
fit <- lm(frutos ~ tam + tam2 + pob, data = de dos niveles, R calcula los "vif generalizados". Valores de vif o mayores a
mibase) 5 indican problemas de colinealidad.
vif(fit)
Obtenido de http://wiki.imbiv.unc.edu.ar/index.php?title=Gua_de_campo_de_R&oldid=12037
Esta pgina fue modificada por ltima vez el 9 dic 2013, a las 16:07.
Esta pgina ha sido visitada 15 876 veces.
http://wiki.imbiv.unc.edu.ar/index.php/Gu%C3%ADa_de_campo_de_R 62/62