lunes, 30 de abril de 2012

Apuntes sobre "bootstraping" y +

Tesis en castellano sobre técnicas de remuestreo.
http://www.sld.cu/galerias/pdf/sitios/revsalud/tesis_de_resampling.pdf

Un artículo de Whitehead y otros
http://arxiv.org/ftp/arxiv/papers/0903/0903.1519.pdf

Un capítulo de un libro de libre distribución sobre herramientas estadísticas en Análisis de Redes Sociales.
http://www.faculty.ucr.edu/~hanneman/nettext/C18_Statistics.html

Artículo de A. Solanas (Profesor metodología UB)
http://www.raco.cat/index.php/anuariopsicologia/article/viewFile/61175/88740

Un ejemplo claro de "bootstraping"
http://www.stat.wmich.edu/s160/book/node48.html

*******************
Universidad Nacional de Australia; Redes Sociales:
http://epress.anu.edu.au/cs/html/ch05.html

Introducción a los métodos de ARS.
http://www.faculty.ucr.edu/~hanneman/nettext/

Introducción a la matemática de las redes.
http://webmathematics.net/

domingo, 29 de abril de 2012

Multigrafos con Igraph


Si una de sus preocupaciones es como hacer multigrafos con la librería Igraph de R, no se preocupen más, les he encontrado la solución.

Tal vez podríamos designar esta representación como un multidigrafo ya que hay varias líneas entre vértices (multígrafo) y estas están dirigidas (dígrafo), aunque realmente lo que se está haciendo es  transformar un digrafo como multigrado para representar las dos direcciones separadamente (véase: Elementos de Matemática Discreta. UNED).

Aquí lo tenemos:




library(igraph)
#Los datos
g<-graph(c(0,1,0,2,2,0,2,1,3,0,3,1,3,2,4,0,4,1),n=5)
#Definimos las propiedades como curvatura o, también podría ser FALSE, solo que no podriamos ajustar la curvatura.
 
E(g)$curved <- 0
#Y de los que nos interesen le damos curvatura
E(g, P=c(0,2,2,0))$curved <- 0.2
#Et voila!
 
plot(g,layout=layout.circle, main="Multigrafo")
Created by Pretty R at inside-R.org

La ciencia de las estructuras


Las matemáticas son un modelo exacto de razonamiento, un absorbente desafió mental, una experiencia estética para los creadores y algunos estudiantes pero una pesadilla para otros estudiantes así como una salida a las egolátricas demostraciones de potencia intelectual. Pero histórica, intelectual y pragmáticamente las matemáticas son sobre todo la mejor creación del hombre para estudiar la naturaleza.

Traducción libre de:

Kline, M. (1981). Mathematics and the Physical World. 

martes, 24 de abril de 2012

Grafos con "Igraph"

Continuo con ejemplos de representación de redes sociales con R. Estoy seguro que este tema tan apasionante y divertido hará las delicias de todos los lectores de esta humilde bitácora.

Probaremos el paquete "Igraph" que parece que está de moda.

El paquete para R "Igraph", necesita que se le presenten los datos de la matriz de adyacencia por parejas. Es decir, una matriz de doble entrada convencional (o sociomatriz o tabla de confundido o tabla de concordancia o como la quieran llamar) ha de pasarse al formato de Igraph, como pueden ver esta hoja Excel hace automáticamente un vector con los pares que interaccionan (0 con1, 0 con 2, 2 con 0,...). Es importante tener en cuenta que Igraph empieza a contar los vértices (los sujetos) a partir de 0.


Ahora vamos a mostrar algunos grafos que podemos hacer con esta librería.

Introducimos los datos y vamos a ver diferentes representaciones del mismo grafo. 

g<-graph(c(0,1,0,2,2,0,2,1,3,0,3,1,3,2,4,0,4,1),n=5)

#Básico
png("igraph_basico.png")
plot(g,main="Tal cual")
dev.off()

#Lo representamos como un círculo
png("igraph_circulo.png")
plot(g,layout=layout.circle, main="Círculo")
dev.off()

