#Removemos todos los objetos de la memoria# rm(list=ls(all=TRUE)) biplot<-"Biplot" centroides<-"Centroides" datosKmeans<-"Datos out" dendrograma<-"Dendrograma" histograma<-"Histograma" resultadoTxt<-"Resultado" frecuencias<-"Frecuencias" princomp.colli<- function(x, cor=FALSE, scores=TRUE, subset=rep(TRUE, nrow(as.matrix(x)))) { # it is tempting to add use="all.obs" which could be passed to cov or # cor but then the calculation of N is complicated. z<- as.matrix(x)[subset,, drop=F] N <- nrow(z) if(cor) cv <- get("cor",envir=.GlobalEnv)(z) else cv <- cov(z) #(svd can be used but gives different signs for some vectors) edc <- eigen(cv) cn <- paste("Comp.", 1:ncol(cv), sep="") names(edc$values) <- cn dimnames(edc$vectors) <- list(dimnames(x)[[2]], cn) scr<- NULL #------------------------------------------------------------------------------# cuenta<-0; for(i in 1:nrow(edc$vectors)) { if (edc$vectors[i]<0) {cuenta<-cuenta+1} } if (cuenta==nrow(edc$vectors)) { vectors<-(edc$vectors)*(-1) } else { vectors<-edc$vectors } #-------------------------------------------------------------------------------# if (cor) {sdev <- sqrt(edc$values) sc <- (apply(z,2,var)*(N-1)/N)^0.5 if (scores) scr<-(scale(z,center=T,scale=T) %*% vectors)*sqrt(N/(N-1)) } else { sdev <- sqrt(edc$values*(N-1)/N) sc <- rep(1, ncol(z)) if (scores) scr<- (scale(z,center=T,scale=F) %*%vectors) } names(sc) <- dimnames(x)[[2]] edc <-list(sdev=sdev, loadings=vectors,center=apply(z,2,mean), scale=sc, n.obs=N, scores=scr) # The Splus function also return list elements factor.sdev, correlations # and coef, but these are not documented in the help. coef seems to equal # load. The Splus function also return list elements call and terms which # are not supported here. class(edc) <- "princomp" edc } print.princomp <- function(x) { cat("Standard deviations:\n") print(x$sdev) cat(length(x$scale), " variables and ", x$n.obs, "observations.\n") cat("Scale:\n") print(x$scale) invisible(x) } #princomp.colli(x,cor=TRUE,scores=TRUE); crite="NULL" #Esta función revisa si todas las variables en el análsis estan altamente correlacionadas# cor.func<-function(x) { x.cor<-cor(x) dim.col<-ncol(x.cor) cal.acum<-0; for(i in 1:dim.col) { for(j in 1:dim.col) { if(j!=i) { if(x.cor[i,j]>=0.9) { cal.acum<-cal.acum+1 } } } } if(cal.acum==(dim.col*dim.col-dim.col)) { corre<-1} else {corre<-0} return(corre) } #Funcion nueva para colinialidad # revisa.cor<-function(tipo,x) { if (tipo=="Cor") { y<-as.matrix(log(det(cor(x)))) } if (tipo=="Cov") { y<-as.matrix(log(det(cov(x)))) } return(y) } #Grafica de centroides# plot.centroides<-function(datosx) { datosx.ncol<-ncol(datosx); conteo<-table(datosx[,datosx.ncol]) clust.name<-as.matrix(as.numeric(rownames(as.matrix(conteo)))) estrato<-nrow(clust.name) Centroides<-matrix(rep(NA,estrato*(datosx.ncol-1)),ncol=(datosx.ncol-1)) for (i in 1:estrato) { datosx.parte<-datosx[datosx[,datosx.ncol]==clust.name[i],] Centroides[i,]<-colMeans(datosx.parte[,-datosx.ncol]) } xnames<-colnames(datosx) colnames(Centroides)<-as.matrix(xnames)[-datosx.ncol,] direcentroides<-paste(centroides,".pdf",sep="") direcentroidesjpg<-paste(centroides,".jpg",sep="") pdf(file=direcentroides) matplot(Centroides,lty=1,type="b",pch=19,col=1:datosx.ncol,bg=10,main = "Centroides por variable",xlab="Estrato",ylab="Valores de los centroides",xaxt="n") axis(1,clust.name) leg.txt<-as.matrix(xnames)[-datosx.ncol,]; legend("topright", leg.txt, lty=1,pch =19, col= c(1:(datosx.ncol-1)),cex=1) dev.off() jpeg(filename=direcentroidesjpg,width = 900, height = 900) matplot(Centroides,lty=1,type="b",pch=19,col=1:datosx.ncol,bg=10,main = "Centroides por variable",xlab="Estrato",ylab="Valores de los centroides",xaxt="n") axis(1,clust.name) leg.txt<-as.matrix(xnames)[-datosx.ncol,]; legend("topright", leg.txt, lty=1,pch =19, col= c(1:(datosx.ncol-1)),cex=1) dev.off() } #Salidas cuando no tenemos resultados# noobs<-function() { #library(maptools) set.seed(123) x = c(0,0,0,0,0,5) y = c(10,9,8,7,6,0) w = c("LOS RESULTADOS NO SE GENERARON PORQUE EL NÚMERO DE", "VARIABLES SUPERA EL NÚMERO DE OBSERVACIONES, O BIEN,", "TODAS LAS VARIABLES ESTAN ALTAMENTE CORRELACIONADAS.", "SE SUGIERE INCLUIR MENOS VARIABLES EN EL MODELO", "O CAMBIAR AL MENOS UNA VARIABLE.", "" ) direcodos<-paste(biplot,".pdf",sep="") #Grafica de codos# pdf(file=direcodos); par(ann = FALSE, xpd = NA, mar = rep(2, 4)) plot(x, y, type = "n", axes = FALSE) pointLabel(x, y, w, cex=c(rep(1,4),1)) dev.off() #grafica de cargas# direcargas<-paste(dendrograma,".pdf",sep="") pdf(file=direcargas) par(ann = FALSE, xpd = NA, mar = rep(2, 4)) plot(x, y, type = "n", axes = FALSE) pointLabel(x, y, w, cex=c(rep(1,4),1)) dev.off() #Bibplot# direbibplot<-paste(histograma,".pdf",sep="") pdf(file=direbibplot) par(ann = FALSE, xpd = NA, mar = rep(2, 4)) plot(x, y, type = "n", axes = FALSE) pointLabel(x, y, w, cex=c(rep(1,4),1)) dev.off() direcentroides<-paste(centroides,".pdf",sep="") pdf(file=direcentroides) par(ann = FALSE, xpd = NA, mar = rep(2, 4)) plot(x, y, type = "n", axes = FALSE) pointLabel(x, y, w, cex=c(rep(1,4),1)) dev.off() } #Resumen corto# formulas<-function(x) { vn<-colnames(x); fmla <- paste("~ ", paste(vn, collapse= "+")) return(fmla); } modelo<-function(fmla,tipo) { if (tipo=="Cor") {cat("Modelo:
","\n"); cat("princomp(formula=",fmla,",data=datos,cor=TRUE,scores=T)
","\n");cat("\n") } if (tipo=="Cov") {cat("Modelo:
","\n");cat("princomp(formula=",fmla,",data=datos,cor=False,scores=T
)","\n");cat("\n") } } resu.uno<-function(modelos) { #cat("Modelo:","\n"); print(modelos$call);cat("\n"); cat("Desviación estándar","\n"); meanh<-as.matrix(names(modelos$sdev)); dati<-cbind(meanh,modelos$sdev) dat<-t(dati) fila<-nrow(dat);colum<-ncol(dat); cat("","\n") for(i in 1:fila) { for(j in 1:colum) { if(j==1){cat("")} else if(j==colum){cat("","\n")} else {cat("")} } } cat("
",dat[i,j],"",dat[i,j],"",dat[i,j],"
","\n") ; #print(modelos$sdev); cat("
","\n"); nuvar<-nrow(as.matrix(modelos$sdev)) cat("
",modelos$n.obs,"observaciones y ",nuvar," variables.
","\n") } #FUNCIONES # estandar<-function(dato) { ncols<-ncol(dato) nfilas<-nrow(dato) est=matrix(rep(0,ncols*nfilas),ncol=ncols,nrow=nfilas) for(i in 1:ncols) { est[,i]=(dato[,i]-mean(dato[,i]))/(sd(dato[,i])) } return(est) } #Estructura resumen # resumen<-function(kmedias) { cat("

