= function(x, r, mp = 0) {
momentos = sum((x-mp)^r)/length(x)
m return(m)
}
= function(x, alfa = 0.95, graf = F) {
TODO = length(x)
n = momentos(x, 1)
media = median(x)
mediana = table(x)
tabla.estadistica = which.max(table(x))
posicion = as.double(rownames(tabla.estadistica)[posicion])
moda = momentos(x, 2, mean(x))
varianza = sqrt(varianza)
desv.tip = quantile(x, probs = 0.25)
Q1 = quantile(x, probs = 0.75)
Q3 = quantile(x, probs = alfa)
percentil.alfa = min(x)
minimo = max(x)
maximo = maximo - minimo
rango = as.numeric(Q3) - as.numeric(Q1)
rango.int = maximo/minimo
ca = rango/abs(media)
rango.re = desv.tip/abs(media)
cv = (media-moda)/desv.tip
pearson = momentos(x, 3, mean(x))
m3 = m3/(desv.tip^3)
simetria = momentos(x, 4, mean(x))
m4 = m4/(varianza^2) - 3
kurtosis library(ineq)
= ineq(x, type="Gini")
gini if(graf == T) {plot(Lc(x), col="red", lwd=2)}
= data.frame(n, media, mediana, moda, varianza, desv.tip, Q1, Q3, percentil.alfa, minimo, maximo, rango, rango.int, ca, rango.re, cv, pearson, simetria, kurtosis, gini)
salida rownames(salida) = c("")
return(salida)
}
Las representaciones gráficas del post anterior se basan, aunque no se haya dicho, en una serie de medidas (de posición, dispersión, forma o concentración) que resumen el conjunto de datos en unos pocos números. En este documento se tiene un resumen de los comandos de R que permite calcular dichas medidas.
A continuación se tiene una función que permite calcular las principales caractarísticas unidimensionales de un conjunto de datos:
Adviértase que dento de la función TODO se hace uso de la función momentos. Para poder usar dichas funciones, simplemente hay que copiarlas y pegarlas en la consola de R.
Se puede observar que se usa la función momentos para calcular la varianza, esto se debe a que si se usa el comando var de R lo que realmente se calcula es la cuasivarianza muestral (que es el estimador insesgado de la varianza poblacional):
set.seed(2022) # para que siempre se realicen los cálculos con los mismos datos aleatorios
= sample(1:1000, 100)
x momentos(x, 2, mean(x)) # varianza muestral
[1] 83871.95
var(x) # cuasivarianza muestral
[1] 84719.14
Entrando en faena, supongamos que tenemos la siguiente información sobre la altura y peso de 50 personas:
= c(172, 167, 174, 169, 178, 196, 160, 168, 172, 181, 180, 181, 188, 170, 171,
altura 160, 180, 177, 175, 186, 165, 180, 174, 180, 178, 179, 180, 180, 173, 165,
185, 165, 170, 174, 165, 168, 172, 181, 180, 181, 188, 170, 181, 180, 174,
180, 178, 179, 180, 180)
= c(60, 65, 75, 72, 78, 95, 50, 60, 74, 72, 70, 89, 100, 60, 73, 57,
peso 65, 95, 67, 82, 59, 97, 68, 75, 71, 95, 85, 82, 60, 61, 91, 53,
60, 67, 52, 60, 74, 72, 70, 89, 100, 60, 89, 97, 68, 75, 71, 95, 85, 82)
Para realizar un análisis estadístico unidimensional de cada variable es suficiente con usar el siguiente código:
# tabla = data.frame(t(TODO(altura, graf=T)), t(TODO(peso, graf=T)))
= data.frame(t(TODO(altura)), t(TODO(peso)))
tabla colnames(tabla) = c("Altura", "Peso")
round(tabla, digits = 3)
Altura Peso
n 50.000 50.000
media 175.800 74.440
mediana 178.000 72.000
moda 180.000 60.000
varianza 53.200 190.646
desv.tip 7.294 13.807
Q1 170.250 62.000
Q3 180.000 85.000
percentil.alfa 187.100 97.000
minimo 160.000 50.000
maximo 196.000 100.000
rango 36.000 50.000
rango.int 9.750 23.000
ca 1.225 2.000
rango.re 0.205 0.672
cv 0.041 0.185
pearson -0.576 1.046
simetria -0.023 0.281
kurtosis 0.077 -0.983
gini 0.023 0.106
No es la idea realizar aquí una interpretación exhaustiva de los resultados obtenidos, sin embargo, se podría decir (por ejemplo) que:
- El conjunto de datos de la altura es más homogéneo que el del peso.
- La altura más frecuente es 180 centímetros y el peso los 60 kilogramos.
- No hay individuos que superen los 196 centímetros ni los 100 kilogramos.
- El conjunto de datos referente a la altura tiene cierta asimetría a la izquierda, mientras que el del peso a la izquierda.
- El conjunto de datos referente a la altura es más apuntada que la normal, mientras que el del peso es más aplastada.
Con esta información se podrían contestar preguntas del tipo: ¿qué es más frecuente, los individuos altos o bajos? ¿los delgados o los gruesos? ¿es la media aritmética una medida de posición central representativa?
Incluso se podría empezar a plantear una análisis bidimensional, es decir, haciendo interactura a ambas variables. Así, por ejemplo, si se considera que una persona es baja si es inferior al percentil 25 y alta si supera el percentil 75, se podrían obtener las principales características del peso distinguiendo entre individuos altos, bajos y medios:
= ifelse(altura > quantile(altura, probs=0.75), "Alto",
alturas ifelse(altura < quantile(altura, probs=0.75), "Bajo", "Medio"))
tapply(peso, alturas, TODO)
$Alto
n media mediana moda varianza desv.tip Q1 Q3 percentil.alfa minimo maximo
10 87.9 89 89 89.69 9.47048 83.75 94 100 72 100
rango rango.int ca rango.re cv pearson simetria kurtosis
28 10.25 1.388889 0.3185438 0.1077415 -0.1161504 -0.5074032 -0.8301741
gini
0.05904437
$Bajo
n media mediana moda varianza desv.tip Q1 Q3 percentil.alfa minimo maximo
29 67.58621 67 60 137.1391 11.71064 60 73 95 50 95
rango rango.int ca rango.re cv pearson simetria kurtosis
45 13 1.9 0.6658163 0.1732697 0.6478046 1.002436 0.5882239
gini
0.09232935
$Medio
n media mediana moda varianza desv.tip Q1 Q3 percentil.alfa minimo
11 80.27273 82 70 100.9256 10.04617 72.5 85 97 65
maximo rango rango.int ca rango.re cv pearson simetria
97 32 12.5 1.492308 0.398641 0.1251505 1.022551 0.319055
kurtosis gini
-0.8953109 0.07000927
Pero de análisis bidimensional hablaremos en el siguiente post.