You are on page 1of 51

Introduccin al uso de

en Estadstica descriptiva y Geoestadstica

Teresa Boca

INTA-FAUBA
2010

Teresa Boca INTA-FAUBA 2010 1


Tema

Teresa Boca
2
INTA-FAUBA 2010
Los beneficios de utilizar R

R se utiliza como un lenguaje de programacin que permite saber que se hace


en cada paso.
Los anlisis que se pueden realizar con R son igualmente de potentes al de
cualquier programa comercial.
Presenta un entorno grfico e alta calidad y capacidad.
Es un programa libre, su par comercial es S-Plus.
El lenguaje de programacin es sencillo.
Tiene la capacidad de combinar, anlisis "empaquetados" (ej., una regresin
logstica) con anlisis especficos para cada situacin.
Tambin tiene la capacidad de manipular y modificar datos y funciones.
Extensiones especficas a reas nuevas (bioinformtica, geoestadstica,
modelos grficos).
Un medio de transferencia de tecnologa/conocimiento

Teresa Boca
3
INTA-FAUBA 2010
Obtencin de R

El sitio web se encuentra en la direccin: http://www.r-project.org/.

Seleccionar el
CRAN

Teresa Boca
4
INTA-FAUBA 2010
Obtencin de R

Teresa Boca
5
INTA-FAUBA 2010
Obtencin de R

Seleccionar el
sistema
operativo

Teresa Boca
6
INTA-FAUBA 2010
Obtencin de R

Hacer click en
base
Obtencin de R

Hacer click
Obtencin de Tinn R, editor de R

TinnR acrnimo de 'This is not Notepad'.

Se trata de un editor de cdigo abierto y libre.

Tiene caractersticas interesantes y est especialmente orientado a R, pero que


se puede utilizar tambin con otros lenguajes de programacin populares.

Tinn-R es un editor para escribir programas en R. No es imprescindible, se


pueden escribir como scripts en el editor que proporciona el propio compilador de
R. Tinn-R facilita notablemente esta tarea.

Una de las caractersticas principales de Tinn-R es el resaltado de sintaxis, que


permite una mayor claridad al escribir cdigo.

