#### 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