Suma cuadrados del error total:
","\n"); ;cat("\n") cat("","\n") cat("
",kmedias$totss,""); cat("
") cat("

") #cat("Suma total de los cuadrados de cada uno de los estratos, es decir suma(withinss)","\n") #print(kmedias$tot.withinss) #cat("\n");cat("\n");cat("\n") cat("

Frecuencia de casos en cada estrato:
","\n");cat("\n") freq<- meanh<-as.matrix(kmedias$size) colum<-nrow(meanh) cat("
","\n") for(j in 1:colum) { estra<-paste("Estrato.",1:nrow(meanh),sep="") if(j==1){cat("")} else if(j==colum){cat("","\n")} else {cat("")} } for(j in 1:colum) { if(j==1){cat("")} else if(j==colum){cat("","\n")} else {cat("")} } cat("
  ",estra[j],"    ",estra[j],"    ",estra[j],"  
  ",meanh[j],"    ",meanh[j],"    ",meanh[j],"  
","\n") cat("

") } #Estructura corta # corta<-function(kmedias) { cat("\n");cat("\n") cat("Centroides para cada estrato:

","\n");;cat("\n") dat<-as.matrix(round(kmedias$centers,digits=3)) colna<-as.matrix(colnames(dat)); rowna<-as.matrix(rownames(dat)) cat("
","\n") for(i in 1:(nrow(colna)+1)) { if(i==1) {cat("")} else {cat("")} } cat("\n"); dat<-cbind(rowna,dat) fila<-nrow(dat);colum<-ncol(dat); for(i in 1:fila) { for(j in 1:colum) { if(j==1){cat("")} else if(j==colum){cat("","\n")} else {cat("")} } } cat("
   Estrato      ",colna[(i-1)],"  
  ",dat[i,j],"    ",dat[i,j],"    ",dat[i,j],"  
