Sunteți pe pagina 1din 62

7/7/2016 Gua de campo de R - Wiki IMBIV

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

6.5 Guardando grficos


7 MODELOS LINEALES: REGRESIN, ANOVA Y DEMS
7.1 Exploracin visual de datos
7.2 Construccin de modelos lineales y resmenes bsicos
7.3 Salida de un modelo lineal
7.4 Diagnsticos de modelos
7.4.1 Diagnsticos Grficos
7.4.2 Diagnsticos numricos
7.4.3 Sobre colinealidad

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

Cuatro smbolos bsicos


#
El espacio a la derecha de este smbolo no es ledo, por lo que sirve para
# esto es una nota
poner anotaciones.

<-
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, 2, 3, 4)

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)

vector <- c(1, a, 2, b)

Las ayudas para R


El smbolo ? sirve para acceder a las ayudas de cada una de las funciones de R, lo que requiere conocer el nombre de la funcin
por anticipado. Cuando esto no sucede, la solucin es sencillamente buscar el nombre del anlisis que queremos hacer ms R
en internet (por ejemplo, generalized linear models R). En esta seccin revisaremos las ayudas oficiales de R, las cuales
pueden ser poco amigables. Sin embargo es crucial que utilices internet y que guardes las pginas que te resultaron tiles como
http://wiki.imbiv.unc.edu.ar/index.php/Gu%C3%ADa_de_campo_de_R 6/62
7/7/2016 Gua de campo de R - Wiki IMBIV

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.

Secciones de la ayuda de una funcin cualquiera.

function {package}

Esta parte identifica la funcin. El paquete debe estar cargado (ver seccin 1.3) para que la ayuda funcione.

Description.

Breve descripcin de lo que realiza la funcin. A veces es demasiado breve.

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.

El autor o autores de la funcin.

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.

Lista de funciones relacionadas.

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.

Pginas de ayudas generales para R.

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/

Sobre los paquetes y su instalacin


Los objetos pueden ser creados, modificados o analizados con funciones bsicas o complejas. Muchas de estas funciones ya
estn por defecto cargadas al abrir el programa. Otras miles se encuentran en paquetes especficos que son necesarios bajar de
internet, instalarlos y cargarlos. Los paquetes se encuentran en repositorios (servidores o espejos que mantienen copias de
todos los paquetes) alrededor del mundo y conviene utilizar aquellos que estn ms cercanos a tu localidad.

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

Formas de instalar y cargar paquetes


install.packages()
Te preguntar que espejo vas a utilizar para bajar el paquete. Una vez
install.packages("car") elegido comienza a descargar e instalar el paquete. En windows o Rstudio
se puede realizar desde el menu paquetes (o packages)
library()
Para usar el paquete es necesario previamente cargarlo (activarlo). En
Windows, Mac o Rstudio se puede realizar desde sus mens. Sin embargo,
library(car)
cuando realices una rutina es recomendable incluir al principio los comandos
de carga de todos los paquetes que vayas a utilizar.

Sobre los objetos


Cuando abres R por primera vez, la primera impresin es que no es amigable. Y en realidad no lo es. Los conocidos mens de
Archivo, Editar, Ayuda, etc. estn reducidos a su mnima expresin (o no existen en absoluto, si usas R en Ubuntu). Adems, no
sirven para nada "estadstico". No hay ventanitas para calcular la media, ajustar un modelo o pedir un anlisis de componentes
principales. Ni siquiera para hacer un grfico. Para peor, probablemente el primer mensaje que R te dio es "Error: objeto X no
encontrado". Todos estos problemas provienen de un rasgo fundamental: R es un lenguaje. Por lo tanto aprender R es como
aprender ingls (o chino mandarn) y es muy diferente a aprender "recetas de cocina estadstica".

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.

Pequeo bestiario de objetos comunes en R


Objeto que contiene nuestros datos. Habitualmente nuestros datos estarn almacenados en una
tabla de Excel o Calc, y deberemos realizar un pequeo procedimiento para importarlos. Al
realizar este procedimiento, un data.frame ser creado. Ocasionalmente puede ser creado "a
data.frame mano" dentro del mismo R.

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).

integer. Consiste de nmeros enteros.


