28/06/21
Abstract
La teoría mencionada puede revisarse en el volumen 4 de 2.1. Modelo lineal generalizado. Hacer click en Rpubs:: toc para ver otros documentos de posible interés.
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.
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.
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)
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")
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.
A continuación, de manera visual, se presentan las subredes para glm_packages:
plot(package_network, package = glm_packages)
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)
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:
package: nombre del paquete.
n_authors (básico): número de autores para el paquete.
n_imports (básico): número de paquetes que el paquete importa.
n_imported_by (básico): número de veces que el paquete es importado por otros paquetes.
n_suggests (básico): número de paquetes que el paquete sugiere.
n_suggested_by (básico): número de veces que el paquete es sugerido por otros paquetes.
n_depends (básico): número de paquetes de los cuales el paquete depende.
n_depended_by (básico): número de paquetes que tienen al paquete como dependencia.
n_enhances (básico): número de paquetes que el paquete mejora.
n_enhanced_by (básico): número de paquetes que han mejorado al paquete.
n_linking_to (básico): número de paquetes a los que se vincula el paquete.
n_linked_by (básico): número de paquetes por los que está vinculado el paquete.
betweenness (avanzado): la intermediación de paquetes en la red de paquetes; calculado por igraph::betweenness().
closeness (avanzado): la centralidad de proximidad del paquete en la red de paquetes; calculado por igraph::closeness().
page_rank (avanzado): el Google PageRank del paquete en la red de paquetes; calculado por igraph::page_rank().
degree (avanzado): the degree of the package in the package network; as computed by igraph::degree().
eigen_centrality (avanzado): el grado del paquete en la red de paquetes; calculado por igraph::eigen_centrality().
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")
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")
Figure 9.2: Distribución de los 20 paquetes más relevantes versus el número de paquetes que el paquete sugiere.
Actualizar regularmente la información descrita en el documento.
Realizar otros análisis de posible interés.
Consultar el documento RPubs :: Modelo lineal generalizado (bibliografía).
If you found any ERRORS or have SUGGESTIONS, please report them to my email. Thanks.