","\n") cat("

") cat("\n");cat("\n") cat("Suma de cuadrados del error intra-estrato:
","\n");;cat("\n") meanh<-round(as.matrix(kmedias$withinss),digits=3) colum<-nrow(meanh) cat("
","\n") for(j in 1:colum) { estra<-paste("Estrato.",1:nrow(meanh),sep="") if(j==1){cat("")} else if(j==colum){cat("","\n")} else {cat("")} } for(j in 1:colum) { if(j==1){cat("")} else if(j==colum){cat("","\n")} else {cat("")} } cat("
  ",estra[j],"    ",estra[j],"    ",estra[j],"  
  ",meanh[j],"    ",meanh[j],"    ",meanh[j],"  
","\n") cat("

") cat("

Suma de cuadrados del error entre estratos:
","\n"); cat("","\n") cat("") cat("
",round(kmedias$betweenss,digits=3),"
") cat("

") cat("

Suma cuadrados del error total:
","\n"); ;cat("\n") cat("","\n") cat("
",round(kmedias$totss,digits=3),""); cat("
") cat("

") #cat("Suma total de los cuadrados de cada uno de los estratos, es decir suma(withinss)","\n") #print(kmedias$tot.withinss) #cat("\n");cat("\n");cat("\n") } #Estructura de completa# completa<-function(kmedias) { cat("\n");cat("\n") cat("Centroides para cada estrato:

","\n");;cat("\n") dat<-as.matrix(round(kmedias$centers,digits=3)) colna<-as.matrix(colnames(dat)); rowna<-as.matrix(rownames(dat)) cat("
","\n") for(i in 1:(nrow(colna)+1)) { if(i==1) {cat("")} else {cat("")} } cat("\n"); dat<-cbind(rowna,dat) fila<-nrow(dat);colum<-ncol(dat); for(i in 1:fila) { for(j in 1:colum) { if(j==1){cat("")} else if(j==colum){cat("","\n")} else {cat("")} } } cat("
   Estrato      ",colna[(i-1)],"  
  ",dat[i,j],"    ",dat[i,j],"    ",dat[i,j],"  
","\n") cat("

") cat("\n");cat("\n") cat("Suma de cuadrados del error intra-estrato:
","\n");;cat("\n") meanh<-round(as.matrix(kmedias$withinss),digits=3) colum<-nrow(meanh) cat("
","\n") for(j in 1:colum) { estra<-paste("Estrato.",1:nrow(meanh),sep="") if(j==1){cat("")} else if(j==colum){cat("","\n")} else {cat("")} } for(j in 1:colum) { if(j==1){cat("")} else if(j==colum){cat("","\n")} else {cat("")} } cat("
  ",estra[j],"    ",estra[j],"    ",estra[j],"  
  ",meanh[j],"    ",meanh[j],"    ",meanh[j],"  
