Hecho con gusto por Dra. CarlaC. Pérez-Hernández

LABORATORIO - RELACIONAMIENTO “CASO HIPOTÉTICO”

Objetivo: Estimar el relacionamiento (relatedness, proximidad, métrica de distancia entre productos)

En este ejercicio vamos a:

  1. Cargar nuestra matriz hipotética de datos

  2. Calcular co ocurrencias entre personas y productos

  3. Estimar el relacionamiento, teniendo como input las co ocurrencias

  4. Graficar

————————-LABORATORIO NÚMERO 8——————————

¿Cómo se mide la proximidad (relatedness) para crear el espacio producto?

Material: Balland, P.A. (2017) Economic Geography in R: Introduction to the EconGeo Package, Papers in Evolutionary Economic Geography, 17 (09): 1-75. Para instalar: https://www.paballand.com/install-r

INSTALACIONES install.packages (“igraph”) install.packages(“visNetwork”) install.packages(“htmlwidgets”) install.packages(“igraph”) install.packages(“reforma”) install.packages(“Matrix”) install.packages(“RSiena”) install. paquetes(“networkD3”) install.packages(“curl”) install.packages(“devtools”) biblioteca(devtools) devtools::install_github(“PABalland/EconGeo”, force = T)

Ya que están instaladas, se corre el comando library

library(EconGeo)
## 
## Please cite EconGeo in publications as:
##  Balland, P.A. (2017) Economic Geography in R: Introduction to the EconGeo Package, Papers in Evolutionary Economic Geography, 17 (09): 1-75

Importamos una matriz

Archivo en cvs, separados por comas. La fila inicial tiene los títulos T (Titles). La primera columna tendrá el nombre de las variables. #Se selecciona desde la M hasta los últimos dos paréntesis después del 1.

M = as.matrix(
  read.csv("https://raw.githubusercontent.com/PABalland/ON/master/amz.csv" , 
           sep = ",", 
           header = T, 
           row.names = 1))

Para ver la matriz, ejecutar M

M
##        Tie Book Surfboard Short Water
## Pierre   0    0         1     1     1
## Ron      1    1         0     0     1
## Andrea   1    1         0     0     1
## David    0    0         1     1     1
## Cesar    1    1         0     0     1
## Paula    1    1         1     1     1

En la consola (ventana de abajo) se puede ver la matriz creada. La primera columna se muestran los nombres de los participantes. En los renglones se tienen los productos.

Cálculo de co-ocurrencias (cuántos empates de compra entre participantes). Co-ocurrencia entre personas/paises/estados.

co.occurrence (M)
##        Pierre Ron Andrea David Cesar Paula
## Pierre      0   1      1     3     1     3
## Ron         1   0      3     1     3     3
## Andrea      1   3      0     1     3     3
## David       3   1      1     0     1     3
## Cesar       1   3      3     1     0     3
## Paula       3   3      3     3     3     0

Cálculo de co-ocurrencias de la matriz transpuesta para enfocarse en productos. Co-ocurrencia entre productos t es transpuesta.

c = co.occurrence (t(M))

Para visualizar c

c
##           Tie Book Surfboard Short Water
## Tie         0    4         1     1     4
## Book        4    0         1     1     4
## Surfboard   1    1         0     3     3
## Short       1    1         3     0     3
## Water       4    4         3     3     0

Estima el relacionamiento o proximidad pero normalizado, para asegurar que el número de co ocurrencias que observamos. Es mayor al número de co ocurrencias probables (probabilidad condicional)

r = relatedness (c)

Para ver el resultado, corremos r. Tie y Surfboard puede que no esten tan relacionados, abajo de 1 no es relacionado mientras que mayor a 1 si es relacionado

r
##                 Tie      Book Surfboard     Short    Water
## Tie       0.0000000 1.6000000 0.5121951 0.5121951 1.082707
## Book      1.6000000 0.0000000 0.5121951 0.5121951 1.082707
## Surfboard 0.5121951 0.5121951 0.0000000 1.9687500 1.038462
## Short     0.5121951 0.5121951 1.9687500 0.0000000 1.038462
## Water     1.0827068 1.0827068 1.0384615 1.0384615 0.000000

Para poder apreciar el algoritmo de dicho comando, corremos relatedness

relatedness
## function (mat, method = "prob") 
## {
##     method <- tolower(method)
##     Cij = mat
##     diag(Cij) <- 0
##     Si <- colSums(Cij)
##     Sj <- colSums(Cij)
##     Si <- matrix(Si, nrow = length(Si), ncol = length(Si), byrow = TRUE)
##     Sj <- matrix(Sj, nrow = length(Sj), ncol = length(Sj), byrow = FALSE)
##     T <- (sum(Cij))
##     if (method == "prob") {
##         SM <- Cij/(((Si/T) * (Sj/(T - Si)) + (Sj/T) * (Si/(T - 
##             Sj))) * (T/2))
##         SM[is.na(SM)] <- 0
##         diag(SM) <- 0
##         return(SM)
##     }
##     else if (method == "association") {
##         SA <- (Cij/T)/((Si/T) * (Sj/T))
##         SA[is.na(SA)] <- 0
##         diag(SA) <- 0
##         return(SA)
##     }
##     else if (method == "cosine") {
##         SC <- (Cij)/sqrt(Si * Sj)
##         SC[is.na(SC)] <- 0
##         diag(SC) <- 0
##         return(SC)
##     }
##     else if (method == "jaccard") {
##         SJ <- (Cij)/(Si + Sj - Cij)
##         SJ[is.na(SJ)] <- 0
##         diag(SJ) <- 0
##         return(SJ)
##     }
##     else {
##         stop("Unknown value for argument 'method'")
##     }
## }
## <bytecode: 0x000002631ab329f0>
## <environment: namespace:EconGeo>

Regla para ejecutar el relacionamiento.

Si es menor a uno, le corresponde cero. Lo que implica que no haya arista que se ligue al producto

r[r<1] = 0

Si es mayor a uno, le corresponde uno. Lo que implica que si haya arista que se ligue al producto

r[r>1] = 1

Para graficar el espacio-producto, se ejecuta la siguiente paquetería:

library (igraph)
## 
## Attaching package: 'igraph'
## The following object is masked from 'package:EconGeo':
## 
##     diversity
## The following objects are masked from 'package:stats':
## 
##     decompose, spectrum
## The following object is masked from 'package:base':
## 
##     union

Corremos el comando que tiene como input el relacionamiento calculado anteriormente con la regla binaria de manera no dirigida.

g1 = graph_from_adjacency_matrix (r, mode = "undirected")

Ahora graficamos. Se puede apreciar en el cuadrante de visualizaciones (plot).

plot(g1)