Archive for May, 2010

Lorenz curves and Gini index

Wednesday, May 26th, 2010

La Lorenz curve y el Gini Index se usan mucho como indicadores de la concentración de la riqueza (miden el grado de concentración de la renta en un país). En la literatura pesquera ha sido utilizada unas pocas veces para ilustrar la concentración de la abundancia. Nosotros queremos utilizarlos para analizar la concentración del esfuerzo de pesca, lo que en principio no se ha hecho antes.

#PARA HACER CURVAS DE LORENZ E INDICES GINI:
#1. Hace falta tener cargado el package "ineq"
library(ineq)
Lorenz <- read.table(file = "C:\\R.gps\\Lorenz.txt",header = TRUE)
names(Lorenz)
summary(Lorenz)
 
#Loop que hizo Inés para hacer las curvas y estimar los indices de las 31 patches de erizo
#y guardar los primeros en un pdf (sin el loop tendría que hacer un código para cada uno de los 31 patches):
giniIndex <- NULL
pdf("GraficosLorentz.pdf", width=11.69, height=8.26)
op <- par(mfrow=c(3,7))
for(i in 1:31){
Mtemp <-  subset(Lorenz,Mancha==as.character(i), select=4)#Columna4=n.celda
plot(Lc(Mtemp[,1]), main=paste("Mancha", i, sep=" "))
giniIndex[i] <- ineq(Mtemp[,1])
}
par(op)
dev.off()
 
#Para guardar los índices:
write(giniIndex,file="clipboard",ncolumns=1)
#o
write.csv(giniIndex,file="ginis.csv")
#Resultó mejor la 2º pq da los datos en una unica columna con el nº 
#de patch asociado
 
##FIGURA DE LOS 3 PATCHES MÁS VISITADOS (7,15Y22):
 
M7<-subset(Lorenz,Mancha=="7")
M15<-subset(Lorenz,Mancha=="15")
M22<-subset(Lorenz,Mancha=="22")
Lc.7<-Lc(M7$n.celda)
Lc.15<-Lc(M15$n.celda)
Lc.22<-Lc(M22$n.celda)
plot(Lc.7,ylab="",xlab="",main="")
lines(Lc.15,lty="dashed")
lines(Lc.22,lty="dotted")

Predictions and/or confidence (or prediction) intervals on predictions

Tuesday, May 25th, 2010

Los intervalos de confianza de la funcion predict nos han dado muchos quebraderos de cabeza!
El codigo calcula los intervalos de confianza de los fitted values de los predict !!

library(nlme) 
fm1 <- lme(distance ~ age*Sex, random = ~ 1 + age | Subject, data = Orthodont) 
 
plot(Orthodont)
newdat <- expand.grid(age=c(8,10,12,14), Sex=c("Male","Female")) 
 
newdat$pred <- predict(fm1, newdat, level = 0)
 
Designmat <- model.matrix(eval(eval(fm1$call$fixed)[-2]), newdat[-3]) 
predvar <- diag(Designmat %*% fm1$varFix %*% t(Designmat)) 
newdat$SE <- sqrt(predvar) 
 
newdat$SE2 <- sqrt(predvar+fm1$sigma^2)
 
library(ggplot2) 
pd <- position_dodge(width=0.4) 
ggplot(newdat,aes(x=age,y=pred,colour=Sex))+ 
   geom_point(position=pd)+ 
  geom_linerange(aes(ymin=pred-2*SE,ymax=pred+2*SE), position=pd)
 
 
## prediction intervals 
ggplot(newdat,aes(x=age,y=pred,colour=Sex))+ 
   geom_point(position=pd)+ 
   geom_linerange(aes(ymin=pred-2*SE2,ymax=pred+2*SE2), position=pd)

Fuente: Wikidot

Plots de Linea de Costa

Friday, May 14th, 2010

Hay webs como http://rimmer.ngdc.noaa.gov/ que nos permiten extraer los datos de lat y long de la linea de costa de todo el mundo a escala 1:250000. Pudiendo seleccionar con zoom aquella que queremos con exactitud (para evitar archivos con muchos datos y dificiles de manejar). Se selecciona en formato Splus y nos da un archivo .dat que abrimos y guardamos en formato .txt.

Galicia<- read.table("Galicia.txt")
names(Galicia) <- c("Longitud","Latitud")
# Usando plot() la costa sale desproporcionada
plot(Galicia$Long, Galicia$Lat, type="l", xlab="Longitud",ylab="Latitud")
title(main="Galicia")
# Usar mejor "eqscplot()"
eqscplot(Galicia$Long,Galicia$Lat,type="l",xlab="Longitud",ylab="Latitud",tol=-0.10)
#tol premite ajustar los margenes para encajar el mapa
title(main="Galicia")

*Es necesario instalar y cargar el paquete MASS

DatosCoordenadas Galicia