","\n") cat("

") cat("

Suma de cuadrados del error entre estratos:
","\n"); cat("","\n") cat("") cat("
",round(kmedias$betweenss,digits=3),"
") cat("

") cat("

Suma cuadrados del error total:
","\n"); ;cat("\n") cat("","\n") cat("
",kmedias$totss,""); cat("
") cat("

") #cat("Suma total de los cuadrados de cada uno de los estratos, es decir suma(withinss)","\n") #print(kmedias$tot.withinss) #cat("\n");cat("\n");cat("\n") cat("

Frecuencia de casos en cada estrato:
","\n");cat("\n") freq<- meanh<-as.matrix(kmedias$size) colum<-nrow(meanh) cat("
","\n") for(j in 1:colum) { estra<-paste("Estrato.",1:nrow(meanh),sep="") if(j==1){cat("")} else if(j==colum){cat("","\n")} else {cat("")} } for(j in 1:colum) { if(j==1){cat("")} else if(j==colum){cat("","\n")} else {cat("")} } cat("
  ",estra[j],"    ",estra[j],"    ",estra[j],"  
  ",meanh[j],"    ",meanh[j],"    ",meanh[j],"  
","\n") cat("

") } #Damos de alta las librerias necesarias library(foreign) library(stratification) #library(xlsReadWrite) #++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++# kmedias<-function(diredata ,direout,combinagraf,itermax,estrato,outtx) { #setwd(direout); #IMPORTAMOS LA BASE DE DATOS EN FORMATO CSV #-------------------------------------------------------------------------# #Eliminamos los valos NA, este valor es creado desde delphi# origen<-read.dbf(file=diredata); #origen<-as.matrix(read.dbf(file=diredata)); #origen<-rs; for (i in 1:ncol(origen)) { origen<-origen[origen[,i]!="NA",] origen<-origen[origen[,i]!=-88,] origen<-origen[origen[,i]!=-77,] origen<-origen[origen[,i]!=-99,] origen<-origen[origen[,i]!=-66,] } origen<-data.frame(origen) #-----------------------------------------------------------------------# ncolumnas<-ncol(origen) #numero de columnas nfilas<-nrow(origen) #numero de filas namecol<-colnames(origen)#nombres de las columnas originales# #Obtenemos el nivel de los desgloses # nname<-length(namecol) vname<-as.matrix(rep(NA,nname),ncol=1,nrow=nname) for (i in 1:nname) {temp<-namecol[i] if (temp=="ENT"){vname[i]<-1} else if (temp=="ent"){vname[i]<-1} else if (temp=="clavegeo"){vname[i]<-1} else if (temp=="CVEGEO"){vname[i]<-1} else if (temp=="OID"){vname[i]<-1} else if (temp=="mun"){vname[i]<-1} else if (temp=="loc"){vname[i]<-1} else if (temp=="ageb"){vname[i]<-1} else {vname[i]<-0} } retro<-sum(vname) nume<-origen[,(retro+1):ncolumnas] for (i in 1:(ncolumnas-retro)) { parte<-as.numeric(as.matrix(nume[,i])) if (i==1){ numericas<-cbind(parte) } else { numericas<-cbind(numericas,parte) } } nombres<-c(colnames(nume)) colnames(numericas)<-nombres datos<-cbind(origen[,c(1:retro)],data.frame(numericas)) #-----------------Codigo agregado ---------------------------------------------# dato<-datos[complete.cases(datos),]; origen<-dato; datos<-datos; colnames(origen)<-namecol; #-----------------Codigo agregado ---------------------------------------------# ncols<-ncol(datos) #numero de columnas nfilas<-nrow(datos) #numero de filas #obtenemos la base de datos numericos# x<-datos[,c((retro+1):ncols)] xncol<-ncol(x);xnrow<-nrow(x); ## #Ajustando por frecuencias 02/04/2012# cuenta<-0; constante<-0; for(i in 1:ncol(x)) { if( length(table(x[,i]))>estrato ){cuenta<-cuenta+1} if( length(table(x[,i]))==1 ){constante<-1} } #ajuste por una variable constante# if(constante==0) { #Revisión de la correlación de los datos# val.cor<-revisa.cor("Cor",x); correlacion<-cor.func(x) if (val.cor=="NaN" | correlacion==1 ){calif<-0} else if (val.cor!="NaN" & correlacion==0 ){calif<-1} #inicia filtro por frecuencia# #if(cuenta==0) #{ if (calif==1) { if(xncol<=xnrow) { #Obtenemos el desglose desglose<-datos[,c(1:retro)] #Analisis de componentes principales# #datos estandarizados #x<-estandar(x) #Formula# fmla<-formulas(x); kmedias<-kmeans(x,estrato,iter.max=itermax,nstart=200, algorithm=c("Hartigan-Wong","Lloyd","Forgy","MacQueen")) #---------------Análisis de componentes principales-----------------------------# comprin<-princomp.colli(x,cor=TRUE,scores=T); xvar<-cor(x) eigenvalue<-comprin$sdev^2 value<-matrix(rep(NA,length(eigenvalue)),ncol=1,nrow=length(eigenvalue)) acumula<-matrix(rep(NA,length(eigenvalue)),ncol=1,nrow=length(eigenvalue)) suma<-sum(eigenvalue) for (i in 1:length(eigenvalue)) { value[i,1]<-(eigenvalue[i]/suma)*100; acumula[i,1]<-sum(value[1:i,1]); } #Matriz de eigenvalores y Porcentaje de varianzas resultado<-cbind(eigenvalue,value,acumula) colnames(resultado)=c("Valores característicos","Porcentaje de la varianza explicada","Porcentaje de la varianza explicada acumulada ") #Importancia de los componentes# Standard_deviations<-t(as.matrix(comprin$sdev)) tstd<-t(Standard_deviations) importancia<-cbind(eigenvalue,tstd,value,acumula) colnames(importancia)=c("Valores característicos","Desviación estándar","Porcentaje de la varianza explicada", "Porcentaje de la varianza explicada acumulada ") titulo<-function() { cat("
","\n") cat("