vector
character. Contiene letras, nombres, etc. Notar que cada elemento se encuentra entre comillas
(ej. "A1").

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.

list Objeto que compuesto de objetos de distinto tipo y largo.

Flujo del Trabajo en R

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.

Sobre las rutinas

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

obs pob trat tam frutos


1 a 1 3.2246 10
2 a 1 2.3868 6
3 a 1 NA 5
4 a 1 2.7746 4
5 a 2 2.1741 8
6 a 2 1.844 6
7 a 2 1.6193 5
8 a 2 1.7563 12
9 b 1 3.1419 7
10 b 1 4.8306 12
11 b 1 4.1514 7
12 b 1 3.5897 8
13 b 2 3.4678 2
14 b 2 1.1311 4
15 b 2 3.0528 3
16 b 2 3.0423 6
17 c 1 3.6083 7
18 c 1 5.8285 11
19 c 1 4.5025 8
20 c 1 6.969 3
21 c 2 6.3181 10
22 c 2 NA 10
23 c 2 7.8368 20
24 c 2 7.5189 14

Importando y exportando bases de datos

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.

Tips: cosas que podran producir problemas.

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

Funciones para importar bases de datos


|read.table / read.csv

Importar los datos, conociendo la ruta. Interpretacin bsica:

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"

Mtodo "quick & dirty" de importar datos: 1) Selecciona los datos en tu


planilla y cpialos (pero no los pegues, dejalos en la memoria o sea en el
portapapeles o clipboard); 2) Escribe esta rutina en R (no la copies). La
mibase <- read.table("clipboard", header =
rutina leer el objeto que tengas en el portapapeles. 3) Recuerda presionar
TRUE, sep = ".")
Enter. Si tienes problemas y no se pega bien el formato, podrias pegarlo
primero en una tabla de Excel y luego copiarlo de vuelta y entonces usar
esta funcin para introducir los datos a R.

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()

base3 <- read.table("datos3.txt", header = T)

Tips: importacin de datos.

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

Ocasionalmente querremos exportar nuestros datos de R hacia otro formato.

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

Funciones para exportar bases de datos


write.table / write.csv

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)

TRABAJANDO CON BASES DE DATOS


Los data.frame son un tipo de objeto muy comn que consta de datos (objetos atmicos que por lo tanto ya no se pueden
descomponer en ms subobjetos) ordenados en filas (row) y columnas (col), cada una de ellas con el mismo nmero de filas.
Cada uno de estos objetos tiene sus propiedades exclusivas que se vern en las prximas secciones. Por el momento
mostraremos las propiedades del objeto data.frame. Los data.frame pueden contener columnas de diferente tipo, por ejemplo
numricas y categricas.

Extrayendo informacin de un data.frame


En la seccin anterior cargamos una base de datos al cual llamamos mibase que debido a que fue cargada usando read.table es
un objeto del tipo data.frame. En la siguiente tabla estn las principales funciones para visualizar un set de datos y obtener
informacin sobre l.

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

Visualizar y extraer informacin de un set de datos


escribir el nombre del objeto

Escribir el nombre del objeto hace que R nos lo muestre de manera


mibase
completa. Si es una base muy larga esto puede no ser muy buena idea.

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

names(mibase) Permite ver los encabezados de todas las columnas.

nrow

nrow(mibase) Indica el nmero de filas nicamente

ncol

ncol(mibase) Indica el nmero de columnas nicamente

dim

