Solución
Aquí tienes el código en Python que realiza todos los cálculos solicitados:
import numpy as np
from scipy.stats import skew
series = [[78, 85, 91, 76, 84, 90, 72, 88, 95, 80, 89, 83, 77, 82, 74],
[55, 60, 58, 62, 65, 59, 54, 61, 67, 63, 57, 66, 64, 68, 69],
[82, 90, 78, 88, 95, 85, 87, 92, 91, 89, 84, 93, 80, 81, 94],
[45, 50, 52, 55, 53, 48, 49, 51, 47, 54, 56, 58, 59, 60, 62],
[90, 92, 88, 87, 95, 94, 93, 91, 96, 89, 85, 91, 90, 88, 92]]
mayor_media = [0, 0]
mayor_desviacion = [0, 0]
mayor_asimetria = [0, 0]
for i in range(len(series)):
media = np.mean(series[i])
desviacion = np.std(series[i])
asimetria = skew(series[i])
print(f"Serie {i}")
print(f"Media {media}")
print(f"Desviación típica {desviacion}")
print(f"Asimetría {asimetria}")
if media > mayor_media[1]:
mayor_media = [i, media]
if desviacion > mayor_desviacion[1]:
mayor_desviacion = [i, desviacion]
if abs(asimetria) > abs(mayor_asimetria[1]):
mayor_asimetria = [i, asimetria]
print(f"La mayor media la tiene la serie {mayor_media[0]} y vale {mayor_media[1]}")
print(f"La mayor desviacion la tiene la serie {mayor_desviacion[0]} y vale {mayor_desviacion[1]}")
print(f"La mayor asimetria la tiene la serie {mayor_asimetria[0]} y vale {mayor_asimetria[1]}")
Resultados Esperados
Al ejecutar el código anterior, obtendrás:
- La media de cada serie.
- La desviación estándar de cada serie.
- La asimetría de cada serie.
- Comparaciones que indicarán cuál serie tiene la media más alta, mayor dispersión y mayor asimetría.
Análisis
Con base en los resultados:
- Media: Te permitirá saber cuál serie tiene calificaciones más altas en promedio.
- Desviación estándar: Te permitirá evaluar qué serie es más variada o dispersa.
- Asimetría: Te ayudará a entender si las calificaciones en una serie son más propensas a tener valores extremos hacia un lado.
EL código optimizado:
import numpy as np
from scipy.stats import skew
# Definir las series de datos
series = {
"Serie A": np.array([78, 85, 91, 76, 84, 90, 72, 88, 95, 80, 89, 83, 77, 82, 74]),
"Serie B": np.array([55, 60, 58, 62, 65, 59, 54, 61, 67, 63, 57, 66, 64, 68, 69]),
"Serie C": np.array([82, 90, 78, 88, 95, 85, 87, 92, 91, 89, 84, 93, 80, 81, 94]),
"Serie D": np.array([45, 50, 52, 55, 53, 48, 49, 51, 47, 54, 56, 58, 59, 60, 62]),
"Serie E": np.array([90, 92, 88, 87, 95, 94, 93, 91, 96, 89, 85, 91, 90, 88, 92]),
}
# Almacenar resultados en un diccionario
resultados = {}
# Calcular medidas estadísticas para cada serie
for nombre, serie in series.items():
media = np.mean(serie)
desviacion_estandar = np.std(serie, ddof=1) # Muestra
asimetria = skew(serie)
resultados[nombre] = {
"media": media,
"desviacion_estandar": desviacion_estandar,
"asimetria": asimetria
}
# Función para encontrar la serie con el valor máximo de una clave específica
def encontrar_maximo(clave):
max_nombre = max(resultados, key=lambda x: abs(resultados[x][clave]))
return max_nombre, resultados[max_nombre][clave]
# Comparar medias
serie_media_maxima, media_maxima = encontrar_maximo("media")
print(f"\nLa {serie_media_maxima} tiene la media más alta: {media_maxima:.2f}")
# Comparar desviaciones estándar
serie_desviacion_maxima, desviacion_maxima = encontrar_maximo("desviacion_estandar")
print(f"La {serie_desviacion_maxima} tiene la mayor dispersión: {desviacion_maxima:.2f}")
# Comparar asimetrías
serie_asimetria_maxima, asimetria_maxima = encontrar_maximo("asimetria")
print(f"La {serie_asimetria_maxima} tiene más asimetría: {asimetria_maxima:.2f}")