pisos <- dget(file="pisos.dge")
attach(pisos)
library(car)            #  para utilizar 'recode'.
library(gmodels)        #  para utilizar 'CrossTable'
library(MASS)           #  para utilizar stepAIC
#
#   Si no señalaban disponibilidad de garaje, es seguramente
#   porque no tenían.
#
Garaje[is.na(Garaje)] <- 0
pisos[,"Garaje"] <- Garaje
#
#   Categorización de altura de la vivienda
#
Planta <- recode(Planta,"c(0,1)='Baja' ; c(2,3,4)='Media' ; else='Alta'")
pisos[,"Planta"] <- ordered(Planta,levels=c("Baja","Media","Alta"))
CA <- as.character(CA)
CA[is.na(CA)] <- "No"
pisos[,"CA"] <- as.factor(CA)
AC <- as.character(AC)
AC[is.na(AC)] <- "No"
pisos[,"AC"] <- as.factor(AC)
rm(Planta,Garaje,AC,CA)
#
#  Nueva variable M2, aproximando los útiles a partir de los
#  construidos cuando los primeros no constan.
#
pisos$M2 <- ifelse(is.na(M2util),0.85*M2cons,M2util)
detach(pisos)
attach(pisos)
#
#   Desglose de la muestra
#
xtabs( ~ Planta + CP,data=pisos)
xtabs( ~ Antiguedad + CP,data=pisos)
xtabs( ~ Dormitorios + WC,data=pisos)
Tamaño <- cut(M2,breaks=c(0,55,75,90,110,Inf))
xtabs( ~ CP + Tamaño,data=pisos)
CrossTable(CP,Tamaño,prop.r=TRUE,prop.c=FALSE,
           prop.t=FALSE,prop.chisq=FALSE)
CrossTable(CP,Tamaño,prop.r=FALSE,prop.c=TRUE,
           prop.t=FALSE,prop.chisq=FALSE)
CrossTable(CP,Antiguedad,prop.r=TRUE,prop.c=FALSE,
           prop.t=FALSE,prop.chisq=FALSE)
CrossTable(CP,Antiguedad,prop.r=FALSE,prop.c=TRUE,
           prop.t=FALSE,prop.chisq=FALSE)
detach(pisos)
#
#   Superficie, precio total y precio/m2 por área
#
par(las=1)
boxplot(M2        ~ CP,ylab="m2",xlab="CP",main="Superficies unitarias por zona",
                    data=pisos)
boxplot(Precio    ~ CP,ylab="Euros",xlab="CP",main="Precios unitarios por zona",
                    log="y",subset=(TipoInmueble=="piso"),data=pisos)
boxplot(Precio/M2 ~ CP,ylab="Euros",xlab="CP",main="Precios/m2 por zona",
                    subset=(TipoInmueble=="piso"),data=pisos)
#
#   Superficie, precio total y precio/m2 por área
#
boxplot(M2        ~ CP,horizontal=TRUE,xlab="m2 construidos",
        main="Superficies unitarias por CP",data=pisos)
boxplot(Precio    ~ CP,horizontal=TRUE,xlab="Euros",
        main="Precio total",subset=(TipoInmueble=="piso"),data=pisos)
boxplot(Precio/M2 ~ CP,horizontal=TRUE,xlab="Euros",
        main="Precio por m2",subset=(TipoInmueble=="piso"),data=pisos)
#
#   ¿Parecen los pisos "altos" cotizarse más?
#
scratch <- xtabs(Precio ~ Planta + CP,data=pisos) / xtabs(M2 ~ Planta + CP,data=pisos)
barplot(scratch,beside=TRUE,main="Precios/M2 por altura y zona",
        xlab="CP",ylab="Euros",
        col=c("mistyrose","lavender","cornsilk"),
        legend=rownames(scratch))
#
#
#
coplot(log(Precio/M2)  ~ M2 | CP,data=pisos)
coplot(log(Precio/M2)  ~ M2 | Antiguedad,data=pisos)
#
#   Algunos modelos
#
mod1 <- lm(log(Precio/M2) ~ Planta + Dormitorios + M2 + AC + CA + Ascensor
           + WC + Antiguedad + Garaje + CP + Comunidad,data=pisos)
summary(mod1)
anova(mod1)
#
#   Mapa reproducido en el Apéndice
#

library(sp)
library(maptools)
#
#  Señalar las columnas de coordenadas
#
pisos <- as.data.frame(pisos)
pisos <- cbind(pisos,PrecioM2= pisos[,"Precio"] / pisos[,"M2cons"])
coordinates(pisos) <- ~ UTMX + UTMY 
fich <- "BilbaoDistritos.shp"             #  Señala camino completo si no está en
                                          #         tu carpeta de trabajo.
xx <- readShapePoly(fich)                 #  Lee el fichero de polígonos.
#
#   Representamos la variable "Precio"; igual podríamos hacer con
#   cualquier otra (numérica), residuos, etc.
#
fig <- spplot(pisos, c("PrecioM2") , col.regions=bpy.colors(10),
       sp.layout=list("sp.polygons",xx,col="black"),
       scales=list(draw=TRUE),
       xlim=c(500000,510000),
       ylim=c(4784500,4793500))
print(fig)