#Lo representamos con este estilo FR
png("igraph_fruich.png")
plot(g,layout=layout.fruchterman.reingold,main="Fruchterman-Reingold")
dev.off()

#Lo representamos con este estilo "graphopt" ¿?
png("igraph_graphopt.png")
plot(g,layout=layout.graphopt,main="Graphopt")
dev.off()

Es el mismo grafo que aquí: http://spingera.blogspot.com.es/2012/04/redes-sociales-con-r.html solo que sin "pesos". 




lunes, 23 de abril de 2012

Millones de moscas no pueden estar equivocadas.


-Hola soy su asiente virtual ¿Está seguro que quiere borrarse de Caralibro?
-Sí
-¿Y dejar de estar en contacto con todos sus amigos?
-Que si.
-¿Incluso de Rodolfo Espardena que consideramos su mejor amigo puesto que intercambia mensajes con una frecuencia 78.65% superior a la de cualquier otro individuo?
-Jope... que sí
-Su cuenta va a ser deshabilitada, puede recuperarla con solo volver a escribir su nombre de su usuario y contraseña.
-Quiero borrarme, no darme de baja.
-¿Borrarse?
-Si
-¿Dejar de estar?
-Si, claro; borrarme.
-¿Hace mucho que piensa en eso?
-Bueno, sí. Pero hoy estoy decidido a hacerlo.
-Entonces se borraría de Caralibro si pudiera.
-Por supuesto, estoy arto de esta feria.
-Pero, la gente es feliz utilizando Caralibro, es muy anormal querer borrarse, además está usted destruyendo conexiones sociales de otras personas. Es algo inmoral.
-Bueno, la cuenta es mía y quiero borrarla.
-Esta bien. Pero le aconsejo que no lo haga, usted mismo. Siga este enlace: http://www.facebook.com/help/?faq=13016&tq.
-Perfecto. Te ha costado... maldito asistente de las narices... A ver... borrar cuenta... "Introduzca su dirección actual (verificando localización de la IP)".
-¿Es usted Armando Bronca Segura?
-Si.
-Podría acercarse al micrófono de su computadora y repetirlo.
-Soy Armando Bronca Segura.
-¿Afirma usted que es su voluntad eliminar su registro de este sistema?
-Si
-Ha leído y suscribe la cláusula legal para esta eventualidad.
-Si
-Sr. Armando Bronca Segura, en breve un equipo de salud se personará en su domicilio para iniciar el tratamiento tal como usted a aceptado implícitamente. En estos momento puede que usted no comprenda la situación pero ha intentado dar de baja definitivamente su cuenta de Caralibro, algo que hace menos del 0,0001% de la población, incluso después de presentarle argumentos racionales, emocionales y presionarlo. Su caso es severo y se le asigna la etiqueta diagnóstica Az.98d.100 de la clasificación mixta de trastornos penales y comportamentales. Haga referencia a ella en su procesamiento para cualquier trámite. Que se mejore.

Feliç Sant Jordi

Redes sociales con R

Con el software R, pueden dibujarse redes sociales o sociogramas. Atrévase a ir más allá del Word y del Excel y flirtee con R y Lyx.

R, dispone de un paquete llamado “Network” que permite tratar los datos como si fueran redes. Una vez se descubre como, es fácil.

Aquí añado un ejemplo más y su resultado.


#***************************
#* Ejemplo en R de una red *
#***************************
#****Llamamos a la librería
library(network)
#****Introcucimos el vector de datos
t<-c(0,3,5,0,0,0,0,0,0,0,4,1,0,0,0,3,3,1,0,0,2,15,0,0,0)
#****Creamos una matriz de adyacencia, que es una matriz cuadrada qeu representa relaciones binarias (quien se 
 
