Вы находитесь на странице: 1из 24

1 Introduccin

Este trabajo es una coleccin de frmulas, tcnicas y mtodos estadsticos desarrollados para usar en el campo de la Ecologa. Aqu se detalla cmo se pueden analizar los datos ecolgicos, desde el muestreo hasta el modelado, y desde los individuos hasta los ecosistemas. Teniendo en cuenta la fuerza y debilidad de las tcnicas estadsiticas, se sintetizan las herramientas estadsiticas actuales, presentndolas de manera simplicada y aplicada para que sean entendidas por la mayora. Me uno al objetivo de James y McCulloch (1990):

The objective of the present review is to help the researcher navigate between the Scylla of oversimplication, such as describing complex patterns with univariate analyses, and the Charybdis of assuming that patterns in data necessarily reect factors in nature, that they have a common cause, or, worse, that statistical methods alone have sorted out multiple causes . (James y McCulloch, Annu. Rev. Ecol. Syst. 1990).
1.1 Por qu estudiar estadstica?. Qu es la Estadstica?. La estadstica se podra denir como el conjunto de mtodos cientcos que nos permiten una interpretacin descriptiva de la informacin numrica, elegir elementos representativos para realizar inferencia y contrastar hiptesis, estudiar las relaciones causaefecto y hacer predicciones. Podemos clasicar la estadstica en: Descriptiva: descripcin de los datos observados. Describe, analiza y representa un grupo de datos utilizando mtodos numricos y grcos que resumen y presentan la informacin contenida en ellos. Probabilstica: modelizacin del comportamiento del fenmeno en estudio. Inferencial: estimacin de lo desconocido y generalizacin de los resultados. Apoyndose en el clculo de probabilidades y a partir de datos muestrales, efecta estimaciones, decisiones, predicciones u otras generalizaciones sobre un conjunto mayor de datos. Para ello, es importante establecer algunas deniciones de conceptos bsicos y fundamentales que sern utilizados a lo largo del texto.
1.1.1

Deniciones.

Conceptos bsicos.

Individuos o elementos: personas u objetos que contienen cierta informacin que se desea estudiar. Poblacin: conjunto de elementos (o individuos) que cumplen ciertas propiedades comunes. 9

Muestra: subconjunto representativo de la poblacin en estudio. Parmetro: funcin denida sobre una poblacin. Ej: altura media de los individuos de un pas. Estadstico o Estimador: funcin denida sobre una muestra. Ej: altura media de los individuos del aula. Variables o Caracteres: propiedades, rasgos o cualidades de los elementos de la poblacin. Estos caracteres pueden dividirse en cualitativos y cuantitativos. Modalidades: diferentes situaciones posibles de un carcter. Las modalidades deben ser a la vez exhaustivas y mutuamente excluyentes cada elemento posee una y slo una de las modalidades posibles. Ejemplo: Consideraremos todos los estudiantes de Granada (poblacin), donde queremos hallar la altura media de la poblacin (parmetro ). Realizamos un muestreo sobre los alumnos de la Facultad de Ciencias (muestra) y obtenemos la altura media de esta muestra (estadistico x).

1.1.2

Uno de los primeros pasos en la decisin de qu mtodo estadsitico usar es determinar qu tipo de variables tenemos. Cuando hablemos de variable haremos referencia a un smbolo (X, Y, A, B, ...) que puede tomar cualquier modalidad (valor) de un conjunto determinado, que llamaremos dominio de la variable o rango. En funcin del tipo de dominio, las variables las clasicamos del siguiente modo: V.Cualitativas (o variables categricas) Nominales: categoras son orden. Ej: Gnero, Genotipo, Fenotipo. Ordinales: categoras con orden. Ej: Mejora de un tratamiento, Grado de satisfaccin, Intensidad del dolor. V.Cuantitativas (o variables numricas) Discretas: nmeros enteros. Ej: nmero de colonias de bacterias en una caja de Petri , nmero de vrtebras en una lechuza. Continuas: nmeros reales. Ej: Altura, Peso, Presin, Densidad.
Ejemplos
http://udel.edu/~mcdonald/statvartypes.html

Tipos de variables

10

Problemas: Cuando tenemos una variable con un nmero pequeo de valores, puede no ser muy claro cmo clasicarla (es una variable cuanti o cualitativa?). No existe una regla tcita (rule of thumb ) para solucionar este conicto, y el trato que le des a la variable depender en parte de las preguntas a responder y las caractersiticas de la investigacin. Por ejemplo, si nuestra hiptesis es diferentes concentraciones de nutrientes tienen diferentes tasas de crecimiento bacterial deberemos tratar a la concentracin de nutrientes como una variable cualitativa. Sin embargo, si nuestra hiptesis es las bacterias crecen ms rpido al aumentar la concentracin de nutrientes deberemos considerar la concentracin de nutrientes como una variable cuantitativa. Es decir, podemos eliminar la ambiguedad cuando estamos diseando el experimento a desarrollar.
1.1.3 Cmo realizar un anlisis estadstico con nuestros datos? Paso a paso.