dim(mibase) Indica las dimensiones de la base (# filas, # columnas)

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.

Accediendo a la informacin contenida en un data.frame


Para acceder tanto a las filas como a las columnas hay varias formas de hacerlo y cada una tiene su propia ventaja. La forma ms
clara de entender que las columnas y las filas estn anidadas en el data.frame es por medio de la indexacin. stos son
mtodos aplicables a varios tipos de objetos y permiten una manipulacin de los objetos muy fina.

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.

Muestra las filas 1 a 6, omite la fila 7 y luego muestra de la 8 a la 18.


mibase [c(1:6, 8:18), 1:3] Mientras tanto, solo muestra las primeras 3 columnas. c indica
concatenacin (unir) la secuencia 1 a 6 con la secuencia 8 a 18.
Muestra todas las filas, excepto aquellas del 1 al 18, y todas las columnas,
mibase[-c(1:18), -2]
excepto la segunda
$

mibase$pob Muestra la columna llamada pob que se encuentra en el objeto mibase.

combinando $ y [ ]

mibase$tam [1:18] Muestra los elementos 1 al 18 de la columna tam.

mibase$tam [-7] Excluye el sptimo elemento de la columna tam.

Muestra los elementos de la columna tam menores a 2. Claro tambin se


mibase$tam [mibase$tam < 2]
puede usar ">" e "==" (significa =) y != (que significa distinto a ...)

Trabajando con columnas


La informacin de una columna

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

Visualizar y extraer informacin de una columna


combinando $ y [ , ]

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

Hay dos tipos columnas principales dependiendo de qu tipo de objetos


class (mibase$pob) contiene: numeric o factor. Los factores a su vez pueden estar ordenados
o no ordenados y cada uno de sus elementos consiste en un character.
class (mibase$frutos) OJO: El no tener bien definido el tipo de datos con el que se quiere trabajar
es uno de los principales problemas para correr ciertos anlisis.

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

Determinando la longitud de la columna. Por ser una columna obviamente


length(mibase$tam)
no tiene ancho.

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.

Creando nuevas columnas

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
<-

mibase$log.frutos <- log(mibase$frutos) #


logaritmo natural

mibase$log.frutos <- log(mibase$frutos, 10) #


logaritmo base 10 Agregar una nueva columna es tan fcil como inventar un nombre y
agregarle contenido con una funcin. Nota que si uso el mismo nombre,
mibase$z.tam <- scale(mibase$tam) # estoy reemplazando valores ("pisando"), y los valores originales se pierden.
estandarizar

mibase$tam <- log(mibase$tam) # "pisar


variables"

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

mibase$clave <- paste(mibase$pob, mibase$trat, resultado a.1,a.2,,c.8.


sep = ".")

strsplit

strsplit(mibase$clave, split = "")

strsplit(mibase$clave, split = ";")

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.

for (i in 1:24) pob[i]<-H[[i]][1]

pob

Modificando una columna

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)

Trabajando con filas


Las actividades ms comunes con filas son quitar una fila, cambiarla de lugar, o cambiar de nombre. Ocasionalmente, algunos
sets de datos requieren tener filas con nombres. Por ejemplo si tenemos una matriz de presencia/ausencia de especies (filas) en
diferentes sitios (columnas) suele ser til indicarle a R que coloque los nombres de las especies como nombres de filas.

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

Creando nueva base


Creamos una nueva base (mibase.2) igual a la anterior, pero sin las filas 3 y
mibase.2 <- mibase[-c(3, 5), ] 5. OJO: es conveniente no utilizar el mismo nombre, por las dudas nos
arrepintamos de esta accin.

Uniendo bases de datos


Hay dos formas bsicas en las que se pueden unir bases de datos: horizontalmente o verticalmente, es decir, o se adhieren las
columnas de ambas bases o las filas.

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.

Para este ejemplo vamos a utilizar dos bases de datos nuevas.

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

obs largo trat2


1 4.726665 a
2 3.263297 a
3 3.411479 b
4 3.991426 b
5 4.066395 a
6 3.762102 a
7 4.39818 b
8 NA b
9 3.712131 a
10 4.078987 a
11 3.994718 b
12 3.992025 b
13 4.756946 a
14 3.64809 a
15 4.05796 b
16 3.931277 b
17 3.578331 a
18 3.673713 a
19 3.785033 b
20 5.031436 b
21 2.929234 a
22 2.965337 a
23 4.543052 b
24 3.399721 b

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

obs pob trat tam frutos


25 d 1 1.456063 0
26 d 1 1.312139 2
27 d 1 1.792546 5
28 d 1 1.809306 3
29 d 2 1.570933 1
30 d 2 1.084462 5
31 d 2 1.439948 10
32 d 2 1.773188 6

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.

union, intersect, setdiff

union(mibase$pob, mibase2$trat) Define los elementos presentes en al menos un vector.

intersect(mibase$pob, mibase2$trat) Define los elementos que se comparten entre vectores.

setdiff(mibase$pob, mibase2$trat) Define los elementos que difieren entre vectores.

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

Tips: para situaciones ms complicadas.

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.

Dividiendo bases de datos