Por ejemplo, los fragmentos comentados (#) se muestran en color verde y en


cursiva; las palabras reservadas (funciones y parmetros de R, por ejemplo) se
muestran en rojo, azul y fucsia, dependiendo de su tipo; mientras que los valores
numricos y las variables creadas por el usuario se muestran en negro.

Teresa Boca
9
INTA-FAUBA 2010
Obtencin de Tinn R, editor de R

Iconos para Desde ac se


ejecutar las abre la
sentencias consola de R

http://sourceforge.net/projects/tinn-r/
Teresa Boca
10
INTA-FAUBA 2010
Caractersticas bsicas

Lenguaje R

R es un lenguaje orientado a objetos, que tienen ciertas caractersticas y


atributos.

Cada comando reconoce estos atributos y acta de diferente forma en funcin


de ellos.

No es necesario predefinir el modo de un objeto, R lo establece de acuerdo con


la asignacin que hagamos.

Para asignar el valor 2.3 al objeto x, debemos teclear x <- 2.3.

Si ahora usamos mode(x), R nos dir que x es numeric porque es un nmero.


Sin embargo, si escribimos x <- silla, entonces mode(x) devuelve un carcter
(carcter).

Una lista de todos los objetos que se encuentran en la memoria de trabajo se


obtiene mediante el comando ls().

Si se teclea el nombre de un objeto se puede ver su contenido.

Teresa Boca
11
INTA-FAUBA 2010
Caractersticas bsicas

Obtencin de ayuda en R

Algunas posibilidades en R para obtener ayuda son:

Tecleando help(nombre de comando) se abre una ventana con


informacin sobre un comando especifico. Pruebe, por ejemplo tipiar el
siguiente comando: help(mean).

Otro comando muy til es help.search (palabra clave). En este caso


obtenemos una lista de los comandos relacionados con palabra clave. Por
ejemplo, teclea help.search(median) y obtendrs una lista de comandos
de R relacionados con la mediana.

Finalmente, una forma de obtener ayuda en formato html consiste en


teclear: help.start().

Para conocer como funciona cualquier funcin de R, tipee en la consola


principal el signo ? y el nombre de la funcin. Por ejemplo ? plot( ) nos
mostrar como funciona la funcin plot.

Teresa Boca
12
INTA-FAUBA 2010
Caractersticas bsicas

Tipos de datos

R trabaja con objetos los cuales tienen nombre, contenido y atributos.

El atributo especifica el tipo de datos representados por el objeto. consideremos


una variable que toma los valores 1, 2, o 3, tal variable podra ser un nmero
entero, o el cdigo de una variable categrica. Los resultados de un anlisis
estadstico de esta variable no ser el mismo en ambos casos.

Todo objeto tiene dos atributos intrnsecos: tipo y longitud.

El tipo se refiere a la clase de los elementos en el objeto; numrico, carcter,


complejo, y lgico (FALSE [Falso] or TRUE [Verdadero]).

La longitud es simplemente el nmero de elementos en el objeto.

Las funciones mode( ) y length( ), reportan el tipo y longitud del objeto.

Teresa Boca
13
INTA-FAUBA 2010
Caractersticas bsicas

varios
objeto tipo Descripcin tipos de
datos?
numrico, alfabtico, una variable en el significado
vector No
complejo o lgico comnmente asumido
factor numrico o
factor una variable categrica. No
alfabtico
numrico, alfabtico
arreglo (array) una tabla de dimensin k. No
complejo o lgico
numrico, alfabtico, un caso particular de un arreglo
matriz (matrix) No
complejo o lgico donde k = 2.
un (marco o base de datos) es una
tabla compuesta de uno o ms
numrico, alfabtico,
data.frame vectores y/o factores de la misma Si
complejo o lgico
longitud pero que pueden ser de
diferentes tipos

una serie temporal y como tal


numrico, alfabtico,
ts contiene atributos adicionales tales Si
complejo o lgico
como frecuencia y fechas.
numrico, alfabtico puede contener cualquier tipo de
lista (list) Si
complejo, lgico
Teresa Boca objeto incluyendo otras listas!
14
INTA-FAUBA 2010
Caractersticas bsicas

Vectores y matrices

Si queremos, el objeto x se el vector (2, 1, 3.6, 5), debemos usar el comando c (que
alude a concatenar)

x <- c(2,1,3.6,5).

Una sucesin regular de nmeros se puede obtener de la siguiente forma:

x <- 1:10

x
1 2 3 4 5 6 7 8 9 10

En el comando seq el primer argumento indica el punto inicial de la sucesin, el


segundo el punto final, y el tercero el incremento.

Es muy fcil generar con R sucesiones de nmeros aleatorios. El programa utiliza


funciones de la forma rdistribucion(n,lista de argumentos) para generar n
observaciones de una larga lista de distribuciones.

Teresa Boca
15
INTA-FAUBA 2010
Caractersticas bsicas

Para R, una matriz no es ms que un vector con un atributo adicional que


contiene el nmero de filas y columnas.

Por lo tanto una matriz se puede crear a partir de un vector, aadiendo


informacin sobre el nmero de filas y columnas de la matriz.

Por ejemplo, el siguiente comando puede utilizarse para generar aleatoriamente


1000 datos con distribucin normal estndar que, a su vez, forman una matriz x
con dimensin 10 100:

x <- matrix(rnorm(1000),nrow=10,ncol=100)

Si creamos una matriz x y queremos extraer alguno de sus elementos, podemos


usar x[i,j], donde (i, j) son la fila y la columna del elemento.

Para extraer la tercera fila de la matriz y guardarla en el vector y se escribe


y <- x[3,], es decir si no especificamos la columna, R entiende que queremos
todas las columnas.

Teresa Boca
16
INTA-FAUBA 2010
Caractersticas bsicas

Listas

Las listas son conjuntos heterogneos de objetos, a los que por alguna razn
conviene tener juntos y darles un nombre.

Las salidas de muchas funciones que llevan a cabo procedimientos estadsticos


son listas, ya que incluyen resultados numricos, grficos, etc.

Para crear una lista llamada resultados que contenga los objetos x1, x2,...
basta utilizar

resultados <- list(x1,x2,...)

Teresa Boca
17
INTA-FAUBA 2010
Caractersticas bsicas

Ficheros de datos (Data Frame)

Para leer un fichero de texto fichero.txt en el que se encuentran los datos con los
que queremos trabajar se usa el comando

datos <- read.table(c:\\camino\\fichero.txt,header=T)

Este comando genera un fichero de datos (un objeto del tipo data frame) con el
nombre elegido.
Las barras del camino deben de ser dobles. El argumento header se utiliza para
indicar si la primera fila contiene (T) o no (F) los nombres de las variables.

Por ejemplo,tenemoe un archivo en nuestra PC: paises.txt. Supongamos que el


fichero lo tenemos en la carpeta datos en el disco c:.

Entonces, para leer el fichero y almacenarlo en un data.frame que tambin


llamamos pases, usamos

paises <- read.table(c:\\datos\\paises.txt,header=T)

Teresa Boca
18
INTA-FAUBA 2010
Caractersticas bsicas

Funciones Matemticas

log(x): logaritmo de base e de x


exp(x) : antilogaritmo de x de base e
log(x,n): logaritmo de base n de x
log10(x): logaritmo de base 10 de x
sqrt(x): raiz cuadrada de x
factorial(x): igual a x!
round(x, digits=0): redondea el valor de x a un entero
signif(x, digits=6): igual a x con 6 dgitos en notaciones cientfica
runif(n): genera n nmeros aleatorios entre 0 y 1 para una distribucin
uniforme
cos(x): coseno de x
sin(x): seno de x
abs(x): valor absoluto de x

Teresa Boca
19
INTA-FAUBA 2010
Utilizacin del paquete Rcmdr

R Packages Rcmdr

Consiste de una barra men, una barra de herramientas, una ventana log/script
y una ventana de salida.

Teresa Boca
20
INTA-FAUBA 2010
Anlisis descriptivo de datos espaciales

Los datos espaciales consisten en medidas u observaciones tomadas en


localizaciones o regiones especficas.

El anlisis de datos espaciales se distingue del anlisis de datos tpico, por la


inclusin de la informacin espacial en modelos y predicciones. Las localizaciones
pueden ser puntos o regiones referenciadas, las mismas pueden caer en una grilla
regularmente espaciada, o pueden ser irregulares con distancias que varan entre
los puntos.

El anlisis exploratorio de datos espaciales (ADE) tiende a identificar:

Presencia de dependencia espacial


Existencia de datos fuera de tipo
Asimetras, necesidades de transformacin.
Tendencias en funcin de las coordenadas o covarianzas.
Teresa Boca
21
INTA-FAUBA 2010
Visualizacin de datos geostadsticos

Los principales tipos de tcnicas de ADE se basan en

Estadstica descriptiva

Medidas de posicin: Mnimo, Mximo, media, cuantiles


Medidas de dispersin: Varianza y desvo estndar
Medidas de Distribucin de variable: Coeficiente de asimetra, curtosis,
coeficiente de variacin
Para datos multivaridos: Correlacin entre variables.

Diagramas y grficos

Histogramas
QQPlot y PPPlot
Grficos de dispersin (Scatter plot)
H-Grfico de dispersin
Teresa Boca
22
INTA-FAUBA 2010
Anlisis descriptivo de datos espaciales

akima: Interpolacin de datos irregularmente espaciados.

geoR: Funciones para anlisis de datos geoestadsticos

gstat: Modelamiento geoestadstico, prediccin y simulacin

lattice: Grficos lattices

moments: Momentos, asimetra, kurtosis y pruebas relacionadas

spatial: Funciones para kriging y datos de patrones puntuales

scatterplot3d: Grficos en R3

nortest: diferentes pruebas de hiptesis para la verificacin del supuesto de

normalidad

Teresa Boca
23
INTA-FAUBA 2010
Anlisis descriptivo de datos espaciales

Para desarrollar este ejemplo se utilizar el conjunto de datos aquifer, este

contiene alturas de la cabeza piezomtrica (en pies sobre el nivel del mar)

para el Acufero de Wolfcamp al oriente de Texas [(Cressie, 1989, pg.

212)].

En donde las columnas easting y northing de la hoja de datos son las

localizaciones de los puntos donde se midieron las alturas que

corresponden con la columna head.

Similar al geodata wolfcamp

Teresa Boca
24
INTA-FAUBA 2010
Iniciando la seccin en R, paquetes necesarios

Para instalar las libreras, podemos usar el comando:

install.packages(nombre_paquete, dependencies = TRUE)

install.packages("akima", dependencies = TRUE)


..
..

Para cargar las libreras y que estn disponibles para nuestro anlisis se utiliza el
comando library (nombre_del_paquete) .

library(akima);library(geoR);library(gstat);library(lattice)
library(moments);library(spatial);library(scatterplot3d);
library(nortest); library(Rcmdr)

Teresa Boca
25
INTA-FAUBA 2010
Leyendo los datos

aquifer <- read.table("http://www.teresaboca.com/aquifer.txt",


header=TRUE, sep="", na.strings="NA", dec=".", strip.white=TRUE)

header=TRUE el archivo tiene una fila con los nombres de las variables.
sep= indica como estn separados los datos (en este caso por espacios),
na.strings= determina que valor se le asigna a los datos faltantes,
dec= determina cual es el separador decimal y
strip.white = permite el despojo de los espacios en blanco previos y
posteriores en los campos de texto.

str(aquifer)

'data.frame': 85 obs. of 3 variables:


$ easting : num 42.78 -27.4 -1.16 -18.62 96.47 ...
$ northing: num 127.6 90.8 84.9 76.5 64.6 ...
$ head : int 1464 2553 2158 2455 1756 1702 1805 1797 1714 1466 ...

Teresa Boca
26
INTA-FAUBA 2010
Resumen de estadsticas descriptivas

numSummary(aquifer,statistics=c("mean", "sd", "quantiles"),


quantiles=c(0,.25,.5,.75,1))

numSummary(aquifer,statistics=c("mean", "sd", "quantiles"), quantiles=c(0,.25,.5,.75,1))


mean sd 0% 25% 50% 75%
easting 16.8852 64.93981 -145.23654 -21.29791 11.65754 70.90225
northing 79.3611 54.91303 9.41441 33.68207 59.15785 131.82542
head 2002.2824 611.34009 1024.00000 1548.00000 1797.00000 2540.00000

100% n
easting 112.8045 85
northing 184.7664 85
head 3571.0000 85

Teresa Boca
27
INTA-FAUBA 2010
Resumen de estadsticas descriptivas

summary(aquifer)

summary(aquifer)
easting northing head
Min. :-145.24 Min. : 9.414 Min. :1024
1st Qu.: -21.30 1st Qu.: 33.682 1st Qu.:1548
Median : 11.66 Median : 59.158 Median :1797
Mean : 16.89 Mean : 79.361 Mean :2002
3rd Qu.: 70.90 3rd Qu.:131.825 3rd Qu.:2540
Max. : 112.80 Max. :184.766 Max. :3571

Teresa Boca
28
INTA-FAUBA 2010
Resumen de estadsticas descriptivas

resumen pero solo para las alturas de la cabeza piezomtrica del acufero.

numSummary(aquifer[,"easting"],statistics=c("mean", "sd",
"quantiles"), quantiles=c(0,.25,.5,.75,1))

mean sd 0% 25% 50% 75% 100% n


16.8852 64.93981 -145.2365 -21.29791 11.65754 70.90225 112.8045 85

summary(aquifer$easting)

Min. 1st Qu. Median Mean 3rd Qu. Max.


-145.20 -21.30 11.66 16.89 70.90 112.80

Teresa Boca
29
INTA-FAUBA 2010
Resumen de estadsticas descriptivas

En el paquete moments, existe una funcin que nos permite obtener los
momentos deseados solo poniendo el orden requerido

all.moments( aquifer$head, order.max=4 )

[1] 1.000000e+00

2.002282e+03

4.378474e+06

1.035859e+10

2.620486e+13

# orden cero, media, varianza, simetra, curtosis

Teresa Boca
30
INTA-FAUBA 2010
Resumen de estadsticas descriptivas

resumen de medidas descriptivas para las alturas de la cabeza


piezomtrica del Acufero que incluyan los valores percentiles.

numSummary(aquifer, statistics=c("mean", "sd", "quantiles"),


quantiles=c(0,.1,.2,.3,.4,.5,.6,.7,.8,.9,1))

mean sd 0% 10% 20% 30%


easting 16.8852 64.93981 -145.23654 -85.09098 -24.46652 -18.52148
northing 79.3611 54.91303 9.41441 21.04251 30.12717 35.22972
head 2002.2824 611.34009 1024.00000 1344.80000 1458.60000 1616.40000

40% 50% 60% 70% 80% 90%


easting -5.615722 11.65754 56.44995 66.26994 80.23743 95.14837
northing 43.014814 59.15785 81.62821 109.87251 139.37300 167.88272
head 1727.400000 1797.00000 2134.00000 2450.40000 2563.00000
2733.20000
100% n

Teresa Boca
31
INTA-FAUBA 2010
Grficos descriptivos

La funcin ms elemental para obtener grficos es plot()

?plot()

Description
Generic function for plotting of R objects. For more details about the graphical
parameter arguments, see par.

Usage
plot(x, y, ...)
Arguments
x: the coordinates of points in the plot. Alternatively, a single plotting structure,
function or any R object with a plot method can be provided.
y: the y coordinates of points in the plot, optional if x is an appropriate structure.
... Arguments to be passed to methods, such as graphical parameters (see
par). Many methods will accept the following arguments:
type
what type of plot should be drawn. Possible types are
"p" for points,
"l" for lines,
.

Teresa Boca
32
Comportamiento de la variable observada en funcin de las
coordenadas

par(mfrow=c(1,2))
plot(aquifer$easting, aquifer$head, ylab="cabezas piezomtricas",
xlab="latitud")
plot(aquifer$northing, aquifer$head, ylab="cabezas piezomtricas",
xlab="longitud")
par(mfrow=c(1,1))

Teresa Boca
33
INTA-FAUBA 2010
Histogramas

Hist(aquifer$head, scale="frequency", breaks="Sturges", col="darkgray")

Teresa Boca
34
INTA-FAUBA 2010
Box Plot

boxplot(aquifer$head, ylab="head")

Teresa Boca
35
INTA-FAUBA 2010
h Scatter-plot

un diagrama de dispersin h, que es la grfica sobre un par de ejes


cartesianos de todos los pares de mediciones (z(xi ), z(xi +h)) de el mismo
atributo z en sitios separados por una distancia |h| y en una direccin
particular.

Teresa Boca
36
INTA-FAUBA 2010
h Scatter-plot

aquifer_sp<-SpatialPoints(aquifer)
hscat((head)~1 ,aquifer_sp, c(10, 20, 100, 120,180))

Teresa Boca
37
INTA-FAUBA 2010
Evaluacin de normalidad

Para evaluar la normalidad de los datos existen mtodos analticos (Pruebas


de Anderson-Darling y el de Lilliefors).
Y mtodos grficos: qqplot,

ad.test(aquifer$head)

Anderson-Darling normality test

data: aquifer$head
A = 1.6652, p-value = 0.0002620

lillie.test(aquifer$head)

Lilliefors (Kolmogorov-Smirnov) normality test

data: aquifer$head
D = 0.1553, p-value = 2.784e-05

Teresa Boca
38
INTA-FAUBA 2010
Evaluacin de normalidad

El grfico QQ plot, compara los cuantiles de los datos muestrales y los con
los cuantiles de la distribucin normal terica con parmetros dados por la
media y desviacin estndar muestral.

qq.plot(aquifer$head, dist= "norm", labels=FALSE)

Teresa Boca
39
INTA-FAUBA 2010
Transformaciones

Transformacin de Box-Cox:
Para respuestas y positivas, Box y Cox (1964) propusieron la familia de
transformaciones de potencias con un parmetro desconocido > 0, tal
que:

y 1
0 y0
t
ln y 0

se estima de manera que la variable transformada cumpla


adecuadamente con los supuestos, maximizando la funcin de
verosimilitud L().
Transformaciones

library(MASS); library(TeachingDemos)
boxcox((aquifer$head)~1, lam=seq(-1,1,l=21), plotit=TRUE)
Transformaciones

aquifer$head_box<-bct(aquifer$head,0.125)
par(mfrow=c(2,2))
qqnorm(aquifer$head); qqnorm(aquifer$head_box)
hist(aquifer$head); hist(aquifer$head_box)
par(mfrow=c(1,1))
shapiro.test(aquifer$head)
shapiro.test(aquifer$head_box)

Shapiro-Wilk normality test

data: aquifer$head
W = 0.947, p-value = 0.001586

data: aquifer$head_box
W = 0.9674, p-value = 0.03023
Diagramas de dispersin de los datos

Ubicacin los puntos muestrales en las localizaciones donde se realizaron las


mediciones.
plot(x=aquifer$easting, y=aquifer$northing)
Diagramas de dispersin de los datos

Si queremos ver la distribucin de los datos de acuerdo a las clases definidas

head.groups<-cut(aquifer$head_, breaks = 5 ,labels = FALSE)


plot(x=aquifer$easting, y=aquifer$northing, type="n")
text(aquifer$easting,aquifer$northing,labels=head.groups,cex=1)

El parmetro
type=n en la funcin plot slo
dibuja los ejes con los valores de las
coordenadas easting y northing.
text ubica cada uno de los labels de
las clases generadas con la funcin
cut.
cex=1 define el tamao del label
dentro del grfico.
Grficos con datos geoespaciales

Para que R entienda y trate los datos como geoespaciales debe indicrsele
mediante el comando as.geodata del paquete geoR.
aquifer1= as.geodata(aquifer,coords.col=1:2,data.col=3)

El parmetro coords.col=1:2 especfica las columnas de la hoja de datos donde se


encuentran las coordenadas de los puntos muestreados y data.col=3 indica la
columna donde estn las mediciones del (de los) atributos de inters medidos en
dichas localizaciones.

points(aquifer1)

points(x, coords=x$coords,
data=x$data, data.col = 1, borders,
pt.divide=c("data.proportional","rank
.proportional", "quintiles",
"quartiles", "deciles", "equal"),
lambda = 1, trend = "cte)
Grficos con datos geoespaciales

points(aquifer1, pt.div="equal")
points(aquifer1, cex.min=.6, cex.max=.6)
points(aquifer1, cex.min=.3, cex.max=3)
Grficos con datos geoespaciales

plot(aquifer1)

Genera cuatro grficos, tres de dispersin y el histograma de las alturas de la


cabeza piezomtrica del acufero de Wolfcamp.
Grficos con contornos

int.aq=interp(x=aquifer$easting,y=aquifer$northing,z=aquifer$head)
contour(int.aq)
points(aquifer$easting,aquifer$northing)
Grficos de interpolacin

levelplot(int.aq$z)
image(int.aq)
Grficos de interpolacin

persp(int.aq$x,int.aq$y,int.aq$z,xlab="easting",ylab="northing",zl
ab="head",phi=30,theta=20,col="lightblue",expand=.5,
ticktype="detailed")
Grficos en 3 dimensiones

cloud(aquifer$head~aquifer$easting*aquifer$northing)