McDonal (2009) ha sugerido utilizar la siguiente aproximacin sistemtica, paso a paso: 1. Especicar la pregunta biolgica que queremos responder. 2. Formular la pregunta en trminos de hiptesis nula y alternativa. 3. Formular la pregunta en trminos de hiptesis estadsiticas nula y alternativa. 4. Determinar qu variables son relevantes a nuestro problema. 5. Determinar qu tipo de variables son cada una. 6. Disear un experimento que controle o aleatorice las posibles variables de confusin. 7. Debemos elegir el mejor test estadstico basado en el nmero de variables, el tipo de variables y el ajuste esperado de los supuestos paramtricos y las hiptesis que sern puestas a prueba. 8. Si es posible, haz un anlisis de potencia para determinar un buen tamao muestral para el experimento. 9. Haz el experimento. 10. Analizar los datos para ver si satisfacen los supuestos del test estadstico que elegimos (normalidad, homocedasticidad, indpendencia, etc.). Si no lo hace, elige un test ms apropiado. 11. Aplicar las pruebas estadsticas elegidas e interpretar los resultados. 12. Comunicar los resultados de manera efectiva, con grcos o tablas. Pueden encontrar ejemplos de aplicacin en la web http://udel.edu/~mcdonald/ statstep.html. 11