La divisin de las bases de datos se realiza fcilmente utilizando la funcin subset. Esta funcin tiene dos argumentos principales:
el objeto a ser dividido y una condicin lgica que explica cmo realizar la divisin. Slo es necesario tener en cuenta el uso
smbolos para comparar y de algunos operadores lgicos.

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

Divisin de acuerdo a un factor. Se crea una nueva base de datos (base1)


base1 <- subset(mibase, mibase$pob == "a") que almacena aquella parte de la base original (mibase) donde la columna
pob indique que esos datos pertenecen a la poblacin "a".

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)

Divisin de acuerdo a un factor. La nueva base almacena los datos de la


base2 <- subset(mibase, mibase$pob != "a")
base original pero excluyendo los datos de la poblacin "a".

Divisin de acuerdo a una variable numrica. La nueva base almacena los


base3 <- subset(mibase, mibase$tam <= 5) valores que cumplan con la condicin de que el tamao sea menor o igual
(<=) a 5.

Combinacin de casos anteriores. La nueva base almacena los valores que


base4 <- subset(mibase, mibase$tam > 3 |
cumplan con la condicin de que el tamao sea mayor que 3 o (|) que
mibase$pob == "c")
pertenezca a la poblacin "c".

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

Tips: Recordatorio de smbolos.

== Igual
!= distinto
> mayor que
< menor que
>= mayor o igual que
|o
&y

Ordenando la base de datos


Muchas veces queremos visualizar la base de datos con cierto orden. He aqu cmo hacerlo.

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

Mtodos para ordenar una base de datos


Ordenando columnas [,]

Ordenando columnas. Invierte el orden de las columnas. La ltima columna


es la primera ahora. De esta forma se pueden disear diferentes
baseCol <- mibase[, c(5, 4, 3, 2, 1)]
disposiciones de las columnas, eliminar alguna de ellas (dejar fuera por
ejemplo la columna 1), etc.

Ordenando filas (order)

mibase.o <- mibase[order(mibase$tam), ]


Ordena en forma ascendente la base en funcin de la columna indicada en
order (tam en este caso). La linea de abajo hace lo mismo pero en forma
mibase.o <- mibase[order(mibase$tam,
descendente.
decreasing = TRUE), ]

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

Ordenando en forma aleatoria (sample)

baseFila6 <- mibase[sample(1:nrow(mibase),


Ordenar de manera aleatoria las filas de la base
replace = FALSE), ]

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.

ESTADSTICA DESCRIPTIVA Y PRUEBAS BSICAS


http://wiki.imbiv.unc.edu.ar/index.php/Gu%C3%ADa_de_campo_de_R 34/62
7/7/2016 Gua de campo de R - Wiki IMBIV

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.

Medias, varianzas y dems

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

Funciones para extraer parmetros de una muestra


mean

Calcula la media. El primer argumento es el nombre de la columna, el


M <- mean(mibase$tam, na.rm = TRUE) segundo indica qu hacer con los NA (en este caso removerlos, lo ms
aconsejable)

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

Calcula la desviacin estndar muestral (sobre N-1). Mismos argumentos


SD <- sd(mibase$frutos, na.rm = TRUE)
que la media.

quantile

Calucula los cuantiles. El argumento probs determina cuantos cuantiles


calcular, por ej. seq (0, 1, 0.25) indica que calcular el mnimo (0), los
Qu <- quantile(mibase$tam, probs = seq(0, 1, by
cuantiles 25, 50 y 75% y el mximo (1). na.rm indica que hacer con los
= 0.25), na.rm = TRUE, type= 7)
NA. type = 7 se debe a que, curiosamente, existen nueve formas de
calcular cuantiles.

range

R <- range(mibase$frutos, na.rm = TRUE) Muestra el valor mnimo y mximo.

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

summary(mibase) Obtienes la media, medianas, quantiles, valores mnimos y mximos de


aquellas columnas que sean numricas. Para aquellas que son factores te
indica cuantos niveles tiene el factor y el numero de replicas que tiene cada
nivel (i.e. a = 8 observaciones, b = 8 observaciones, etc.)

Funciones que retornan matrices


Las matrices de varianza-covarianza y de correlacin de un set de datos pueden obtenerse con las funciones var y cor,
respectivamente. Presta atencin a la forma de evitar los NA de la ltima.