","\n") cat("
*** AVISO IMPORTANTE ***


","\n") cat("Antes de utilizar los resultados de la estratificación multivariada, se sugie"); cat("re analizar detalladamente los resultados del modelo.
","\n");cat("\n"); cat("El INEGI no se hace responsable del uso, aplicación e interpretación de los re"); cat("sultados obtenidos en el análisis.
","\n");cat("\n"); cat("


","\n") cat("
*** ESTRATIFICACIÓN MULTIVARIADA ***


","\n") cat("Se presentan los resultados de la estratificación multivariada por el método de","\n"); cat("k-medias. Adicionalmente, se muestran los resultados de un análisis de componentes","\n"); cat("principales como un auxiliar para la evaluación del comportamiento de las","\n"); cat("variables utilizadas para la estratificación.","\n");cat("\n"); cat("\n"); cat("


","\n") cat("
Análisis de componentes principales


","\n") } propo<-function() { #Importamos descriptores# DIRE.DECRIP<-paste("DescriptoresSel.dbf",sep="") DESCRIP<-as.matrix(read.dbf(file=DIRE.DECRIP)); #DESCRIP<-as.matrix(rsDescriptores); descripcion<-function() {cat("
Descriptores para cada variable seleccionada:
", "\n \n"); for(i in 1:nrow(DESCRIP)) { temp<-DESCRIP[i] cat("
",temp,"\n"); } cat("


","\n"); # print(DESCRIP);cat("\n"); } #cat("\n"); cat("$Porcentaje de la varianza explicada por la primera componente principal","\n") #print(resultado[1,2]); #cat(" Nota: Es deseable que este valor sea lo más próximo al 100%.","\n");cat("\n") #cat("$","\n"); cat("\n") #Costruimos el modelo# { cat("Modelo:
","\n"); cat("princomp(formula=",fmla,",data=datos,cor=TRUE,scores=T)
","\n");cat("\n") } # cat("Desviación estándar","\n");print(comprin$sdev); cat("\n"); cat("
Desviación estándar: ","\n"); meanh<-as.matrix(names(comprin$sdev)); dati<-cbind(meanh,round(comprin$sdev,digits=3)) dat<-t(dati) fila<-nrow(dat);colum<-ncol(dat); cat("

","\n") for(i in 1:fila) { for(j in 1:colum) { if(j==1 & i==1 ){cat("")} else if(j==1 & i>1){cat("")} else if(j==colum){cat("","\n")} else {cat("")} } } cat("
  ",dat[i,j],"  
  ",dat[i,j],"    ",dat[i,j],"    ",dat[i,j],"  
","\n") cat("
") nuvar<-nrow(as.matrix(comprin$sdev)) cat("