Figure 1: Pgina ocial de r-project ( http://www.r-project.org/ )

1.2

Qu es R? R es un lenguaje y entorno (o ambiente) con un conjunto integrado de programas para la manipulacin de datos, clculo y grcos. R es un proyecto GNU similar al lenguaje S (J. Chambers et al., Bell Labs.), pero que se distribuye bajo la General Public License (GPL, Open Sourse). Esta licencia no tiene restricciones de uso, slo obliga a que la distribucin sea siempre GPL.
R es un lenguaje Orientado a Objetos: signica que las variables, datos, funciones, resultados, etc., se guardan en la memoria activa del computador en forma de objetos con un nombre especco. El usuario puede modicar o manipular estos objetos con operadores (aritmticos, lgicos, y comparativos) y funciones (que a su vez son objetos). Mientras que programas ms clsicos muestran directamente los resultados de un anlisis, R guarda estos resultados como un objeto, de tal manera que se puede hacer un anlisis sin necesidad de mostrar su resultado inmediatamente. Esto puede ser un poco extrao para el usuario, pero esta caracterstica suele ser muy til. Otras caractersticas de los lenguajes orientados a objetos son la herencia: las subclases heredan las caractersticas de las superclases, y el polimorsmo la misma operacin aplicada a diferentes objetos resulta en diferentes implementaciones. R es un lenguaje interpretado (como Java) y no compilado (como Fortran, Pascal, . . . ), lo cual signica que los comandos escritos en el teclado son ejecutados directamente sin necesidad de construir ejecutable 12

Figure 2: Robert Gentleman y Ross Ihaka (tambin conocidos como R & R) liberaron el cdigo R como software libre en 1996.
http://www.nytimes.com/2009/01/07/technology/business-computing/ 07program.html?pagewanted=all

Permite

Almacenamiento y manipulacin efectiva de los datos. Operadores para clculo sobre variables indexadas (arrays) y matrices. Amplia, coherente e integrada coleccin de herramientas para anlisis de datos. Grandes posibilidades gracas. Lenguaje de programacin orientado a objetos bien desarrollado, simple y efectivo. Es un ambiente o entorno de trabajo, es decir, presenta herramientas muy exibles que pueden extenderse fcilmente mediante paquetes (packages; http://cran.r-project.org/mirrors.html ) y permite crear nuestras propias funciones. Grcos de alta calidad exportables en diversos formatos: PostScript, pdf, A bitmap, pictex (L TEX), png, jpeg, etc. Comunidad muy dinmica de desarrolladores de paquetes que cuenta con estadsticos de prestigio Lenguaje orientado a objetos 13

Ventajas

Consume pocos recursos informticos Puede ejecutarse remotamente (telnet) Sintaxis exigente Documentacin muy amplia y dispersa, que puede resultar difcil. Algunos paquetes no han sido muy contrastados. Utiliza la lnea de comandos y no un interfaz grco, esto lleva mucho tiempo de adaptacin y prctica.
Instalacin de R

Desventajas

1.3

Depende del sistema operativo, pero todo se puede encontrar en http://cran. r-project.org/bin. o Windows: bajar ("download") el ejecutable desde http: //cran.r-project.org/bin/windows/base . (por ejemplo, http://cran.r-project. org/bin/windows/base/rw1070.exe ). o Ejecutar el chero. Instalar el sistema base y los paquetes recomendados. o GNU/Linux: dos opciones: o Obtener el R-x.y.z.tar.gz y compilar desde las fuentes, y tambin bajar los paquetes adicionales e instalar. (Buena forma de comprobar que el sistema tiene development tools). o Obtener binarios (ej., *.deb para Debian, *.rpm para RedHat, SuSE, Mandrake).
1.4

Windows:

Cmo trabajar con R?

Hacer click dos veces en el icono. Se abrir "Rgui" (Gui, Graphical User Interface), con un mensaje de inicio. Iniciar R desde Tinn-R. Desde una "ventana del sistema" ejecutar "Rterm"; parecido a "R" en Unix o Linux. Teclear "R" en una shell. Iniciar R desde Tinn-R.

GNU/Linux:

Sistema de ventanas Ventanas

14

Figure 3: Sistema de ventanas para Unix, Windows y MacOS X, respectivamente. 15

Figure 4: Tinn-R

16

1.4.2

Acceder a R

debemos hacer doble clic en el cono correspondiente. o podemos recurrir al sistema de men. o podemos acceder va Tinn-R o RStudio.

1.4.3

Sintaxis bsica de R
+ # Continuartion promt: indica una orden incompleta. ; # separa rdenes en la misma lnea. , # separa argumentos entre parntesis. # #para realizar comentarios. q() # para salir del programa. <- o = #operador para la asignacin de objetos.

Smbolos bsicos > # R cursor (prompt): smbolo del sistema.

Flechas verticales del teclado ( ^_) recorren el historial de ordenes. Flechas horizontales () permiten el movimiento dentro de la lnea El operador de asignacin <- permite crear objetos en R. El nombre de un objeto debe: Comenzar con una letra (A-Z y a-z), puede incluir letras, dgitos (0-9), y puntos (.). R discrimina entre letras maysculas y minsculas para el nombre de un objeto, de tal manera que x y X se reere a objetos diferentes. R no interpreta los espacios excepto para la asignacin (bien: <- , mal: < -)

Ser ordenado. Se recomienda crear una carpeta para cada nuevo anlisis, donde subdividir las reas en:
1. datos 2. scripts 3. imagenes 4. historias 5. grcos 6. anotaciones

18

Directorio de trabajo Antes de comenzar a trabajar en R conviene observar nuestro directorio de trabajo, es decir, aquella carpeta donde guardaremos nuestros resultados. Como comentbamos anteriormente, se recomienda crear una nueva carpeta cada vez que comencemos un trabajo nuevo. Para observar en qu carpeta estamos trabajando utilizaremos la funcin getwd, mientras que para cambiar o seleccionar un nuevo directorio utilizaremos la funcin setwd.
Cmo especicar rutas (paths) en R para Windows? El caracter \ tiene que ser doble \\ o utilizar /, como en Linux. Por ejemplo:
setwd(E:\\ROSANA\\clase1) setwd(E:/ROSANA) # como en Linux

getwd() # observar en qu directorio estamos trabajando setwd("E:/ROSANA/clase1") # seleccionar el directorio donde queremos trabajar

rea de trabajo Todos los objetos creados se guardan en el workspace o rea de trabajo. Para ver qu objetos estn disponibles en el entorno (workspace) se usa la funcin ls(). Si quisiramos obtener la relacin de objetos disponibles en una librera, utilizaramos ls(package=) o ls(library=). Por ejemplo, creamos un vector X y observamos que se ha incluido en nuestra rea de trabajo. Asimismo, observamos los objetos de la librera spatial.
X<-1:10 ls() # para ver los objetos del workspace ls(package=spatial) # para ver los objetos de un paquete; tambin se puede utilizar (library:__).

Para borrar un objeto o una lista de ellos, utilizamos la funcin rm. Continuando con nuestro ejemplo, eliminaremos el vector X creado anteriormente y volveremos a observar el workspace.
rm(X) #para borrar objetos __. ls() rm(list=ls()) #borra todos los objetos.

Podemos observar los elementos de un objeto utilizando la funcin str, y con la funcin attach/detach acceder/no acceder a los elementos que contiene dicho objeto. Por ejemplo, utilizaremos los datos iris (de Fisher o Anderson), que nos dan las mediciones en centmetros de distintas variables de 50 ores de 3 especies de la familia Iris: Iris setosa, versicolor y virginica .

data(iris) #esta funcin nos permite acceder a los datos iris str(iris) # nos permite ver como esta formado el objeto iris attach(iris) #permite trabajar con los elementos de iris sin nombrar a iris

Ahora sabemos que el objeto iris es un dataframe (que lo deniremos ms adelante), y podemos acceder directamente a cada uno de sus elementos solamente nombrndolo.
Sepal.Length Species dettach(iris) #vuelve a unir los componentes de iris

19

Para escribir representaciones externas de los objetos de R podemos especicar un archivo. De este modo, podremos guardar y acceder a estos objetos siempre que nos sea necesario.

x <- runif(20) #crea un objeto de 20 nmero aleatorios uniformes y <- list(a = 1, b = TRUE, c = "oops") #crea un objeto lista save(x, y, file = "xy.RData") #guarda los anteriores objetos en un archivo xy.Rdata save.image() # realiza lo mismo que antes, pero sin especificar el nombre del archivo ni los objetos a guardar, es decir, nos guarda todo lo que tengamos en el workspace.

Vayamos a la carpeta de trabajo y observemos que se han creado dos archivos de extensin RData. Si quisiramos acceder posteriormente a estos objetos, basta con utilizar la funcin load, con el nombre del archivo (y la ruta donde se encuentra).

load("xy.RData"). # .RData es la extensin que usa R para un archivo de objetos

Si lo que queremos guardar es el historial de rdenes que hemos ejecutado en R, utilizaremos la funcin savehistory, y loadhistory para cargar este archivo en R.

savehistory() #guarda el trabajo de una sesin. loadhistory() #recupera el trabajo de una sesin. # la extensin .RHistory indica un archivo de historia de rdenes.

Salir de R Para salir de R podemos utilizar el comando q(), donde nos preguntar si queremos guardar el workspace (tambin podemos utilizar
q(save=no)).

Libreras o paquetes R consta de un sistema base (vienen con la instalacin del programa) y un sistema adicional (deben ser instalados por el usuario) de paquetes, que extienden las funciones del programa. Los paquetes son una coleccin de funciones programadas previamente sobre temas esepccos. Para instalar un paquete adicional en R, desde Windows, podemos: 1. Instalacin y descarga manual: podemos descargar un paquete zipeado en la pgina de R (www.r-project.org) seleccionando en CRAN el servidor (e.g. Madrid, Espaa) y luego el paquete que queremos obtener. Posteriormente, en la barra de herramientas de la consola (o GUI) de R seleccionamos Paquetes->Instalar paquete(s) a partir de archivos zip locales y seleccionamos el archivo en la ruta donde lo hemos guardado. 2. Instalacin y descarga dentro de R: este mtodo instala cualquier paquete automticamente (debemos tener acceso a internet para que conecte con el repositorio de paquetes de R). Desde la barra de herramientas accedermos a Paquetes->Seleccionar espejo CRAN o Instalar paquete(s); luego seleccionamos el servidor que nos corresponda y se despliega una lista con

20

los paquetes disponibles. Desde la consola podemos utilizar cualquiera de las siguientes funciones:

update.packages("vegan") #ofrece para descargar e instalar las ltimas versiones de un paquete. install.packages("spatial") # instala el paquete solicitado
Finalmente, para cualquiera de los dos procedimientos anteriores, los paquetes deben ser cargados o activados para volverlos disponibles por el programa; esto se realiza desde la barra de herramientas con Paquetes->Cargar paquete o desde la consola con la funcin

library. Hay que library(vegan) # Carga o activa (loading) el paquete vegan require(vegan) # lo mismo que antes
Adems, disponemos de las siguientes funciones:

library() #da una lista de todos los paquetes disponibles en nuestro programa search() # da una lista de todos los paquetes activados library(help=spatial) # nos aporta informacin del paquete objects(grep("spatial",search())) # indica la lista completa de los contenidos del paquete.
Desde GNU/Linux: R CMD INSTALL paquete-x.y.z.tar.gz, permite instalar aunque uno no sea root (especicando el directorio); o ms cmodo, desde R, con las mismas funciones que antes

install.packages(), update.packages(),

etc., que tambin permite instalar no siendo root (especicar lib.loc).

Cambios en la consola de R
la consola de R, basta con seleccionar:

Si quisiramos cambiar la apariencia de

Editar-> Preferencias de la interfaz grfica (o Edit-> GUI preferences).

Cmo pedir ayuda?

R contiene una interfaz de ayuda muy til, basta

con seleccionar cualquiera de las siguientes opciones:

help(summary) ?summary help.search("median") # lista de funciones o paquetes donde aparece una palabra help.start() # abre la ayuda en html demo(graphics) # lista las demostraciones disponibles data() #relacin de todas las hojas de datos (data.frame) de todas las libreras disponibles data(package=car) #relacin de los data.frame de la librera ... data(car) #carga en la memoria en uso el objeto car ?summary ??summary find(lowesss) # indica qu paquete tiene la funcin lowess apropos(lm) # retorna los nombres de todos los objetos que coinciden con la lista de bsqueda que le slicitamos. example(lm) # nos da un ejemplo de cmo trabaja la funcin lm

21

vignette("sandwich") # descarga un pdf del paquete sandwich RSiteSearch("logistic residuals") # necesita acceso a internet

R como calculadora: aritmtica y funciones bsicas. Todas aquellas funciones que alguna vez necesitaste estn aqu. R puede operar sobre vectores enteros de un vez Regla del reciclado Operaciones de asignacin: <, >, <-, <=, $, @, [, [[, :, etc. Prueba con help(Syntax)). Operaciones aritmticas: +, -, *, /, ^, %%, %/% ,sqrt, log, log10, log2, log(x, base), exp, sin, cos, tan. Podemos consultarlas en help(Arithmetic). Otras operaciones con vectores: max, min, range, mean, var, sum, prod,
which.max, which.min, cumsum, cumprod, ...

Operaciones comparativas y lgicas: <, >, <=, >=, ==, = , , &, |, xor() y los parecidos &&, ||. Prueba con help(Comparison) y help(Logic). Generacion de secuencias regulares: seq, :, rep. Ejemplo:

x<-10*log(2) w<-rnorm(100)+10*log(2) mean(w) summary(w)

tipos de objetos: Vector coleccin ordenada de elementos del mismo tipo. Ejemplo:

R como lenguaje: objetos (Casi) todo en R es un objeto. Existen distintos

x<-c(1,2,3) #concatenacin "c" y<-c("a", "b", "c") z<-c(TRUE, TRUE, FALSE) is.vector(x); is.vector(y); is.vector(z) x[1] ; y[2]; z[3] # permite acceder a los elementos del vector (indexacin).

Matrices y Array: generalizacin multidimensional del vector. Elementos del mismo tipo. Varias columnas (o las) de vectores. Ejemplo:

is.array(x) a<-array(9,dim=c(5,4)); a; a[1,]; a[1drop=FALSE] b<-matrix(1:20,nrow=5); b; b[1,2]

22

Data frame: similar al array, pero con columnas de diferentes tipos. Ejemplo:

dates<-data.frame(ID=c("gen0","genB","genZ"),subj1=c(10,25,33),subj2=c(NA,34,15),oncogen=c(TRUE,TRU loc=c(1,30,125)) data(iris); iris # carga la hoja de datos "iris"

Factor: tipo de vector para datos cualitativos (o categricos). Ejemplo:

x<-factor(c(1,2,2,1,1,2,1,2,1))

List: vector generalizado. Sus componentes pueden ser tambin listas, o pueden ser de distinto tipo. No tienen estructura. Ejemplo:

una.lista<-c(un.vector=1:10,una.palabra="hola",una.matriz=matrix(rnorm(20),ncol=5),lista2=c(1=5, b=factor(c("a","b"))))

Funciones cdigo Ejemplo:

f1<-function(x) {return(2*x)} #crea una funcin que ha de devolver siempre el doble de aquel elemento que le demos. La funcin return nos devuelve el vector formado. f1(1:10) # llama a la funcin anterior, dndole un vector desde 1 a 10. is.function(f1) # pregunta lgica. funcion1<-function(A,B,C) {x1<-A*B/C; x1} #crea una funcin que aplica la relacin A*B/C y devuelve el objeto formado. args(funcion1) #argumentos de la funcin funcion1(1,2,3) #aplica la funcin creada con los argumentos A=1, B=2, C=3.

Control de ejecucin (condicionales, loops, etc.). Ejemplo:


f = factor(sample(letters[1:5], 10, replace=TRUE)) for( i in unique(f) ) print(i) x<-1:5; if(x==5) {x<-x+1} else {x<-x+2}; x x<-1:5; ifelse(x %% 2 == 1, "Odd", "Even") while(length(x)<=10) {x<-c(x,1)}

Control de errores: traceback, browser, debug Ejemplo:


foo <- function(x) { print(1); bar(2) } bar<-function(x){x+a.variable} foo(2) # da un error extrao traceback() #nos dice cul es el error

23

require(stats) centre <- function(x, type) { switch(type, mean = mean(x), median = median(x), trimmed = mean(x, trim = .1)) } x <- rcauchy(10); centre(x, "mean") debug(centre) centre(x, "mean") undebug(centre)

Control de la duracin de la operacin: Ejemplo:

unix.time(centre(rnorm(10),"mean")) #unix.time, Rprof require(stats) system.time(for(i in 1:100) mad(runif(1000)))

Atributos de los objetos Ejemplo:


x <- cbind(a=1:3, pi=pi) # matriz de 3x2 (filasxcolumnas)con nombres en las columnas (a y pi). attributes(x) #nos indica los atributos de x, nos dice que tiene dimensin 3x2, que no tiene nombres en las filas ($dimnames[[1]]) y que si tiene nombres en las columnas ($dimnames[[2]]). x<-1:15; y<-matrix(5,3,4); z<-c(TRUE, FALSE) attributes(x); attributes(y); attributes(z) w<-list(a=1:3,b=5); attributes(w) f1<-function(x) {return(2*x)} ; attributes(f1); is.function(f1)

Modo (mode): lgico, entero, real, carcter, etc.

Ejemplo:
x<-1:15; y<-matrix(5,3,4); z<-c(TRUE, FALSE) mode(x); mode(y); mode(z)

Tipo (typeof): double, character...

Ejemplo:
x1<-1:5, x2<-c(1,2,3,4,5); x3<-"patata" typeof(x1); typeof(x2); typeof(x3)

Nombres (names): etiquetas. #Poner un nombre en minscula no es lo mismo que ponerlo en mayscula (R es "case-sensitive": x!=X) #Hay nombres reservados, por lo que hay que evitarlos (ej: "function", "if").

Ejemplo:
z <- list(a=1, b="c", c=1:3) names(z)

24

Dimensiones (dim): nmero de las y columnas (puede ser cero) Ejemplo:

length(x) dim(y)

Nombres de las dimensiones de los arrays (dimnames) Ejemplo:

y<-matrix(5,3,4) dimnames(y)[[1]]<-c("8am","9am","10am") # [[1]] parafilas y [[2]] para columnas colnames(y)<-c("lunes", "martes", "mircoles", "jueves") # alternativa

Clase (class): lista de las clases del objeto (vector alfa-numrico) Ejemplo:

x <- 10 class(x) # "numeric"


Indexacin o referenciacin Para acceder a los elementos de un objeto podemos utilizar distintas funciones: [, [[, $, @. Ejemplo:

data(iris) iris iris[,1] # igual que iris[[1]] iris[1,] iris[2:4, ] iris[1, 1:2] iris$Sepal.Length # referencia a la columna "Sepal.Length" utilizando el formato dataframe$columna attach(iris); mean(Sepal.Length); detach(iris) # referencia a los nombres de las variables (columnas) mediante la funcin attach iris$Sepal.Length
Valores ausentes: NA (not available); NaN (not a number); Inf (innite).

Ejemplo:

x<-c(1:3,NA); is.na(x); which(is.na(x)) x[is.na(x)]<-0 #sustituir NA por 0 is.na(5/0) is.nan(0/0) is.infinite(-5/0) mean(x,na.rm=TRUE) #quitar NA al evaluar la media x<-c(1:3,NA); y<-na.omit(x); y #para funciones de modelado como lm es mejor usar "na.omit" o "na.exclude", que eliminan los NA

25

Ordenar vectores

Ejemplo:

x<-c(5,1,8,3) order(x); order(x,decreasing=TRUE) sort(x) rank(x) x[order(x)] x[order(x,decreasing=TRUE)]

Secuencias aleatorias Ejemplo: sample(5) sample(5,3) x<-1:10;sample(x); sample(x,replace=TRUE) probs<-x/sum(x); sample(x,prob=probs) Secuencias discretas y continuas Ejemplo: x<-c(1,2,3,4,5) x<-1:5 x<-seq(from=1,to=5,by=1) Secuencias con repeticiones Ejemplo:

rep(1,5) x<-1:4; rep(x,2) gl(3,5) #como rep(1:3, rep(5,3)) expand.grid(1:3,4:6,7:10)

Generacin de secuencias

Discretizar vectores o matrices

Ejemplo:

v<-1:9 cut1<-cut(v,3); cut1 # cut categoriza valores numricos cut2<-cut(v,quantile(v,c(0, 1/3, 2/3, 1)),include.lowest=TRUE); cut2 cut3<-cut(v,quantile(v,c(0, 1/3, 2/3, 1)),include.lowest=TRUE); cut3 g <- airquality$Month l <- split(airquality, f=g) # split divide los datos del vector x en grupos definidos por f l <- lapply(l, transform, Oz.Z = scale(Ozone)) aq2 <- unsplit(l, g) #unsplit revierte las operaciones de split head(aq2) x<-"Hola mundo" strsplit(x," ") #split los elementos del vector de caracteres x en subconjuntos segun split

26

Combinar vectores o matrices Ejemplo:


rbind(1:5,1:10) cbind(1:5,1:10) a<-matrix(rnorm(20),ncol=5) mediai<-media<-NULL; for(i in 1:4){mediai<-mean(a[i,]); media<-c(media,mediai)} # loop apply(a,1,mean,na.rm=TRUE) # aplica una funcin a filas, columnas o ambas. Hay que especificar el "margin" sapply(a,mean,na.rm=TRUE) # simplifica el resultado a un vector o una matriz lapply(a,mean,na.rm=TRUE) # devuelve una lista require(stats) tapply(PlantGrowth$weight, PlantGrowth$group, mean) aggregate(PlantGrowth$weight, list(PlantGrowth$group), mean) paste("Today is", date()) # concatenador de vectores luedo de convertirlos en caracteres paste("A", 1:6, sep = "") require(stats) formula(PlantGrowth) # indica la frmula de los datos levels(PlantGrowth$group) # indica los niveles del factor group pg <- unstack(PlantGrowth) # unstack segn la frmula de los datos pg stack(pg) # vuelve a unirlo stack(pg, select=-ctrl) # elimina el grupo control ctrl reshape melt cast erge, union y intersect

-Importar datos desde Excel La manera ms fcil de importar datos desde excel incluye varios pasos: 1) preparar los datos en Excel, 2) exportarlos en archivo ascii detilimatos por tabulacin, 3) cerrar excel y 4) leer los datos utilizando la funcin read.table en R. Con un archivo ascii delimitado por tabulacin, sin celdas en blanco ni espacios entre lo snombres, podemos importar los datos a R con la siguiente orden: Este comando lee los datos del archivo squid.txt y los guarda en el objeto Squid, manteniendo los nombres de las variables del archivo original. En el caso de que los decimales estn determinados por una coma, debemos especicarlo en R, ya que R lee los decimales con puntos. 27

1.4.4 Importar y exportar datos

Squid<-read.table(file="D:\\Carpeta de Trabajo\\squid.txt", header=TRUE)

funciones especcas para leer y escribir objetos xls.

Squid<-read.table(file="D:\\Carpeta de Trabajo\\squid.txt", header=TRUE, dec=",") Tambin existe un paquete (library(xlsReadWrite)) que permite utilizar

-Importar y exportar datos de R (formato .Rdata). Formato .RData (workspace de R):


save(__, __ , file="___.Rdata") save.image(file="___.RData") # guarda todo el directorio de trabajo load("__.RData")

Formato ASCCI. Archivos .r (archivo de sintaxis -rdenes o comandos de R-) Formato ASCCI. Archivos .txt (hojas de datos en formato texto)

dump("__", "__", "___.r", append=_T F_) source("__.r") # ejecuta las rdenes de R que estn en el archivo __.r

write.table(_data.frame_, "___.txt", sep="\t", quote=F) #el argumento sep nos permite especificar el tipo de tabulacin: "\t" para tabulacin, " " es el valor por defecto read.table("__.txt", header=T, , sep="\t")

Formato CSV. Archivos

read.csv(file, header = TRUE, sep = ",", quote="\"", dec=".", fill = TRUE, comment.char="", ...) # utilizar sep = "," para datos separados por coma y para datos separados por ; utilizar sep = ";" (o la funcin read.csv2).

Desde internet:

read.table(url("http://tinyurl.com/lzco8s"), row.names=1, dec=",")

Consideraciones sobre los datos

-Las tablas de datos debern tener siempre las variables en las columnas y las observaciones en las las. -Eliminar todos los espacios no necesarios. -Poner nombres cortos tanto en variables como en observaciones. En estas ltimas, todas debern ser del mismo tamao. -Eliminar todo smbolo intil (@, , \, #, &, %, $,. . . ) -Comprobar que no hay celdas vacas. Para asegurarnos eliminar todas las las y columnas sobrantes. Los datos que tienes en excel han de ser guardados en documentos de texto delimitados por tabulaciones. Y los huecos deben ser rellenados con NA (No Available) en maysculas. 28

Lo que sucede es que en ocasiones lo reconoce como una matriz en lugar de como un data frame, por lo que si lo detectas haciendo str(data), tienes que decirle al programa que se trata de un data frame para ello:

data01<-as.data.frame(data01) # se le dice que considere a data como un data.frame data01$var01<-as.factor(data01$var01) # estamos diciendo que considere la variable01 como un factor de la variable01.

-Importar datos desde otros programas estadsticos (e.g. Minitab, S-PLUS, SAS, SPSS, Stata, Systat, etc.) Tambin podemos escribir informacin en R que pueda ser leda por otros programas estadsticos: -Acceder a una base de datos library(RODBC) # el paquete utiliza Open DataBase Connectivity (ODBC) -Otras funciones de inters
library(foreign) ?read.ntp # ayuda para leer datos desde archivos Minitab

write.foreign(df, datafile, codefile, package = c("SPSS", "Stata", "SAS"), ...)

library(MASS) attach(bacteria) #vuelve accesible las variables del objeto bacteria fix(bacteria) # para editar este dataframe detach(bacteria) #vuelve inaccesible las variables del objeto bacteria, pero no borra el objeto. x<-matrix(1:10,5) edit(x) # para editar esta matriz objects() # para observar los objetos que hemos creado search() # para ver las libreras y dataframes que estn cargadas rm(x) #remueve el objeto x

1.5

Paquetes

vignette(all = FALSE) # nos da una lista de toda la informacin pdf disponible de los paquetes activados vignette(all = TRUE) # nos da una lista de toda la informacin pdf disponible de los paquetes instalados vignette("grid") # abre un archivo pdf de introduccin al paquete grid.

Como hemos mencionado anteriormente, R consta de un sistema base de paquetes y un conjunto adicional de paquetes que extienden su funcionalidad. Puedes acceder a ellos en la direccin: http://cran.es.r-project.org/ src/contrib/PACKAGES.html . Adems, puedes acceder a informacin sobre los paquetes utilizando la funcin vignette:

1.6

Citando R

citation() #Muestra los datos de R y como ste ha de ser citado. citation("pkgname") #Indica cmo se han de citar los paquetes empleados.

29

1.7

Michael J. Crawley. 2007. The R Book. John Wiley & Sons Ltd. Michael J. Crawley. 2005. Statistics: An Introduction using R. Wiley. ISBN 0 470 02297 3. John Verzani. 2005. Using R for Introductory Statistics. Chapman & Hall CRC, Boca Raton, FL, ISBN 1 584 88450 9. http://www.r-project.

Documentacin sobre R

org/doc/bib/R-books.html

Emmanuel Paradis. 2002. R for Beguinners.


org/doc/contrib/rdebuts_es.pdf

http://cran.r-project.

En espaol: R para Principiantes, la versin en espaol de R for Beginners, traducido por Jorge A. Ahumada (PDF). Versin en espaol de An Introduction to R por Andrs Gonzlez y Silvia Gonzlez (PDF). Estadstica Bsica con R y R-Commander. Libro libre ( http://knuth. uca.es/ebrcmdr). Introduccin a R y R-Commander. Curso libre ( http://knuth.uca.es/ moodle/course/view.php?id=51 ). Grcos Estadsticos con R por Juan Carlos Correa y Nel Gonzlez (PDF). Cartas sobre Estadstica de la Revista Argentina de Bioingeniera por Marcelo R. Risk (PDF). Introduccin al uso y programacin del sistema estadstico R por Ramn Daz-Uriarte, transparencias preparadas para un curso de 16 horas sobre R, dirigido principalmente a bilogos y especialistas en bioinformtica (PDF). Lista de correo R-help-es en espaol. Lista de correo ocial de R en espaol.
1.8

Vamos a trabajar con el ejemplo de Zuur et. al. (2009), que es una pequea tabla de datos (an no publicados, de Chris Elphick) que contienen medidas de cuerpo de 1100 del Gorrin de Cola Aguda ( Ammodramus caudacutus ). Se tienen medidas de tamao de cabeza (Head), largo de la pata (Tarsus), de las alas (Wingerd) y peso (Wt). Para este ejemplo solo utilizaremos los datos de ocho individuos. 30

Ejemplos

Ahora debemos combinar estos datos de las cuatro variables con la funcin de unin de columnas cbind: Tambin podramos haber utilizado la funcin data.frame: Dfrm <- data.frame(WC = Wingcrd, TS = Tarsus, HD = Head, W = Wt) Podemos consultar las caractersticas de la matriz formada:
dim(Z) names(Z) mean(Z[,3],na.rm=TRUE) summary(Z,na.rm=TRUE) Z <- cbind(Wingcrd, Tarsus, Head, Wt) Z

Wingcrd <- c(59, 55, 53.5, 55, 52.5, 57.5, 53, 55) Tarsus <- c(22.3, 19.7, 20.8, 20.3, 20.8, 21.5, 20.6, 21.5) Head <- c(31.2, 30.4, 30.6, 30.3, 30.3, 30.8, 32.5, NA) Wt <- c(9.5, 13.8, 14.8, 15.2, 15.5, 15.6, 15.6, 15.7) Observemos qu ocurre con el valor perdido ( NA): sum(Head) La opcin por defecto na.rm=FALSE causa un error en la suma de por ello, habr que permitir que existan valores NA. sum(Head, na.rm = TRUE)

Creamos cada variable en R mediante vectores con la concatenacin c:

los valores,

write.table(Z,file="Z2.txt", col.names=TRUE) #guarda la matriz Z en el archivo Z2.txr, en la ruta que tengamos asignada en R (sino agregar "C:\\ruta\\Z2.txt"). La opcin col.names indica si han de incluirse los nombres de las variables en la primer fila. write.tables(Dfrm, file="Dfrm.txt", col.names=TRUE) # guarda el dataframe Dfrm en el archivo Dfrm.txt.

Finalmente, vamos a guardar el objeto creado:

Ahora cerremos el programa e intentemos abrir los datos cerando un nuevo objeto. Para ello, seleccionamos el directorio de trabajo ( setwd()) y ejecutamos:
datosDfrm<-read.table("Dfrm.txt",head=TRUE) datosDfrm datosZ2<-read.table("Z2.txt",head=TRUE) datosZ2

Accederemos ahora a las variables que forman nuestro objeto 31

datosDfrm str(datosDfrm) datosDfrm$WC str(datosZ2) datosZ2$Wingcrd colnames(datosZ2) datosZ2[,3]

1.9

Ejercicios para resolver

1. Construye un vector de edades con los nmeros {1, 3, 5, 2, 11, 9, 3, 9, 12, 3} y un vector de pesos con {4.4, 5.3, 7.2, 5.2, 8.5, 7.3, 6, 10.4, 10.2, 6.1}. Consulta el largo de ambos vectores y, en caso de que sea posible, construye una matriz con los datos. Consulta los estadsticos de resumen de ambas variables. Guarda los datos en un archivo txt en la carpeta de trabajo y las rdenes con las que has trabajado. 2. Instala el paquete vegan, actvalo y solicita ayuda para conocerlo. Realiza un ejemplo de lo que el paquete permite. Observa los datos que contiene el paquete, crgalos y mira su encabezado. 3. Leer los datos Cuadro I.1.V.csv y seleccionar las variables de inters "Temperatura", "Conductividad", "pH", "Nitrato", "Nitrito", "Amonio", "Fosfato", "Silicato"; y las variables de identicacin "Laguna" y "Estacin". Luego construir un archivo solo con esta informacin. 4. *Cuando trabajamos con factores, a veces nos interesa conocer cuantos hay de cada clase o categora. La frecuencia de cada una de las categoras se puede obtener facilmente con la funcion table(). Crear un factor de 30 elementos con tres categoras (1, 2 y 3). Etiquetar las categoras como Castellon, Valencia y Alicante. Utilizar la funcion table() para comprobar que realmente hay 10 de cada categora. 5. *Utilizar el siguiente codigo para construir una matriz simetrica de numeros enteros: Am<-matrix(sample(1:10,100,re=T),10,10); Ad<-Am+t(Am) 6. *Con los siguientes numeros: 7.3, 6.8, 0.005, 9, 12, 2.4, 18.9, .9 a) Calcula la media. b) Calcula la raz cuadrada de los numeros. c) Obten los numeros que son mayores que su raz cuadrada. d) >Cuantos valores son mayores que 1? e) Obten la raz cuadrada de los numeros redondeados con dos cifras decimales. f ) >Cuanto dieren los numeros redondeados de los originales? 7. *Utiliza las funciones rep() y seq() para producir un vector que contenga: a) los valores: 1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4, b) los valores: 4, 4, 4, 4, 3, 3, 3, 3, 2, 2, 2, 2, 1, 1, 1, 1, c) los valores: 1, 2, 2, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 5. 8. *Uso de la funcion sample(). Obten una muestra de tamao 5 del un vector 1:20, con probabilidades proporcionales al valor del vector.

32

Вам также может понравиться