relaciona con quien)
tt<-matrix(t,ncol=5,byrow=TRUE)
#****Transformamos la matriz en una red
ttz<-network(tt)
#****Definimos los nombres de los vértices
network.vertex.names(ttz)<-c("Kasi","Hermes","Monika","Yani","Francoise")
#****Hacemos un vector con los pesos, OJO! Estan tomados a partiz de la matriz en vertical
peso<-c(4,3,2,3,1,3,15,5,1)
#****Dibujamos la red ttz
png("redamenaza.png")
plot.network(ttz,label = network.vertex.names(ttz),label.cex=0.9,edge.lwd=peso,arrowhead.cex=2,main="Amenaza")
dev.off()
#**************************
#****Nombre de las etiquetas: label = network.vertex.names(ttz)
#****Tamaño del texto de las etiquetas: label.cex=1.5,
#****Grueso de las lineas (es el del vector "peso": edge.lwd=peso,
#****Tamaño de las puntas de las flexas: arrowhead.cex=2)
Created by Pretty R at inside-R.org

sábado, 21 de abril de 2012

Un ejemplo de la librería "Network" de R.

Ejemplos para la construcción de sociogramas con R (son autonotas, así que no esperen maravillas). 
-Un manual del paquete utilizado Network.
-Una entrada que parece interesare (que solo me he mirado por encima) sobre análisis de redes.


El ejemplo: 
#Se llama a librería específica (hay que instalarla)
library(network)
#Creamos una matriz de 21x21
 m<-matrix(0,21,21)
#Añadimos las conexiones, quedará una matriz, o una tabla de doble entrada, la anterior eran todo ceros
#ejemplo, fila 1, columna 7, es decir sujeto 1 hace acción a sujeto 7.
m[1,7]<-1
#La interacción es bidireccional, la flexita tendrá dos extremos en el grafo
m[7,1]<-1
m[2,6]<-1
m[6,2]<-1
m[3,9]<-1
m[9,3]<-1
m[4,13]<-1
m[13,4]<-1
m[5,16]<-1
m[16,5]<-1
m[10,18]<-1
m[18,10]<-1
m[11,20]<-1
m[20,11]<-1
m[12,9]<-1
m[9,12]<-1
m[15,19]<-
m[19,15]<-1
#Decimos que la matriz es una red
g<-network(m)
#Dibujamos la red
plot(g,main="Agonístico Escolar")
Tal como me han aconsejado; adjunto el resultado: 
Este sociograma está basado en las líneas rojas de este otro (más abajo), que amablemente me indicó mi sobrina.Como se ve, cuando el programa aproxima a los individuos vinculados el grafo pierde glamour. Es interesante notar, que pude "adivinar" a partir de las relaciones de afinidad y de antagonismo relatadas un segundo nivel de relaciones (tipo; los enemigos de mis amigos son mis enemigos, o los enemigos de mis enemigos son mis amigos). De momento no sé poner lineas de diferentes colores, así que no puedo reproducir el grafo artesanal en R (de todas formas es el primero que hago). 



Otro ejemplo con datos de unos amigos del genero Cercocebus, que los principales lectores de este bloc habrán escuchado hablar (a veces incluso en contra de su voluntad).
¡Código!

#Se llama a librería específica
library(network)
#los datos en forma de vector

mi<-c(0,1,1,1,1,1,1,0,1,1,1,0,1,1,0,1,1,1,1,0,1,0,1,1,1,0,1,1,0,0,0,0,0,0,0,0)
#le decimos que los ponga en una matriz de 6 columnas y que las lea por filas
ma<-matrix(mi,ncol=6,byrow=TRUE)
#Ahora si le pregunto por ma, vean lo que genera
ma

     [,1] [,2] [,3] [,4] [,5] [,6]
[1,]    0    1    1    1    1    1
[2,]    1    0    1    1    1    0
[3,]    1    1    0    1    1    1
[4,]    1    0    1    0    1    1
[5,]    1    0    1    1    0    0
[6,]    0    0    0    0    0    0

#Que es la matriz que yo quiero (esto ha de decirse cantado como si fuera una zarzuela), si no le hubiera #dicho lo de las filas, por ejemplo así:

ma<-matrix(mi,ncol=6)
#Y pregunto por ma
 ma
#Da la misma matriz pero por columnas, ahora nos va a dar igual, pero en otras ocasiones nos va a interesar #diferenciar columnas de filas. 
     [,1] [,2] [,3] [,4] [,5] [,6]
