Header Ads Widget

Ticker

6/recent/ticker-posts

Tutorial de desviación estándar de Python

 La desviación estándar le permite medir qué tan dispersos están los números en un conjunto de datos. Los valores grandes de las desviaciones estándar muestran que los elementos de un conjunto de datos están más separados de su valor medio. En este tutorial, calcularemos la desviación estándar usando Python

Las pequeñas desviaciones estándar muestran que los elementos no se desvían significativamente del valor medio de un conjunto de datos.

Terminología

Hay dos nociones de desviación estándar en estadística.

Uno es la desviación estándar de la  población . Calcula la dispersión directamente a partir de todos los valores de una población. Lo usa cuando los valores que tiene a mano representan a toda la población.

Otro es la desviación estándar de la  muestra . Intenta estimar la dispersión de la población utilizando solo un subconjunto de valores de muestra. Lo usa cuando los valores que tiene a mano representan solo un subconjunto de toda la población.

La desviación estándar de la muestra es una medida aproximada. Es útil porque, con frecuencia, la población de datos es demasiado grande y solo podemos medir directamente una muestra aleatoria de la misma.

Las desviaciones estándar de la población y la muestra se calculan utilizando algoritmos ligeramente diferentes. Por lo tanto, al programar, siempre debe tener en cuenta cuál desea calcular y llamar a las API adecuadas.

Desviación estándar en Python

Desde la versión 3.x, Python incluye un  módulo de estadísticas ligero  en una distribución predeterminada. Este módulo proporciona muchas funciones útiles para cálculos estadísticos.

También hay un paquete de estadísticas con todas las funciones  NumPy , que es especialmente popular entre los científicos de datos.

Este último tiene más funciones pero también representa una dependencia más masiva en su código.

Calcular para una lista

El cálculo de   la desviación estándar de la muestra en una lista de valores en Python se puede lograr con la función statistics.stdev ().

1
2
3
import statistics
 
statistics.stdev([5.12, -34.11, 32.43, -1.3, 7.83, -0.32])

La  desviación estándar de la población se calcula utilizando estadísticas de función ligeramente diferentes.pstdev ().

1
2
3
import statistics
 
statistics.pstdev([5.12, -34.11, 32.43, -1.3, 7.83, -0.32])

En los ejemplos que siguen, mostraremos cómo aplicar la función statistics.stdev () a diferentes tipos de datos de Python. Si necesita calcular la desviación estándar de la población, utilice la función statistics.pstdev () en su lugar. El resto del código debe ser idéntico.

Otra opción para calcular una desviación estándar para una lista de valores en Python es usar un paquete científico NumPy.

No viene con Python de forma predeterminada y debe instalarlo por separado. La forma habitual de instalar paquetes de terceros en Python es utilizar un   pip del instalador de paquetes de Python .

1
pip3 install numpy

Después de instalar NumPy, calcular la desviación estándar es trivial. Tenga en cuenta que numpy.std calcula   la desviación estándar de la población de forma predeterminada.

1
2
3
import numpy
 
numpy.std([5.12, -34.11, 32.43, -1.3, 7.83, -0.32])

Si desea calcular una   desviación estándar de la muestra utilizando el paquete NumPy, tendrá que pasar un argumento adicional ddof con un valor de 1. ddof significa  grados de libertad delta , que es una noción estadística utilizada para estimar estadísticas de poblaciones a partir de muestras de ellos.

1
2
3
import numpy
 
numpy.std([5.12, -34.11, 32.43, -1.3, 7.83, -0.32], ddof=1)

Calcular para una matriz

Si trabaja con grandes conjuntos de datos, las matrices de Python pueden ser más convenientes que sus listas más populares.

También puede realizar una operación aritmética en variables de matriz como si fueran valores singulares. En ese caso, se aplicará una operación aritmética a cada valor de una matriz de forma independiente.

En el siguiente ejemplo, también pasamos un argumento d a un constructor de matriz para indicar que nuestros valores son de tipo double.

1
2
3
4
5
import statistics
 
from array import array
 
statistics.pstdev(array('d', [5.12, -34.11, 32.43, -1.3, 7.83, -0.32]))

numpy.std también funciona con valores de matriz.

1
2
3
4
5
import numpy
 
from array import array
 
numpy.std(array('d', [5.12, -34.11, 32.43, -1.3, 7.83, -0.32]), ddof=1)

Calcular para valores de diccionario

A veces, sus datos se almacenan en una estructura de datos de valor clave como el dictado de Python, en lugar de una estructura de datos secuenciales como una lista.

Por ejemplo, puede tener una estructura de datos que asigne a los estudiantes a los puntajes de sus exámenes, como se muestra en la imagen siguiente.

Si desea calcular una desviación estándar de los puntajes de las pruebas de todos los estudiantes, puede hacerlo llamando a statistics.pstdev en los valores del diccionario, sin las claves. Para eso, llame a la función dict.values ​​() incorporada de Python.