Funciones var y cor


var

Calcula un objeto matrix que posee las varianzas muestrales en su diagonal


VC <- var(mibase[, 4:5], na.rm = TRUE)
y las covarianzas en el resto de las celdas.

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

Funciones para pruebas estadsticas bsicas


t.test

#paso previo

t1 <- subset(mibase, mibase$trat == "1")


Prueba t para dos variables continuas. Para hacer una prueba t pareada
t2 <- subset(mibase, mibase$trat == "2")
agrega: paired = TRUE.
#prueba t

t.test(t1$tam,t2$tam, na.action = na.omit)

t.test(tam ~ trat, data = mibase, na.action =


Una variable continua y una variable binaria (por ej. Trat 1 vs. Trat 2)
na.omit)

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

Estima la correlacin entre ambas variables y su nivel de significancia. El


cor.test(mibase$frutos, mibase$tam, use =
mtodo de estimacin puede ser cambiado entre "pearson", "kendall" o
"complete.obs", method = "pearson")
"spearman".

chisq.test

ji <- matrix (c(9,4,3,9),2) #matriz


Primero tenemos que hacer una matriz que contenga una tabla de
prueba.ji<- chisq.test(ji)
contingencia.
prueba.ji

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.

Funciones bsicas de alto nivel

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

Funciones de alto nivel


plot

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) Grafica los valores de x (en el eje y) ordenados en el eje x

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

boxplot(mibase$tam) Grafico de caja y bigotes (box and whiskers).

coplot

Grafico bivariado entre y ~ x donde dicha relacin est condicionada por


coplot (frutos ~ tam|pob, data = mibase)
una tercera variable, en este caso pob. Es un grfico feo.

interaction.plot

Grficos para ver interacciones en modelos lineales. Influencia de dos


interaction.plot(x.factor = mibase$pob,
factores (pob y trat) sobre una variable de respuesta nmerica (frutos). El
trace.factor = mibase$trat, response =
factor x es el que ocupa el eje x. El factor "trace" se representa con lineas
mibase$frutos)
de diferente diseo.

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

Hace grfico de pastel donde divide el pie en funcin de los nmeros


pie(c(55, 32, 12))
introducidos en un vector.

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

qqplot (mibase$frutos, mibase$tam) Cuantiles de y con respecto a los cuantiles de x (qqplot(x,y))

library(sciplot); bargraph.CI

library(sciplot)

bargraph.CI(x.factor = pob, response = frutos,


Grfico de barras usando errores estndar. La otra linea divide las columnas
data = mibase)
por el grupo trat
bargraph.CI(x.factor = pob, response = frutos,
group = trat, data = mibase)

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

Funciones bsicas de bajo nivel


Para poder visualizar el efecto de estas funciones es necesario ya contar con un grfico, por ejemplo plot(mibase$tam,
mibase$frutos)

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

Funciones de bajo nivel


points

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

lines(mibase$tam, mibase$frutos) Agrega lineas al grfico.

text

text(5, 12, "hola") Agrega el texto "hola" en la coordenada x = 5 e y = 12.

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

arrows(3, 4, 4, 5) Agrega flechas de la misma forma que se agregan los segmentos.

abline

abline(a = 0, b = 1) Agrega una lnea con ordenada al origen = a y pendiente = b.

Agrega la recta de regresin obtenida a partir de realizar modelo lineal


abline(fit)
(objeto de nombre fit)

abline(h = 4) Agrega una lnea horizontal en la ordenada = y.

abline(v = 4) Agrega una lnea vertical en la abscisa = x.

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

Para dibujar un polgono se necesita usar vectores que indican las


polygon(c(2, 4, 6, 4, 2), c(8, 4, 8, 12, 8))
coordenadas de las sucesivas esquinas.

axis

Agrega ejes al grafico: abajo (side = 1), a la izquierda (side = 2), arriba
axis(side = 3)
(side = 3) y derecha (side = 4).

title

title("hola") Agrega un ttulo.

Argumentos comunes a varias funciones grficas


Todos estos argumentos pueden ser incluidos dentro de una funcin de alto nivel. Por ejemplo: plot (mibase$tam, mibase$frutos,
axes = FALSE, bty = "red", col = "black", etc)

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")