[1,]    0    1    1    1    1    0
[2,]    1    0    1    0    0    0
[3,]    1    1    0    1    1    0
[4,]    1    1    1    0    1    0
[5,]    1    1    1    1    0    0
[6,]    1    0    1    1    0    0

#Volvemos

ma<-matrix(mi,ncol=6,byrow=TRUE)
#Decimos que k es ma en forma de red
k<-network(ma)
#Le decimos que nos dibuje k, con el título "Ejemplo patatín patatán"
plot(k,main="Ejemplo Grooming realizado recibido")
#Y el resultado (se ha utilizado png("loquesea.png") y dev.off(), antes y después de plot() para hacer la #imagen)

Tampoco sé poner etiquetas... I'm sorry

El individuo de abajo es la cría (en las flechas parece si las relaciones son bidireccionales o no). Creo que los dos de los extremos son los dos machos (el grosor de las lineas es artefactal, la matriz está hecha con unos), bueno... puede ser un recurso interesante... 

jueves, 19 de abril de 2012

Ladrillos (no va de la crisis)


Imágenes solo enlazadas.
¿Qué tendrán que ver los números primos y los triángulos? Yo no entiendo de esto, pero me dio por darle vueltas el otro día.

Se ve que el gran éxito de Descartes fue el poner en relación la geometría y el álgebra, gracias a sus planos y coordenadas.

Ya saben que muchos problemas tiene su cara algebraica y geométrica.


¡Hey! Quién a dibujado un troglodita en mi ejemplo de representación geométrica y expresión algebraica.

Pues bien el otro día vi un documental en que un profesor mostraba su devoción por los números indivisibles (o solo divisibles por ellos o por uno), también fue muy gracioso, interesante e incluso estimulante ver la orgásmica reacción de un investigador mostrando al actor del reportaje como la vibración de una esfera de cuarzo encajan con el patrón de aparición de los números primos. Como dijo Wagensberg en una entrevista.

“Existe el orgasmo intelectual, nunca me he animado a decirlo de esta manera y creo que no hay que decirlo de esta manera, pero es muy intenso cuando uno hace una pregunta a la Naturaleza y la Naturaleza dice, “sí, funciona así” o “no es así”. “
Fuente: http://es.scribd.com/doc/37954843/Entrevista-a-Wagensberg

Espero que no tenga que pasarme el resto de mis almuezos/meriendas/cenas teniendo que escuchar a parte del “el chocolate es un sustituto del sexo”, cada vez que en el office aparece una chocolatina, también un “leer el diario/hacer sudokus es un sustituto del sexo” (no, no, “la muerte es un sustituto del sexo” -incluso lo dicen los franceses-, toma; prueba, prueba... está cargada).

Bueno, como decía, si los números primos permiten expresar todos los otros números enteros, siendo una especie de ladrillos del infinito. ¿no serían los triángulos una especie de ladrillos de la geometría? La mínima figura cerrada construible es un triángulo, y es fácil comprobar intuitivamente que cualquier figura con lados rectos puede reducirse a un conjunto de triángulos.
Incluso pueden utilizarse para medir algo tan escurridizo como pi:


Fuente: http://www.librosmaravillosos.com/matematicalife/capitulo02.html


Por cierto, un hallazgo: ofrendas matemáticas japonesas, típicas del S.XVII-XIX, los Sangaku.

El artículo que me los descubrió:

Una página con sangakus dinámicos

Y un artículo de Scientific American sobre los mismos:

lunes, 16 de abril de 2012

apuntes R

aseo<-c(2660,1110,1912,1573,765,1611,615,640,1859,2599)

eti<-c("Kasi","Hermes","Monika","Yani","Francoise")


aseo2<-matrix(aseo,ncol=5,byrow=TRUE)

png("barrasmasterbw.png")

barplot(aseo2,names=eti,main="Aseo Social",xlab="En negro el aseo que realiza, en gris el aseo que recibe")
dev.off()

lunes, 2 de abril de 2012

R

plot(0,0 , xlim=c(0, 1), ylim=c(0, 1))

