Tasacion <- function(Directorio){
#Carga todas las funciones
sapply(list.files(pattern="[.]R$", path="R/", full.names=TRUE), source)
ListaDeDatos <- LeerArchivos(Directorio)
TipologiaEstimacion <- ListaDeDatos$Estimacion[,"Tipologia"]
Variables <- SeleccionarVariables(ListaDeDatos$Muestra, TipologiaEstimacion)
VariablesCaso <- SeleccionarVariables(ListaDeDatos$Estimacion, TipologiaEstimacion)
#Datos Auxiliares
OtrasVariablesCaso <- SeleccionarOtrasVariables(ListaDeDatos$Estimacion)
OtrasVariables <- SeleccionarOtrasVariables(ListaDeDatos$Muestra)
#Hay que poner este valor si es 1, 2 รณ 7
ElementosConValor7 <- sum(OtrasVariables[,"DatosDeLaPlanta"] == 7)
DatosASumar <- OtrasVariables[,"DatosDeLaPlanta"] == 7
TotalDePlantaParaElementosConValor7 <- sum(OtrasVariables[DatosASumar,"NumeroDePlanta"])
OtrasVariablesCaso[is.na(OtrasVariablesCaso[,"NumeroDePlanta"]), "NumeroDePlanta"] <- TotalDePlantaParaElementosConValor7/ElementosConValor7
if(OtrasVariablesCaso[,"DatosDeLaPlanta"] == 0) OtrasVariablesCaso[,"DatosDeLaPlanta"] <- 5
VariablesMuestraTransformadas <- TransformarVariables(Variables)
VariablesCasoTransformadas <- TransformarCaso(VariablesCaso, VariablesMuestraTransformadas)
Coeficientes <- ObtieneDatosDelModelo(ListaDeDatos$Parametros, TipologiaEstimacion)
Rangos <- ObtieneRangosDelModelo_aj(VariablesMuestraTransformadas, VariablesCasoTransformadas)
DatoCoeficiente <- ObtieneCoeficienteDelModelo_aj(VariablesCasoTransformadas, Rangos, Coeficientes)
#Distancia
MatrizDatosCaso <- VariablesCasoTransformadas[rep(row.names(VariablesCasoTransformadas), nrow(Variables)), 1:6]
MatrizRangos <- Rangos[rep(row.names(Rangos), nrow(Variables)), 1:6]
MatrizCoeficientes <- Coeficientes[rep(row.names(Coeficientes), nrow(Variables)), 1:6]
if (TipologiaEstimacion==1){
Matriz_b <- subset(ListaDeDatos$Parametros, Tipologia=="Unifamiliar" & Tipo=="b", select = c(4:9))
} else {
Matriz_b <- subset(ListaDeDatos$Parametros, Tipologia=="Plurifamiliar" & Tipo=="b", select = c(4:9))
}
Matriz_b <- Matriz_b[rep(row.names(Matriz_b), nrow(Variables)), 1:6]
Distancia <- as.matrix(rowSums(((VariablesMuestraTransformadas[,2:6] - MatrizDatosCaso[,2:6])/MatrizRangos[,2:6])^2 * MatrizCoeficientes[,1:5]),na.rm = TRUE)
colnames(Distancia) <- "Distancia"
Ly_Transformada <- as.matrix(VariablesMuestraTransformadas[,"ValorUnitarioDeMercado"] + rowSums((MatrizDatosCaso[,2:6] - VariablesMuestraTransformadas[,2:6])*Matriz_b[,1:5]),na.rm = TRUE)
colnames(Ly_Transformada) <- "Ly_Transformada"
jerarquia <- as.matrix(order(Distancia))
DistanciaOrdenada <- as.matrix(Distancia[order(Distancia)])
rownames(DistanciaOrdenada) <- jerarquia
p_original <- as.matrix(abs(log(Distancia))/log(1/DatoCoeficiente))
colnames(p_original) <- "p_original"
Tipologia <- as.matrix(ListaDeDatos$Muestra[,"Tipologia"])
colnames(Tipologia) <- "Tipologia"
VariablesMuestraTransformadas <- cbind(VariablesMuestraTransformadas, Distancia, Ly_Transformada, p_original, Tipologia)
MuestraOrdenada <- head(VariablesMuestraTransformadas[order(VariablesMuestraTransformadas[,"Distancia"]),], 30)
Total_p_original <- sum(MuestraOrdenada[,"p_original"])
Pesos <- as.matrix(MuestraOrdenada[,"p_original"]*30/Total_p_original)
colnames(Pesos) <- "Pesos"
MuestraOrdenada <- cbind(MuestraOrdenada, Pesos)
OtrasVariablesCaso <- ObtieneOtrasVariables(OtrasVariablesCaso)
OtrasVariables <- ObtieneOtrasVariables(OtrasVariables)
CorreccionOtrasVariables <- CorreccionPorOtrasVariables(OtrasVariables, OtrasVariablesCaso, ListaDeDatos$Parametros)
Correccion <- CorreccionOtrasVariables[rownames(MuestraOrdenada)]
if (TipologiaEstimacion==1){
wCorregido <- MuestraOrdenada[,"Ly_Transformada"]
} else {
wCorregido <- log(Correccion*exp(MuestraOrdenada[,"Ly_Transformada"]))
}
PesosXwCorregido <- MuestraOrdenada[,"Pesos"]*wCorregido
PesosXwCorregidoCuadrado <- MuestraOrdenada[,"Pesos"]*wCorregido^2
SumaPesos <- cumsum(MuestraOrdenada[,"Pesos"])
SumaPesosXwCorregido <- cumsum(PesosXwCorregido)
Estimacion <- SumaPesosXwCorregido/SumaPesos
SumaPesosXwCorregidoCuadrado <- cumsum(PesosXwCorregidoCuadrado)
SumaPesosXwCorregidoCuadradoEntreSumaPesos <- SumaPesosXwCorregidoCuadrado/SumaPesos
s <- sqrt(SumaPesos*round(SumaPesosXwCorregidoCuadradoEntreSumaPesos-Estimacion^2,8)/(SumaPesos-1))
rndSumaPesosMenos1 <- round(SumaPesos-1)
rndSumaPesosMenos1 <- ifelse(rndSumaPesosMenos1 == 0, 1, rndSumaPesosMenos1)
t <- ifelse(rndSumaPesosMenos1>30, rndSumaPesosMenos1,qt(.975, 1:30)[rndSumaPesosMenos1])
sxt <- s*t
MuestraOrdenada <- cbind(MuestraOrdenada, Correccion, wCorregido, PesosXwCorregido, PesosXwCorregidoCuadrado, SumaPesos, SumaPesosXwCorregido,
Estimacion, SumaPesosXwCorregidoCuadrado, SumaPesosXwCorregidoCuadradoEntreSumaPesos, s, rndSumaPesosMenos1, t, sxt)
MuestraOrdenadaFiltrada <- MuestraOrdenada[6:30,]
ValorDistribucionT <- ifelse(min(MuestraOrdenadaFiltrada[,"sxt"])>=log(1.05), min(MuestraOrdenadaFiltrada[,"sxt"]), MuestraOrdenadaFiltrada[,"sxt"][25])
Seleccionados <- head(MuestraOrdenada, 5)
MuestraDeCorte <- subset(MuestraOrdenadaFiltrada, MuestraOrdenadaFiltrada[,"sxt"] == ValorDistribucionT)
MuestrasAdicionales <- subset(MuestraOrdenadaFiltrada, MuestraOrdenadaFiltrada[,"Distancia"] <= MuestraDeCorte[,"Distancia"])
Seleccionados <- rbind(Seleccionados, MuestrasAdicionales)
Estimacion <- CalcularTasacion(Seleccionados)
CalidadEstimacion <- CalcularCalidadTasacion(ListaDeDatos$Estimacion, MuestraOrdenada, Seleccionados, Coeficientes, VariablesCasoTransformadas)
GrabarTasacion(Directorio, c(Estimacion, CalidadEstimacion))
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.