hllinas

1 Introducción

En la sección 26.5 del manual de Rpubs se describió el modelo lineal generalizado o, más brevemente, GLM (en inglés: General Linear Model). Se explicó su definición, las componentes que lo conforman. De igual manera, se detallaron algunos tipos particualres de GLM y por último se explicó muy brevemente su aplicación con R a través de la función glm().

Continuando con esa metodología, este documento contiene un análisis muy rápido de todos los paquetes CRAN que tienen “glm” en su nombre. Supondremos que si hay un paquete que contiene “glm” en su nombre es porque está relacionado con los GLMs. En las referencias de abajo se pueden encontrar más detalles al respecto.

2 CRAN_package_db

Ejecutamos el siguientes código para descargar toda la base de datos del CRAN. Se necesita instalar la librería cranly.

library("cranly")

BD <- tools::CRAN_package_db()

Se resalta que tools::CRAN_package_db() es un data frame donde encontramos las herramientas para obtener información sobre los paquetes actuales en el repositorio de paquetes CRAN y su estado de verificación.

3 clean_CRAN_db

Con la función clean_CRAN_db() limpiamos los nombres de los autores y los nombres de los paquetes en las diferentes directivas (como Imports, Depends, Suggests, Enhances, LinkingTo). A través de esta función, obtenemos un data.frame, organizado de la clase cranly_db que puede ser utilizado para un análisis más detallado.

package_db <- clean_CRAN_db(BD)

4 build_network

Con build_network() sae crea un objeto Red, que es una lista con dos data frames: edges (bordes) y nodes (nodos). En nuestro caso, se crearon dos redes: una con los paquetes y otra, con los autores.

package_network <- build_network(package_db)
author_network <- build_network(package_db, perspective = "author")

5 glm_packages

Después de filtrar toda la base de datos que hay en la CRAN, se presentan los paquetes que, hasta la fecha, contienen “glm” en su nombre:

glm_packages <- package_with(package_network, name = "glm")
glm_packages
##  [1] "aglm"            "AutoStepwiseGLM" "bestglm"         "biglm"          
##  [5] "biglmm"          "brglm"           "brglm2"          "cglm"           
##  [9] "circglmbayes"    "CPMCGLM"         "dbglm"           "dglm"           
## [13] "DGLMExtPois"     "dhglm"           "distribglm"      "EBglmnet"       
## [17] "eventglm"        "ezglm"           "fastglm"         "gglm"           
## [21] "glm.deploy"      "glm.predict"     "glm2"            "GLMaSPU"        
## [25] "glmbb"           "glmc"            "GLMcat"          "glmdisc"        
## [29] "glmdm"           "glme"            "glmertree"       "glmGamPoi"      
## [33] "glmglrt"         "glmlep"          "glmm"            "GLMMadaptive"   
## [37] "glmmADMB"        "glmmboot"        "glmmEP"          "glmmfields"     
## [41] "glmmLasso"       "glmmML"          "GLMMRR"          "glmmSeq"        
## [45] "glmmsr"          "glmmTMB"         "glmnet"          "glmnetcr"       
## [49] "glmnetUtils"     "GLMpack"         "glmpath"         "glmpathcr"      
## [53] "glmpca"          "GLMsData"        "GlmSimulatoR"    "glmtlp"         
## [57] "glmtoolbox"      "glmtrans"        "glmtree"         "glmulti"        
## [61] "glmvsd"          "glmx"            "HBglm"           "HDGLM"          
## [65] "hdpGLM"          "hglm"            "hglm.data"       "icdGLM"         
## [69] "lsplsGlm"        "mbrglm"          "mcemGLM"         "MCMCglmm"       
## [73] "mdhglm"          "MGLM"            "mglmn"           "misclassGLM"    
## [77] "mvglmmRank"      "oglmx"           "parglm"          "pglm"           
## [81] "plsRglm"         "poisson.glm.mix" "prettyglm"       "QGglmm"         
## [85] "r2glmm"          "robmixglm"       "RPEGLMEN"        "simglm"         
## [89] "speedglm"        "SplitGLM"        "StroupGLMM"

Observamos que hay 91 paquetes con las características anteriores.

6 glm_package_network

A continuación, de manera visual, se presentan las subredes para glm_packages:

plot(package_network, package = glm_packages)

7 glm_package_only_network

Ahora, de manera también visual, se presentan las subredes que tienen bordes solamente entre los paquetes que pertenecen a glm_packages:

glm_package_only_network <- subset(package_network, package = glm_packages, only = TRUE)
plot(glm_package_only_network, package = glm_packages)

8 summary(glm_package_network)

Con el código de abajo se puede computar un rango de directivas de paquetes y estadísticas de redes de colaboración cuando el punto de partida son los paquetes.

glm_package_network <- subset(package_network, package = glm_packages)
glm_package_summaries <- summary(glm_package_network)
names(glm_package_summaries)
##  [1] "package"          "n_authors"        "n_imports"        "n_imported_by"   
##  [5] "n_suggests"       "n_suggested_by"   "n_depends"        "n_depended_by"   
##  [9] "n_enhances"       "n_enhanced_by"    "n_linking_to"     "n_linked_by"     
## [13] "betweenness"      "closeness"        "page_rank"        "degree"          
## [17] "eigen_centrality"

