Función “adesc”

Función para realizar análisis descriptivo de datos.

Parámetros: adesc(data)

adesc <- function(x) {
  cat("ANÁLISIS DESCRIPTIVO", "\n")
  cat("\n")
  x <- na.omit(x)
  n <- length(x)
  cat("Número de datos (n):", length(x), "\n")
  cat("Promedio:", mean(x), "\n")                       
  cat("Mínimo:", min(x), "\n")
  cat("Cuantil 25:", quantile(x,0.25), "\n")
  cat("Mediana:", median(x), "\n")                      
  cat("Cuantil 75:", quantile(x,0.75), "\n")
  cat("Máximo:", max(x), "\n")
  cat("Varianza muestral:", var(x), "\n")               
  cat("Varianza poblacional:", var(x) * (n - 1) / n, "\n")
  cat("Desviación estándar muestral:", sd(x), "\n")     
  cat("Desviación estándar poblacional:", sqrt(var(x) * ((n - 1) / n)), "\n")
  cat("Coeficiente de variación:", (sd(x) / mean(x)) * 100, "\n")
  cat("Rango:", max(x) - min(x), "\n")
  cat("Error típico:", sd(x) / sqrt(n), "\n") 
  cat("Suma total:", sum(x), "\n")             
}

Ejemplo de aplicación:

set.seed(123)
data <- round(rnorm(30,247,0.5),0)
adesc(data)
## ANÁLISIS DESCRIPTIVO 
## 
## Número de datos (n): 30 
## Promedio: 246.9667 
## Mínimo: 246 
## Cuantil 25: 247 
## Mediana: 247 
## Cuantil 75: 247 
## Máximo: 248 
## Varianza muestral: 0.3781609 
## Varianza poblacional: 0.3655556 
## Desviación estándar muestral: 0.6149479 
## Desviación estándar poblacional: 0.6046119 
## Coeficiente de variación: 0.2490004 
## Rango: 2 
## Error típico: 0.1122736 
## Suma total: 7409

Función “decrograf”

Función para hacer grafo decorado.

Parámetros: decografo(grafo, lay, vs)

decografo <- function(grafo, lay, vs) {
    colores <- ifelse(vs < quantile(vs, probs = 0.25), adjustcolor("gray90", alpha.f = 0.7),
                  ifelse(vs >= quantile(vs, probs = 0.25) & vs < quantile(vs, probs = 0.50), adjustcolor("mistyrose", alpha.f = 0.7),
                         ifelse(vs >= quantile(vs, probs = 0.50) & vs <= quantile(vs, probs = 0.75), adjustcolor("plum", alpha.f = 0.7),
                                ifelse(vs > quantile(vs, probs = 0.75), adjustcolor("violetred", alpha.f = 0.7), "white"))))
    vercol <- colores[floor(vs)]
    sel_names_o <- names(sort(vs, decreasing = TRUE)[1:10])
    V(grafo)$label <- ifelse(V(grafo)$name %in% sel_names_o, V(grafo)$name, NA)
    V(grafo)$vertex.shape <- ifelse(V(grafo)$name %in% sel_names_o, "square", "circle")
    V(grafo)$size <- ifelse(V(grafo)$name %in% sel_names_o, 2*vs, vs)
    V(grafo)$color <- ifelse(V(grafo)$name %in% sel_names_o, (adjustcolor(vercol, alpha.f = 1)),
                             adjustcolor(vercol, alpha.f = 0.6))
    set.seed(123)
    plot(grafo, layout= lay, 
         edge.arrow.size=0.5, 
         vertex.label.cex = 1.5, 
         vertex.label.dist = 1,
         pos = 4,
         vertex.label.color="black", vertex.shape = V(grafo)$vertex.shape)
}

Ejemplo de aplicación:

suppressMessages(suppressWarnings(library(igraphdata)))
suppressMessages(suppressWarnings(library(igraph)))
data(karate);karate <- upgrade_graph(karate)
lay = layout_with_dh(karate)
lay = layout_nicely(karate)
vs =degree(karate, mode="in")
cat("Grafo decorado de los datos karate donde la magnitud de los nodos está ajustada por el grado de entrada. Los 10 nodos con mayor grado de entrada se visualizan con forma cuadrada")
## Grafo decorado de los datos karate donde la magnitud de los nodos está ajustada por el grado de entrada. Los 10 nodos con mayor grado de entrada se visualizan con forma cuadrada
decografo (karate, lay, vs)

Función “descmax”

Función que construye tabla de datos con mayor valor por cada variable incluida en la tabla de estudio.

Parámetros: descmax(df, ntv)

descmax <- function(df,ntv) {
mat <- matrix(0, nrow = ntv, ncol = ncol(df))
for (j in 1:ncol(df)) {
  sorted_indices <- order(df[, j], decreasing = TRUE)
  top_rows <- rownames(df)[sorted_indices[1:ntv]]
  mat[, j] <- top_rows
}
colnames(mat) <- colnames(df)
print(mat)
}

Ejemplo de aplicación:

La siguiente tabla presenta algunas características físicas de diez analgésicos: el peso molecular (g/mol), la solubilidad en agua a 25°C (mg/mL), el coeficiente de partición octanol-agua (logP) y el punto de fusión promedio (°C):

