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 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 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 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 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)