1
2
3
4
5
import statistics
 
scores = {'Kate': 73, 'Alex': 56, 'Cindy': 98}
 
statistics.pstdev(scores.values())

Calcular para una matriz

Para trabajar con matrices, es mejor recurrir al paquete NumPy. NumPy proporciona un tipo de datos numpy.matrix diseñado específicamente para trabajar con matrices.

Generemos una matriz cuadrada de 4 × 4.

1
2
3
import numpy
 
m = numpy.matrix('4 7 2 6, 3 6 2 6, 0 0 1 3, 4 6 1 3')

Con matrices, hay tres formas de calcular las desviaciones estándar.

Puede calcular las desviaciones estándar por columna (numpy.matrix.std (0)), por fila (numpy.matrix.std (1)) o para todos los elementos, como si la matriz fuera un vector (numpy.matrix.std () ).

1
2
3
4
5
6
7
8
9
import numpy
 
m = numpy.matrix('4 7 2 6; 3 6 2 6; 0 0 1 3; 4 6 1 3')
 
m.std(0) # by column
 
m.std(1) # by row
 
m.std()  # for all elements

Calcular para la serie Pandas

pandas.Series es una matriz unidimensional con etiquetas de eje. Se basa en numpy.ndarray.

Una de sus aplicaciones es trabajar con datos de series de tiempo.

Calcular la  desviación estándar de la muestra de pandas.Series es fácil.

1
2
3
4
5
import pandas
 
s = pandas.Series([12, 43, 12, 53])
 
s.std()

Si necesita calcular la  desviación estándar de la población , simplemente pase un argumento ddof adicional como el siguiente.

1
2
3
4
5
import pandas
 
s = pandas.Series([12, 43, 12, 53])
 
s.std(ddof=0)

Calcular para Pandas DataFrame

pandas.DataFrame es una estructura de datos tabulares bidimensional, que permite realizar fácilmente operaciones aritméticas tanto en filas como en columnas.

Su analogía más cercana en Python puro es el tipo de datos dict.

Creemos un objeto DataFrame que represente los puntajes de las pruebas de los estudiantes, como hicimos en el ejemplo anterior.

01
02
03
04
05
06
07
08
09
10
11
import pandas
 
scores = {
 
  'Name': ['Kate', 'Alex', 'Cindy'],
 
  'Math Score': [73, 56, 98],
 
  'History Score': [84, 99, 95]}
 
df = pandas.DataFrame(scores)

Ahora podemos calcular   las desviaciones estándar de muestra para cada materia, es decir, matemáticas e historia. Tenga en cuenta que serán cálculos por filas.

01
02
03
04
05
06
07
08
09
10
11
12
13
import pandas
 
scores = {
 
  'Name': ['Kate', 'Alex', 'Cindy'],
 
  'Math Score': [73, 56, 98],
 
  'History Score': [84, 99, 95]}
 
df = pandas.DataFrame(scores)
 
df.std()

Alternativamente, podemos calcular  las desviaciones estándar de la muestra por persona. Para eso, pasaremos un argumento de eje adicional con un valor igual a 1. Tenga en cuenta que en este caso, serán cálculos por columna.

01
02
03
04
05
06
07
08
09
10
11
12
13
import pandas
 
scores = {
 
  'Name': ['Kate', 'Alex', 'Cindy'],
 
  'Math Score': [73, 56, 98],
 
  'History Score': [84, 99, 95]}
 
df = pandas.DataFrame(scores)
 
df.std(axis=1)

En la imagen de arriba, puede ver que Alex tiene la desviación estándar más alta de 30,4. Tiene sentido, porque la extensión en sus puntajes es mucho mayor en comparación con Kate y Cindy.

Todos los anteriores fueron   desviaciones estándar de la muestra . Para calcular una   desviación estándar de población , pase un argumento ddof adicional con un valor igual a 0 como de costumbre.

01
02
03
04
05
06
07
08
09
10
11
12
13
import pandas
 
scores = {
 
  'Name': ['Kate', 'Alex', 'Cindy'],
 
  'Math Score': [73, 56, 98],
 
  'History Score': [84, 99, 95]}
 
df = pandas.DataFrame(scores)
 
df.std(ddof=0)

En las siguientes tres secciones nos centraremos en decir las diferencias entre la desviación estándar y otras medidas estadísticas agregadas como la media, el promedio y la mediana.

Desviación estándar versus media (promedio)

Como se mencionó anteriormente, la desviación estándar es una medida de cuán dispersos están los números en un conjunto de datos. Otra interpretación de la desviación estándar es qué tan lejos está cada elemento en un conjunto de datos del   valor medio de este conjunto de datos.

¿Cuál es la  media ? El número medio es solo un concepto abstracto que intenta estimar un valor promedio en un conjunto de datos. Se obtiene sumando todos los números en un conjunto de datos y dividiendo el resultado por la cantidad de estos números (es decir, el tamaño del conjunto de datos).