API_CF <- data.frame(
  Peso_Molecular <- c(206.29, 230.26, 180.16, 296.15, 254.28, 
                      151.16, 357.77, 351.4, 263.38),
  Solubilidad <- c(21, 0.1, 1.4, 0.01, 0.04, 14, 0.4, 0.25, 0.008),
  LogP = c(3.98, 3.0, 1.35, 4.51, 3.23, 0.45, 3.2, 1.4, 1.35),
  Punto_de_Fusion <-  c(77, 154, 137, 281, 96, 170, 157, 255, 182)
  )
rownames(API_CF) <- c("Ibuprofeno", "Naproxeno", "ASA", "Diclofenaco", 
                      "Ketoprofeno", "Paracetamol", "Indometacina", "Meloxicam", 
                      "Tramadol")
colnames(API_CF) <- c("Peso_Molecular", "Solubilidad", "LogP", "Punto_de_Fusion")
API_CF
##              Peso_Molecular Solubilidad LogP Punto_de_Fusion
## Ibuprofeno           206.29      21.000 3.98              77
## Naproxeno            230.26       0.100 3.00             154
## ASA                  180.16       1.400 1.35             137
## Diclofenaco          296.15       0.010 4.51             281
## Ketoprofeno          254.28       0.040 3.23              96
## Paracetamol          151.16      14.000 0.45             170
## Indometacina         357.77       0.400 3.20             157
## Meloxicam            351.40       0.250 1.40             255
## Tramadol             263.38       0.008 1.35             182

Se aplica la función “descmax” al dataframe API_CF y se visualizaran los 3 datos con mayores valores por cada variable incluida en la tabla de estudio.

descmax(API_CF,3)  
##      Peso_Molecular Solubilidad   LogP          Punto_de_Fusion
## [1,] "Indometacina" "Ibuprofeno"  "Diclofenaco" "Diclofenaco"  
## [2,] "Meloxicam"    "Paracetamol" "Ibuprofeno"  "Meloxicam"    
## [3,] "Diclofenaco"  "ASA"         "Ketoprofeno" "Tramadol"

Conclusiones: - Los 3 analgésicos con mayor peso molecular son Indometacina, Meloxicam y Diclofenaco. - Los 3 analgésicos con mayor solubilidad son Ibuprofeno, Paracetamol y ASA. - Los 3 analgésicos con mayor coeficiente de partición octanol-agua (logP) son Diclofenaco, Ibuprofeno y Ketoprofeno. - Los 3 analgésicos con mayor punto de fusión promedio son Diclofenaco, Meloxicam y Tramadol.

Función “descmin”

Función que construye tabla de datos con menor valor por cada variable incluida en la tabla de estudio.

Parámetros: descmin(df, ntv)

descmin <- function(df,ntv) {
mat <- matrix(0, nrow = ntv, ncol = ncol(df))
for (j in 1:ncol(df)) {
  sorted_indices <- order(df[, j], decreasing = FALSE)
  top_rows <- rownames(df)[sorted_indices[1:ntv]]
  mat[, j] <- top_rows
}
colnames(mat) <- colnames(df)
print(mat)
}

Ejemplo de aplicación:

Se aplica la función “descmin” al dataframe API_CF y se visualizaran los 3 datos con menores valores por cada variable incluida en la tabla de estudio.

descmin(API_CF,3)  
##      Peso_Molecular Solubilidad   LogP          Punto_de_Fusion
## [1,] "Paracetamol"  "Tramadol"    "Paracetamol" "Ibuprofeno"   
## [2,] "ASA"          "Diclofenaco" "ASA"         "Ketoprofeno"  
## [3,] "Ibuprofeno"   "Ketoprofeno" "Tramadol"    "ASA"

Conclusiones: - Los 3 analgésicos con menor peso molecular son Paracetamol, ASA e Ibuprofeno. - Los 3 analgésicos con menor solubilidad son Tramadol, Diclofenaco y Ketoprofeno. - Los 3 analgésicos con menor coeficiente de partición octanol-agua (logP) son Paracetamol, ASA y Tramadol. - Los 3 analgésicos con menor punto de fusión promedio son Ibuprofeno, Ketoprofeno y ASA.

Función “funhist”

Función para hacer histograma decorado.

Parámetros: funhist(data)

funhist <- function(data){
  q1 <- quantile(data, 0.25)
  q3 <- quantile(data, 0.75)
  breaks_RIC <- (q3-q1)/1.35
  breaks_sd <- sd(data)
  b <- 3.491*(min(breaks_RIC, breaks_sd))*(length(data)^(-1/3))
  br <- floor((max(data)-min(data))/b)
  h <- hist(data, breaks = br, plot=FALSE)
  hist(data, freq=FALSE, breaks=br,  
      col = adjustcolor("#00FF7F", alpha.f = 0.5),
      border = adjustcolor("#00FF7F", alpha.f = 0.5), 
      ylab = "Densidad", xlab = "Datos", ylim=c(0,(max(h$density)+0.2)), 
      main = paste("Histograma de", deparse(substitute(data))))
  li=mean(data)-(4*sd((data)))
  ls=mean(data)+(4*sd((data)))
  peso=seq(li, ls, length=2000)
  densidad_peso=dnorm(peso, mean(data), sd(data))
  lines(peso, densidad_peso, col="#00EE00")
  abline(v = quantile(x = data, probs = c(0.025,0.5,0.975)), col = c(2,4,2), lty = c(2,4,2),
         lwd = c(2,1,2))}

Ejemplo de aplicación:

set.seed(123)
data <- round(rnorm(100,250,0.5),2)
funhist(data)