Selección de Indicadores:

",comprin$n.obs,"observaciones y ",nuvar," variables.

","\n") descripcion(); cat("\n");cat("\n");cat("\n"); dat<-t(as.matrix(importancia)) importance<-function(dat) { dat<-round(dat,digits=3) colna<-as.matrix(colnames(dat)) rowna<-as.matrix(rownames(dat)) cat("
Importancia de las componentes principales:

","\n") cat("
","\n") for(i in 1:(nrow(colna)+1)) { if(i==1) {cat("")} else {cat("")} } cat("\n"); dat<-cbind(rowna,dat) fila<-nrow(dat);colum<-ncol(dat); for(i in 1:fila) { for(j in 1:colum) { if(j==1){cat("")} else if(j==colum){cat("","\n")} else {cat("")} } } cat("
  ","Descriptor","    ",colna[(i-1)],"  
  ",dat[i,j],"    ",dat[i,j],"    ",dat[i,j],"  
","\n") cat("

") } importance(dat); cat("\n"); cat("\n"); cat("\n"); } direbibplot<-paste(biplot,".pdf",sep="") direbibplotjpg<-paste(biplot,".jpg",sep="") bibplot<-function() { pdf(file=direbibplot) biplot(comprin, main="Biplot", cex.main=1, xlabs=filas) #text(prin1,prin2,labels=filas,adj=c(0,1),cex=1) abline(h=0,lty=4) abline(v=0,lty=4) dev.off() jpeg(filename=direbibplotjpg,width = 900, height = 900) biplot(comprin, main="Biplot", cex.main=1, xlabs=filas) #text(prin1,prin2,labels=filas,adj=c(0,1),cex=1) abline(h=0,lty=4) abline(v=0,lty=4) dev.off() } loads<-comprin$loadings for(i in 1:ncol(as.matrix(loads))) { parte<-loads[,i] if (i==1) {carga<-cbind(parte)} else {carga<-cbind(carga,parte)} } nombres<-c(colnames(loads)); colnames(carga)<-nombres componente<-carga filas<-rownames(xvar) prin1<-componente[,1] ;prin2<-componente[,2] diredendrograma<-paste(dendrograma,".pdf",sep="") diredendrogramajpg<-paste(dendrograma,".jpg",sep="") dendrograma<-function() { pdf(file=diredendrograma) hc <- hclust(dist(x), "average") plot(hc, main="Dendograma \n Método: distancia media entre estratos",xlab="Observaciones",ylab="Distancia",labels=as.matrix(datos[,1])) dev.off() jpeg(filename=diredendrogramajpg,width = 900, height = 900) hc <- hclust(dist(x), "average") plot(hc, main="Dendograma \n Método: distancia media entre estratos",xlab="Observaciones",ylab="Distancia",labels=as.matrix(datos[,1])) dev.off() } #-------------------------------------------------------------------------------# if(nrow(x)<=100) { #combinaciones de salidas para graficos# filas<-as.matrix(datos[,1]) if (combinagraf==1) { bibplot();dendrograma();} if (combinagraf==2) { dendrograma();} if (combinagraf==3) { bibplot(); } } else if(nrow(x)>100) { #combinaciones de salidas para graficos# filas<-as.matrix(datos[,1]) if (combinagraf==1) { bibplot()} if (combinagraf==2) { } if (combinagraf==3) { bibplot(); } } #-------------------------------------------------------------------------------# #Exportamos la salida completa # direresultado<-paste(resultadoTxt,".html",sep="") if (outtx==1) { sink(direresultado) #redirige la salida al fichero salida.txt titulo();propo(); cat("


","\n") cat("
Estratificación por el método de k-medias


","\n") resumen(kmedias) sink() #redirige a la salida por defecto (pantalla) } if (outtx==2) { sink(direresultado) #redirige la salida al fichero salida.txt titulo();propo(); cat("


","\n") cat("
Estratificación por el método de k-medias


","\n") corta(kmedias); sink() #redirige a la salida por defecto (pantalla) } if (outtx==3) { sink(direresultado) #redirige la salida al fichero salida.txt titulo();propo(); cat("


","\n") cat("
Estratificación por el método de k-medias