Se observa que obtenemos un listado, con las siguientes variables:

  1. package: nombre del paquete.

  2. n_authors (básico): número de autores para el paquete.

  3. n_imports (básico): número de paquetes que el paquete importa.

  4. n_imported_by (básico): número de veces que el paquete es importado por otros paquetes.

  5. n_suggests (básico): número de paquetes que el paquete sugiere.

  6. n_suggested_by (básico): número de veces que el paquete es sugerido por otros paquetes.

  7. n_depends (básico): número de paquetes de los cuales el paquete depende.

  8. n_depended_by (básico): número de paquetes que tienen al paquete como dependencia.

  9. n_enhances (básico): número de paquetes que el paquete mejora.

  10. n_enhanced_by (básico): número de paquetes que han mejorado al paquete.

  11. n_linking_to (básico): número de paquetes a los que se vincula el paquete.

  12. n_linked_by (básico): número de paquetes por los que está vinculado el paquete.

  13. betweenness (avanzado): la intermediación de paquetes en la red de paquetes; calculado por igraph::betweenness().

  14. closeness (avanzado): la centralidad de proximidad del paquete en la red de paquetes; calculado por igraph::closeness().

  15. page_rank (avanzado): el Google PageRank del paquete en la red de paquetes; calculado por igraph::page_rank().

  16. degree (avanzado): the degree of the package in the package network; as computed by igraph::degree().

  17. eigen_centrality (avanzado): el grado del paquete en la red de paquetes; calculado por igraph::eigen_centrality().

9 Plot summary(glm_package_network)

En la Figura 9.1 se muestra la distribución de los 20 paquetes más importantes en la CRAN (relacionados con glm), de acuerdo al número de veces en que fueron importados por otros paquetes.

plot(glm_package_summaries, according_to = "n_imported_by")
Distribución de los 20 paquetes más relevantes versus el número de veces importados por otros.

Figure 9.1: Distribución de los 20 paquetes más relevantes versus el número de veces importados por otros.

En la Figura 9.2 se muestra la distribución de los 20 paquetes más importantes en la CRAN (relacionados con glm), de acuerdo al número de paquetes que el paquete sugiere.

plot(glm_package_summaries, according_to = "n_suggests")
Distribución de los 20 paquetes más relevantes versus el número de paquetes que el paquete sugiere.

Figure 9.2: Distribución de los 20 paquetes más relevantes versus el número de paquetes que el paquete sugiere.

10 summary(glm_author_network)

Con el código de abajo se puede computar un rango de directivas de paquetes y estadísticas de redes de colaboración cuando el punto de partida son los autores.

glm_author_network <- subset(author_network, package = glm_packages)
glm_author_summaries <- summary(glm_author_network)
names(glm_author_summaries)
## [1] "author"           "n_packages"       "n_collaborators"  "betweenness"     
## [5] "closeness"        "page_rank"        "degree"           "eigen_centrality"

Se observa que obtenemos un listado, con las siguientes variables:

  1. author. nombre del autor.

  2. n_packages (básico): número de paquetes en donde el autor aparece como autor de los paquetes.

  3. n_collaborators (básico): número total de co-autores que el autor tiene en el CRAN.

  4. betweenness (avanzado): la intermediación del autor en la red de autores; calculado por igraph::betweenness().

  5. closeness (avanzado): la centralidad de cercanía del autor en la red de autores; calculado por igraph::closeness().

  6. page_rank (avanzado): el Google PageRank del autor en la red de autores; calculado por igraph::page_rank().

  7. degree (avanzado): el grado del autor en la red de autores; calculado por igraph::degree(); lo mismo que n_collaborators.

  8. eigen_centrality (avanzado): la puntuación de centralidad del vector propio del autor en la red de autores; calculado por igraph::eigen_centrality().

11 Plot summary(glm_author_network)

En la Figura 11.1 se muestra la distribución de los 20 colaboradores de la CRAN (relacionados con glm), de acuerdo al número de co-autores que el autor tiene en la CRAN.

plot(glm_author_summaries, according_to = "n_collaborators")
Distribución de los 20 autores más relevantes versus el número de co-autores que el autor tiene en la CRAN.

Figure 11.1: Distribución de los 20 autores más relevantes versus el número de co-autores que el autor tiene en la CRAN.

En la Figura 11.2 se muestra la distribución de los 20 colaboradores de la CRAN (relacionados con glm), de acuerdo al número número de paquetes en donde el autor aparece como autor de los paquetes.

plot(glm_author_summaries, according_to = "n_packages")
Los 20 autores más relevantes versus número de paquetes en donde el autor aparece como autor de los paquetes.

Figure 11.2: Los 20 autores más relevantes versus número de paquetes en donde el autor aparece como autor de los paquetes.

12 Ejercicios

  1. Actualizar regularmente la información descrita en el documento.

  2. Realizar otros análisis de posible interés.

Bibliografía

Consultar el documento RPubs :: Modelo lineal generalizado (bibliografía).

 

 
If you found any ERRORS or have SUGGESTIONS, please report them to my email. Thanks.