main = Para el titulo principal (ej. main = "Grfica principal")

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".

font = Controla el tipo de fuente: 1 normal, 2 itlica, 3 negrita, 4 negrita itlica.

Controla el tamao de textos y smbolos. 1 es el tamao normal, 3 es el triple de lo normal, 0.5


ps =
es la mitad de lo normal, etc.

bg = Controla el color de fondo.

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.

Smbolos para graficar

Colores para graficar

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

Tips: rutina para construir una tabla de colores en pdf.

setwd("C:/Users/Yo/Mis Documentos") # recuerda cambiar el directorio

A <- rep(seq(1, 16, by = 2), 30)

B <- sort(rep(seq(1, 30), 8), decreasing = TRUE)

pdf(file = "hoja colores 1 de 3.pdf", width = 8.5, height = 11, paper="a4")

par(mar = c(0.1, 0.1, 2, 0.1))

plot(A, B, axes = FALSE, pch = 15, cex = 2.8, col = colors()[1:240], xlim = c(0, 17))

text(A+0.27, B, colors()[1:240], cex = 0.45, adj = 0)

title(main = list("COLORES EN R - HOJA 1 \n por Santiago Benitez-Vieyra", cex = 0.8))

dev.off()

pdf(file = "hoja colores 2 de 3.pdf", width = 8.5, height = 11, paper = "a4")

par(mar = c(0.1, 0.1, 2, 0.1))

plot(A, B, axes = FALSE, pch = 15, cex = 2.8, col = colors()[241:480], xlim = c(0, 17))

text(A+0.27, B, colors()[241:480], cex = 0.45, adj = 0)

title(main = list("COLORES EN R - HOJA 2 \n por Santiago Benitez-Vieyra", cex = 0.8))

dev.off()

pdf(file = "hoja colores 3 de 3.pdf", width = 8.5, height = 11, paper = "a4")

par(mar = c(0.1, 0.1, 2, 0.1))

plot(A, B, axes = FALSE, pch = 15, cex = 2.8, col = c(colors()[481:657], rep("white", 63)), xlim = c(0, 17))

text(A+0.27, B, c(colors()[481:657], rep("", 63)), cex = 0.45, adj = 0)

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

title(main = list("COLORES EN R - HOJA 3 \n por Santiago Benitez-Vieyra", cex = 0.8))

dev.off()

Sobre el espacio de graficacin


R tiene un espacio de graficacin el cual puede ser subdividio para graficar ms de un grfico por ventana. Para esto se corta el
espacio de graficacin siguiendo la logica de una matriz (es decir, se cuadricula el espacio en filas y columnas).

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

Divisin de la vantana grfica


layout

layout(matrix(1:4, 2, 2))

hist (mibase$tam, main = "histograma tamao")

hist (mibase$frutos, main = "histograma frutos")