a<-c(1,0)
b<-c(0,0)
#linea abajo
lines(a,b)
c<-c(1,1)
#linea arriba
lines(a,c)
#sujetos
sa<-c(0.075,0.03)
sb<-c(0.317,0.313)
sc<-c(0.446,0.5)
sd<-c(0.161,0.157)
#origen de y
lin<-c(1,0)
#lineas de los sujetos
lines(sa,lin,lty=4)
lines(sb,lin,lty=5)
lines(sc,lin,lty=6)
lines(sd,lin,lty=1)

Puede ejecutarse aquí:
http://pbil.univ-lyon1.fr/Rweb/

Apunte (autonota)
 http://www.gardenersown.co.uk/Education/Lectures/R/graphs3.htm

Nus antitrasvasista


Ecuacions paramètriques per dibuixar un nus.




Crèdits:

domingo, 1 de abril de 2012

WolframAlpha como tutor

Si se quieren realizar ejercidos y comprobar su resultado y pasos, podemos escribirle la fórmula y pedirle que la resuelva. 



Ejercicio 4, del apartado 1.3 Ejercicios de "Matemáticas especiales" de la  UNED

Un mono en ASCII y más ejemplos con R





Ejemplo de visionado y borrado de elementos.

> objects()
[1] "a" "b" "col" "et2" "etiquetas"
> rm(b)
> objects()
[1] "a" "col" "et2" "etiquetas"
> #le preguntamos qué es lo que hay, después borramos "b"

Ejemplo de indexación de matriz.

En la primera nos da la columna 2 de la matriz a. En la segunda instrucción nos da la fila 1 de la matriz a ( se puede pedir también un dato concreto conminando la fila y la columna).

> a
Aseo Amenaza
Sujeto A 0.451 0.16
Sujeto B 0.348 0.50
Sujeto C 0.125 0.20
Sujeto D 0.076 0.14
> a[,2]
Sujeto A Sujeto B Sujeto C Sujeto D
0.16 0.50 0.20 0.14
> a[1,]
Aseo Amenaza
0.451 0.160

Otro ejemplo para tratar los datos:

> agre<-matrix(scan("c:/r/agrefabre.txt")) Read 12 items 
> agre
[,1]
[1,] 2.05
[2,] 1.65
[3,] 0.68
[4,] 0.90
[5,] 15.38
[6,] 2.23
[7,] 1.66
[8,] 23.77
[9,] 0.61
[10,] 1.79
[11,] 7.44
[12,] 0.18


# Aquí le preguntamos los datos de 1 a 3.
> agre[1:3]
[1] 2.05 1.65 0.68
> a<-agre[1:3] 
> b<-agre[4:6] 
> c<-agre[7:9] 
> d<-agre[10:12] 
#Aquí hemos asignado nombre a unos vectores de datos que corresponden a 4 sujetos 
> t<-c(a,b,c,d) 
#Aquí el total 
> t
#Llamamos o invocamos a t y nos responde esto:
[1] 2.05 1.65 0.68 0.90 15.38 2.23 1.66 23.77 0.61 1.79 7.44 0.18


En R podemos realizar calculos de forma rápida, sin tener que hacer tantas filigranas como en el Excel (que parace más sencillo).


> range(t)
[1] 0.18 23.77
#El rango de todos lo suejtos
> max(range(t))-min(range(t))
[1] 23.59
#La amplitud del rango. Máximo del rango menos el mínimo.
> ra<-max(range(a))-min(range(a)) 
> ra
[1] 1.37
> rt<-max(range(t))-min(range(t)) 
> rt
#Les ponemos un aetiqueta para poder usar los datos más comodamente
[1] 23.59
> ra/rt
[1] 0.05807546
# Voila! La proporción del sujeto A respecto al rango del grupo.


Aquí un gráfico de 0 a 1.


> plot(0,0 , xlim=c(0, 1), ylim=c(0, 1))




Y material de la UB sobre R.
http://www.ub.edu/stat/docencia/EADB/Curso%20basico%20de%20R.htm#material

Un elegante "tutorial" sobre R.
http://www.statmethods.net/index.html