A continuación se muestra un ejemplo de cómo obtendría un número medio para un conjunto de datos. También puede ver que el valor de desviación estándar para este conjunto de datos es bastante diferente de su valor medio.

01
02
03
04
05
06
07
08
09
10
11
12
dataset = [2, 4, 5, 1, 6]
 
mean = sum(dataset) / len(dataset)
 
print(mean)
 
 
import statistics
 
std_dev = statistics.stdev(dataset)
 
print(std_dev)

Desviación estándar frente a mediana

La mediana  es otra medida agregada en estadística. Tiene la intención de expresar la noción de un   número promedio . Sin embargo, es diferente del   número medio .

Imagina que tienes un conjunto de datos y organizaste todos los números en este conjunto de datos en un orden no decreciente. Por ejemplo [1, 2, 4, 5, 6].

Puede ver que 4 cae justo en el medio de este conjunto de datos ordenados. Dicho número, que se encuentra en el medio de un conjunto de datos después de haberlo organizado en orden no decreciente, se denomina   valor mediano de este conjunto de datos.

Si el tamaño del conjunto de datos es par, como en [1, 2, 4, 5, 6, 7], terminará teniendo dos números en el medio, en este caso, 4 y 5. En tal caso, calcula el  valor de la  mediana como el   valor medio de estos dos números, es decir, 4,5 en este ejemplo.

A continuación se muestra un ejemplo de cómo calcular el valor mediano de un conjunto de datos. Tenga en cuenta que nuevamente es bastante diferente de la desviación estándar.

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
dieciséis
17
18
19
20
21
22
23
24
25
26
27
import statistics
 
odd_dataset = [2, 4, 5, 1, 6]
 
odd_median = statistics.median(odd_dataset)
 
print(odd_median)
 
 
 
 
even_dataset = [2, 4, 5, 1, 6, 7]
 
even_median = statistics.median(even_dataset)
 
print(even_median)
 
 
 
 
odd_std_dev = statistics.stdev(odd_dataset)
 
print(odd_std_dev)
 
even_std_dev = statistics.stdev(even_dataset)
 
print(even_std_dev)

Desviación estándar agrupada

A veces, cuando tiene varias muestras de sus datos, querrá estimar la desviación estándar de su población utilizando todas esas desviaciones estándar de la muestra. Este es el escenario en el que   la desviación estándar combinada resulta útil.

La   desviación estándar combinada es solo un promedio ponderado de todas  las desviaciones estándar de la  muestra . Cuantos más elementos haya en una muestra, más ponderación le dará a la desviación estándar de esta muestra en el cálculo de la desviación estándar combinada.

A continuación se muestra un ejemplo de cómo se puede calcular la desviación estándar combinada.

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
dieciséis
17
18
19
import math
 
import statistics
 
sample1 = [1, 2, 3]
 
sample2 = [1, 2, 3, 10, 20, 30]
 
s1 = statistics.stdev(sample1)
 
print(s1)
 
s2 = statistics.stdev(sample2)
 
print(s2)
 
pooled_std = math.sqrt(((len(sample1) - 1) * (s1 ** 2) + (len(sample2) - 1) * (s2 ** 2)) / (len(sample1) - 1 + len(sample2) - 1))
 
print(pooled_std)

Trazar barras de error y desviación estándar

Si desea trazar datos estadísticos en Python, puede utilizar la biblioteca de trazado matplotlib 2D.

Instala  matplotlib  usando el comando pip3 install matplotlib en su terminal.

1
pip3 install matplotlib

Creemos una gráfica de los valores medios de los puntajes de los estudiantes por materia y usemos la desviación estándar para mostrar nuestros rangos de confianza (también conocidos como  barras de error ).

Preparemos los datos como en el siguiente ejemplo. Calcule las medias y las desviaciones estándar de las puntuaciones por materia.

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
dieciséis
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
import statistics
 
math_scores = [73, 56, 98, 23, 14]
 
history_scores = [84, 99, 95, 34, 10]
 
english_scores = [89, 98, 99, 67, 56]
 
 
 
 
math_mean = statistics.mean(math_scores)
 
history_mean = statistics.mean(history_scores)
 
english_mean = statistics.mean(english_scores)
 
 
 
 
math_stdev = statistics.stdev(math_scores)
 
history_stdev = statistics.stdev(history_scores)
 
english_stdev = statistics.stdev(english_scores)
 
 
 
 
x = [0, 1, 2]
 
y = [math_mean, history_mean, english_mean]
 
yerr = [math_stdev, history_stdev, english_stdev]

Luego conecte x, y y yerr como entradas a la función matplotlib.pyplot.errorbar (). matplotlib.pyplot.show () mostrará un gráfico de barras de error agradable.

1
2
3
4
5
import mathplotlib.pyplot as plot
 
plot.errorbar(x, means, std, linestyle='None', marker='^')
 
plot.show()

Espero que el tutorial te resulte útil. Sigue regresando.

Publicar un comentario

0 Comentarios