GICUNED / GridFCM.practicum

GNU General Public License v3.0
0 stars 0 forks source link

Centralidad - Desarrollo de función para obtener P y H asociados los constructos de una wimp #10

Open churtado-gh opened 8 months ago

churtado-gh commented 8 months ago

Nombre de la función: ph_index()

Objetivo de la función: Obtener la presencialidad (P, frecuencia con la que aparece) y jerarquía (H, influencia sobre otros) de los constructos asociados a una rejilla de implicaciones.

Parámetros de la función:

Salida de la función: Matriz que contiene, por filas, los constructos del objeto wimp de entrada; y por columnas, los valores de P (Presencialidad) y H (Jerarquía) asociados a cada constructo según la rejilla de implicaciones dada

Requisitos previos al desarrollo: Función GridFCM.practicum::degree_index que proporciona el grado de conexiones de cada constructo con el resto (entrada, salida, total)

Comentarios: Los valores de P y H se estandarizarán dividiendo por el máximo valor de conexiones presente para un constructo del grafo

Pseudocódigo:

Extraer matrix de grado de conexiones con entradas, salidas y totales, según el método indicado en method, de los constructos de la rejilla wimp

Para cada constructo
Calcular P como producto escalar de los vectores (0.5sqrt(2),0.5sqrt(2) y
(cin , cout)
Calcular H como producto escalar de los vectores (-0.5sqrt(2),0.5sqrt(2)) y
(cin , cout)

Estandarizar P y H dividiendo por max(conexiones(ci))

Crea matriz whp.mat con columnas P y H por constructo

Devolver matriz whp.mat
Asanfe commented 8 months ago

Acabo de echar un vistazo al borrador del código que habéis subido:

index_ph <- function(wimp, method = "simple"){

  # Connectivity of constructs
  c.io <- degree_index(wimp, method = method)

  # Linear transformation matrix
  coef <- 0.5 * sqrt(2)
  mat.proy <- matrix(c(coef, coef, -coef, coef), nrow = 2, byrow = TRUE)

  # Extract In and Out columns
  in.out <- c.io[, 1:2]

  # Calculate p and h for each row
  p <- rowSums(in.out * c(coef, coef))
  h <- rowSums(in.out * c(-coef, coef))

  # Standardization
  max.total.deg <- max(c.io[, 3])
  p <- p / max.total.deg
  h <- h / max.total.deg

  # Create the new matrix with p and h dimensions
  ph.mat <- matrix(c(p, h), ncol = 2, byrow = FALSE,
                   dimnames = list(rownames(c.io), c("p", "h")))

  return(ph.mat)
}

Comentaros algunas cosas:

churtado-gh commented 8 months ago

Ok, creo que ya lo tenemos...