","\n") completa(kmedias); sink() #redirige a la salida por defecto (pantalla) } #Histograma para los clusters# direplot<-paste(histograma,".pdf",sep="") pdf(file=direplot) barplot(table(kmedias$cluster),xlab="Estratos",ylab="Conteos",main="Histograma:\n Estratificación por el método de k-medias", col=c("darkgreen","dimgray","darkblue","midnightblue")); abline(h=0,lty=1) #abline(v=0,lty=1) dev.off() direplotjpg<-paste(histograma,".jpg",sep="") jpeg(filename=direplotjpg,width = 900, height = 900) barplot(table(kmedias$cluster),xlab="Estratos",ylab="Conteos",main="Histograma:\n Estratificación por el método de k-medias", col=c("darkgreen","dimgray","darkblue","midnightblue")); abline(h=0,lty=1) dev.off() #Exportamos la base ya con sus estratos# direoutdata<-paste(datosKmeans,".dbf",sep="")#direccion de de salida data clusterdata<-as.matrix(kmedias$cluster); datofinal<-cbind(origen,clusterdata) #--------------------------------------------------------------------------------# write.dbf(datofinal, file=direoutdata,factor2char=TRUE,max_nchar=254) #write.table(datofinal, file=direoutdata, append = FALSE, quote = TRUE, sep = ",", # eol = "\n", na = "NA", dec = ".", row.names =FALSE, # col.names = TRUE, qmethod = c("escape", "double"), # fileEncoding = "") #--------------------------------------------------------------------------------# datosx<-cbind(x,clusterdata); #Gráfica de centroides# plot.centroides(datosx); #--------------------------------------# tabla<-table(clusterdata) freq<-t(as.matrix(tabla)) freq.rownames<-as.matrix(colnames(freq)) tabla<-cbind(freq.rownames,t(freq)) frecuencias<-paste(frecuencias,".html",sep=""); nro.row<-nrow(tabla); n.col<-ncol(tabla) sink(frecuencias) for(i in 1:nro.row) { cat(tabla[i,1],";");cat(tabla[i,2],"\n"); } sink() #return(kmedias) } else { direresultado<-paste(resultadoTxt,".html",sep=""); sink(direresultado); cat("LOS RESULTADOS NO SE GENERARON PORQUE EL NÚMERO DE VARIABLES SUPERA EL","\n") cat("NÚMERO DE OBSERVACIONES, O BIEN, TODAS LAS VARIABLES ESTAN ALTAMENTE","\n") cat("CORRELACIONADAS. SE SUGIERE INCLUIR MENOS VARIABLES EN EL MODELO O ","\n") cat("CAMBIAR AL MENOS UNA VARIABLE.","\n") sink() #noobs(); } } else { direresultado<-paste(resultadoTxt,".html",sep=""); sink(direresultado); cat("
LOS RESULTADOS NO SE GENERARON PORQUE EL NÚMERO DE VARIABLES SUPERA EL","\n") cat("NÚMERO DE OBSERVACIONES, O BIEN, TODAS LAS VARIABLES ESTAN ALTAMENTE","\n") cat("CORRELACIONADAS. SE SUGIERE INCLUIR MENOS VARIABLES EN EL MODELO O ","\n") cat("CAMBIAR AL MENOS UNA VARIABLE.","\n") sink()#Cerramos el texto# #noobs(); } #}#termina filtro por frecuencia# #else #{ #direresultado<-paste(resultadoTxt,".html",sep=""); #sink(direresultado); #cat("

","\n") #cat(" El número de estratos que se desea conformar no es factible. Reducir el número de estratos.

","\n") #sink()#Cerramos el texto# #} }#termina criterio:almenos una variable es constante# else { direresultado<-paste(resultadoTxt,".html",sep=""); sink(direresultado); cat("

","\n") cat("El indicador es constante para esta selección, por lo que no se pueden conformar estratos.

","\n") sink()#Cerramos el texto# } } #(diredata ,direout ,combinagraf ,itermax,estrato ,outtx) #kmedias("E:/componentes R oscar duran/multiStrat.dbf","E:/componentes R oscar duran/resultado/", 1 ,6 ,6 ,3 ); criterio<-function(diredata ,direout,combinagraf,itermax,estrato,outtx) { crite<-warnings();#convergencia# diremen<-paste("Prueba.txt",sep=""); sink(diremen); #redirige la salida al fichero salida.txt print(crite); cat("\n");cat("\n");cat("\n"); citation() sink(); } #criterio("E:/componentes R Aron/multiStrat.dbf","E:/componentes R Aron/resultado/", 1 ,6 ,6 ,3 ); #quit("yes") #cerrar R#