#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("",dat[i,j]," | ")}
else if(j==colum){cat("",dat[i,j]," | ","\n")}
else {cat("",dat[i,j]," | ")}
}
}
cat("
","\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(" ",estra[j]," | ")}
else if(j==colum){cat(" ",estra[j]," | ","\n")}
else {cat(" ",estra[j]," | ")}
}
for(j in 1:colum)
{
if(j==1){cat("
",meanh[j]," | ")}
else if(j==colum){cat(" ",meanh[j]," | ","\n")}
else {cat(" ",meanh[j]," | ")}
}
cat("
","\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(" Estrato | ")}
else {cat(" ",colna[(i-1)]," | ")}
}
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("
",dat[i,j]," | ")}
else if(j==colum){cat(" ",dat[i,j]," | ","\n")}
else {cat(" ",dat[i,j]," | ")}
}
}
cat("
","\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(" ",estra[j]," | ")}
else if(j==colum){cat(" ",estra[j]," | ","\n")}
else {cat(" ",estra[j]," | ")}
}
for(j in 1:colum)
{
if(j==1){cat("
",meanh[j]," | ")}
else if(j==colum){cat(" ",meanh[j]," | ","\n")}
else {cat(" ",meanh[j]," | ")}
}
cat("
","\n")
cat("
")
cat("
Suma de cuadrados del error entre estratos:
","\n");
cat("","\n")
cat("",round(kmedias$betweenss,digits=3)," | ")
cat("
")
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(" Estrato | ")}
else {cat(" ",colna[(i-1)]," | ")}
}
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("
",dat[i,j]," | ")}
else if(j==colum){cat(" ",dat[i,j]," | ","\n")}
else {cat(" ",dat[i,j]," | ")}
}
}
cat("
","\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(" ",estra[j]," | ")}
else if(j==colum){cat(" ",estra[j]," | ","\n")}
else {cat(" ",estra[j]," | ")}
}
for(j in 1:colum)
{
if(j==1){cat("
",meanh[j]," | ")}
else if(j==colum){cat(" ",meanh[j]," | ","\n")}
else {cat(" ",meanh[j]," | ")}
}
cat("
","\n")
cat("
")
cat("
Suma de cuadrados del error entre estratos:
","\n");
cat("","\n")
cat("",round(kmedias$betweenss,digits=3)," | ")
cat("
")
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(" ",estra[j]," | ")}
else if(j==colum){cat(" ",estra[j]," | ","\n")}
else {cat(" ",estra[j]," | ")}
}
for(j in 1:colum)
{
if(j==1){cat("
",meanh[j]," | ")}
else if(j==colum){cat(" ",meanh[j]," | ","\n")}
else {cat(" ",meanh[j]," | ")}
}
cat("
","\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(" ",dat[i,j],"   | ")}
else if(j==1 & i>1){cat("
",dat[i,j],"   | ")}
else if(j==colum){cat(" ",dat[i,j]," | ","\n")}
else {cat(" ",dat[i,j]," | ")}
}
}
cat("
","\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(" ","Descriptor"," | ")}
else {cat(" ",colna[(i-1)]," | ")}
}
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("
",dat[i,j]," | ")}
else if(j==colum){cat(" ",dat[i,j]," | ","\n")}
else {cat(" ",dat[i,j]," | ")}
}
}
cat("
","\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#