Subdivide la ventana en 4 ventanas. Dos filas y dos columnas. En este
plot (mibase$pob, mibase$tam, main = "tam x ejemplo se hacen 4 grficos. layout (1) regresa al espacio original el cual no
pob") esta subdividido.

plot (mibase$pob, mibase$frutos, main = "frutos x


pob")

layout (1)

layout(matrix(1:4, 2, 2) , widths = c(1, 2), heights


= c(2, 1))
Para modificar el tamao relativo de los grficos. layout.show permite ver
layout.show(4) como se dividen los marcos de graficacin antes de realizar los grfios.

layout(1)

par

par(mfrow = c(2, 2))

hist(mibase$tam, main = "histograma tamao")

hist(mibase$frutos, main = "histograma frutos")

plot(mibase$pob, mibase$tam, main = "tam x Otra forma de dividir el espacio es usar esta funcin.
pob")

plot(mibase$pob, mibase$frutos, main = "frutos x


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(mfcol = c (1, 2))

hist (mibase$tam, main = "histograma tamao")


En este caso cambiamos mfrow por mcol que altera tambien el espacio.
hist (mibase$frutos, main = "histograma frutos")

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

Funciones para guardar grficos


jpeg
Para generar una figura en jpeg. width y height determina el ancho y alto
del objeto. units determina las unidades (pixeles por defecto) en las que
jpeg(file = "mi_grafico.jpg", width = 12, height =
ser guardado. quality determina el nivel de no-compresin y res el nivel de
10, units = "cm", quality = 95, res = 300)
resolucin. Este es el nico formato que permite manipular las unidades de
hist (mibase$tam, main="histograma tamao") medida.

dev.off() dev.off () es fundamental para poder abrir el archivo, si no ejecutamos ese


comando el archivo con el grfico permanecer "ocupado" por R.

pdf

pdf(file = "mi_grafico.pdf", width = 7, height = 6,


paper = "a4") Para generar una figura en pdf. paper determina el tamao del papel. El
tamao por defecto es igual al grfico.width y height se encuentran en
hist (mibase$tam, main="histograma tamao")
pulgadas (1 in = 2.54 cm).
dev.off()

eps

postscript(file = "mi_grafico.eps", width = 7,


height = 6, paper = "a4", horiz = TRUE)
Para generar una figura eps. horizontal (FALSE) o vertical (TRUE) define
hist (mibase$tam, main="histograma tamao") la orientacin de la figura.

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

MODELOS LINEALES: REGRESIN, ANOVA Y


DEMS
En esta seccin mostramos la sintaxis para realizar diferentes pruebas estadsticas. No pretendemos explicar los fundamentos
estadsticos de cada prueba, para eso estn los libros y cursos de estadstica.

Exploracin visual de datos


Los grficos son una gran herramienta para conocer nuestros datos. La visualizacin de los datos es fundamental tanto para
confirmar que nuestra base de datos est libre de errores de transcripcin o de toma de datos, como para entender la naturaleza
de la informacin que colectamos (i.e. nuestros datos). Grandes errores pueden ser detectados de esta manera. Repetiremos
algunas funciones que ya se vieron previamente pero con la intencin de mostrar explcitamente las herramientas bsicas para
esta exploracin.

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

Herramientas de eploracin visual


Deteccin de outliers
Cualquier punto muy alejado de la nube ser potencialmente un outlier. La
funcin de bajo nivel text te puede ayudar a identificar cual es la fila que se
tiene que remover para quitar el outlier. En este caso se puede notar que la
plot(mibase$frutos, pch = ".") fila 23 esta un poco alejada de la nube principal. No remuevas los outliers
solamente porque "te parece" o "me hacen salir mal el anlisis". Eso es
text(mibase$frutos,labels = rownames(mibase),
cex = 0.8) trampa! Remueve con seguridad los outliers que provengan de datos mal
tomados o mal escritos, pero si el outlier es "natural" no deberas removerlo,
o al menos deberas reportar tu anlisis por duplicado, con y sin esa
observacin.

boxplot(mibase$frutos) El boxplot nos confirman el outlier.

Explorar la distribucin de la variable

hist(mibase$frutos)

d <- density(mibase$frutos) Puede usarse el histograma o generar un grfico de densidad.

plot(d)

Relacin entre variables

pairs(mibase) Para ver la relacin entre todo el conjunto de variables consideradas.

plot(mibase$tam, mibase$frutos)
Para ver cada par de variables
text(mibase$tam, mibase$frutos, labels =
rownames(mibase), cex = 0.8)

Construccin de modelos lineales y resmenes bsicos

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

Funciones para modelos lineales


lm

fit <- lm(frutos ~ tam, data = mibase)

summary(fit) Regresin lineal simple. La variable tam es continua.

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.

fit <- lm(frutos ~ tam + pob, data = mibase)


Anlisis de la covarianza (ANCOVA). Dos variables independientes, una
summary(fit) continua y otra categrica. Para ver modelos ms complejos ver tabla de
frmulas.
anova(fit)

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).

Salida de un modelo lineal


Los objetos creado a partir de un modelo lineal (en este caso el objeto fit) contienen mucha mas informacin que la que
muestran summary y anova. Este tipo de informacin puede usarse para pruebas subsecuentes y anlisis ms detallados.

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

Componentes de un objeto "lm"


coefficients

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

Genera los intervalos de confianza (inferior y superior) de los coeficientes


confint(fit, level = 0.95)
estimados. El nivel de confianza puede manipularse con level.

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

Prediccin a partir de un modelo.


predict

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

Funciones para diagnsticos numricos


shapiro.test

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

S-ar putea să vă placă și