1. En este script vamos a simular una sociomatriz, en donde la probabilidad de que dos personas tengan un lazo, esta en función del género.
2. Luego vamos a graficar esa sociomatriz. 3. Reordenamos después las columnas e hileras de la sociomatriz, respetando los elementos de la matriz,
es decir los vínculos siguen siendo los mismos.



#### limpio mi ambiente de trabajo
rm(list = ls())

# carga este paquete
library(sna)
#######################################################################
# otra forma de representar una sociomatriz, además de una gráfica es
# usando una gráfica de matriz
#######################################################################
#Graficamos una sociomatrix aleatoria de 5x5
plot.sociomatrix(rgraph(5))

#Graficamos una matrix aleatoria un poco más grande
plot.sociomatrix(rgraph(100),drawlab=FALSE,diaglab=FALSE)


# practiquemos un poco
# TUTORIAL de http://students.washington.edu/mclarkso/documents/plot%20sociomatrix%20Ver2.pdf
# una sociomatriz con matices o variable continua
random_matrix <- matrix(runif(25, min=0, max=1), nrow=5)
plot.sociomatrix(random_matrix)
plot.sociomatrix(random_matrix, drawlines=FALSE)
# sin etiquetas
plot.sociomatrix(random_matrix, drawlab=FALSE)
# sin etiquetas en la diagonal
plot.sociomatrix(random_matrix, diaglab=FALSE)

#personalisamos las etiquetas
plot.sociomatrix(random_matrix, labels=list(c("one", "two", "three",
                                              "four", "five"), c("1", "2", "3", "4", "5")))

# etiquetas de mayor tamaño (dale Zoom para que veas bien la grafica)
plot.sociomatrix(random_matrix, cex.lab=2)

# etiquetamos las columnas y las hileras
plot.sociomatrix(random_matrix, xlab="column label", ylab="row label")

# titulo y subtitulo
plot.sociomatrix(random_matrix, main="Titulo Principal",
                 sub="Subtitulo")
# cambiamos el aspecto ratio ancho alto
plot.sociomatrix(random_matrix, asp=0.5)
#######################################################################
# simulamos una matriz
nombres<- c( "Jose",
             "Romina","Alicia","Maco","Jesica",
             "Armando",
             "Fabiola","Tatiana",
             "Julio","Pedro", "Juan", "Kike", "Rolas", "Roberto")
sexo= c("M", 
        "F","F","F","F",
        "M",
        "F","F",
        "M","M","M","M","M","M" )

# largo del vector o sea el numero de elementos del vector
length(nombres) 
length(sexo)

# comparo el sexo el elemento 1 del vector, o sea de José con el del resto de los 
# actores, si es igual da TRUE sino FALSE
xe1=sexo[1]==sexo; xe1
class(xe1); length(xe1)
xe1
####
xe2=sexo[2]==sexo
xe3=sexo[3]==sexo
xe4=sexo[4]==sexo
xe5=sexo[5]==sexo
xe6=sexo[6]==sexo
xe7=sexo[7]==sexo
xe8=sexo[8]==sexo;xe8
xe9=sexo[9]==sexo
xe10=sexo[10]==sexo
xe11=sexo[11]==sexo
xe12=sexo[12]==sexo
xe13=sexo[13]==sexo
xe14=sexo[14]==sexo
xe14


xeAll=c(xe1,xe2,xe3,xe4,xe5,xe6,
        xe7,xe8,xe9,xe10,xe11,xe12,xe13,xe14);xeAll

A = matrix( 
  xeAll, # elementos
  nrow=14,              # hileras
  ncol=14,              # columnas
  byrow = TRUE)        # llenar por hileras

A

#################################################################################
# dicotomizar matriz de distancias. Funcion
for(i in 1:nrow(A))
{
  for(j in 1:ncol(A))
  {                             ###########checa solo cambie las reglas
    if (A[i,j])  {A[i,j]=rbinom(1,1,0.85)} else # lazos mismo sexo 85% prob
    {A[i,j]=rbinom(1,1,0.05)} # lazos de sexo diferente 5% de prob
    
  }####cierro loop para row (hileras)
}####cierro loop para col (columnas)
#################################################################################
A
#### nombres 
colnames(A)<-nombres 
rownames(A)<-nombres
#diagonal la vuelvo ceros
diag(A)<-0
A
##### paste(as.character(xe), collapse=", ") NO USE ESTA FUNCION
#######   dput(as.character(xe1)) muy util pero no lo use
# cambiamos el aspecto ratio ancho alto
plot.sociomatrix(A, asp=0.5)
#### esta no es una matriz aleatoria le dimos más probabilidad a los lazos del mismo sexo


##### reordenamos la matriz conservando la naturaleza de las relaciones, ordenamos
# por sexo
nombres1<- c( "Fabiola","Tatiana",
             "Romina","Alicia","Maco","Jesica",
             "Armando",
             "Jose", 
             "Julio","Pedro", "Juan", "Kike", "Rolas", "Roberto")
A1<-A[nombres1,nombres1]
A1
plot.sociomatrix(A1, asp=0.5)
#### otra más fancy
#####cargamos este paquete
library(lattice)
new.palette=colorRampPalette(c("white","black"),space="rgb")
levelplot(A1, border="black", colorkey = FALSE, col.regions=new.palette(2), xlab=NULL, ylab=NULL)
####

#### No olvides guardar tus gráficas