No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Varianza y desviación estándar muestral

8/22
Recursos

Aportes 22

Preguntas 1

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

o inicia sesión.

Me llamaba la atención que no me coincidía el valor de la varianza con el de la profesora. Ya encontré el error: Las edades que pone en el cálculo del ejemplo en el minuto 2:34 no son los mismos que al inicio del ejemplo.

Mi tarea:

Aporte:

population = pd.Series([7, 10, 12, 13, 16, 9, 8, 12, 8, 6, 16, 23, 11, 17, 20, 21, 25, 30, 31, 33, 37, 39, 27, 36, 40, 43, 41, 45])

def promedio_population(population):
    sum_population = 0
    for i in population:
        sum_population += i
    resultado_promedio = sum_population/len(population)
    return resultado_promedio

def varianza_muestral_population(population, promedio):
    promedio = promedio
    suma = 0
    for i in population:
        a = (i - promedio)**2
        suma += a
    resultado_varianza_muestral = suma/len(population)
    return resultado_varianza_muestral

def desviacion_estandar_muestral(varianza):
    resultado_desviacion_muestral = pow(varianza,0.5)
    return resultado_desviacion_muestral
    
promedio = promedio_population(population) 
varianza_muestral = varianza_muestral_population(population, promedio)
desviacion_muestral = desviacion_estandar_muestral(varianza_muestral)

print(f'''--------Resultados poblacion global--------
La media es: {promedio:.2f}
La varianza muestral es: {varianza_muestral:.2f}
La desviacion estandar es: {desviacion_muestral:.2f}
''')


muestra_20 = population.sample(frac=0.2)

promedio = promedio_population(muestra_20) 
varianza_muestral = varianza_muestral_population(muestra_20, promedio)
desviacion_muestral = desviacion_estandar_muestral(varianza_muestral)

print(f'''--------Resultados muestra 20% --------
La media es: {promedio:.2f}
La varianza muestral es: {varianza_muestral:.2f}
La desviacion estandar es: {desviacion_muestral:.2f}
''')

![](

Qué tal, agrego mi código con los siguientes cálculos:

  • cálculo de la media respecto a una muestra simple
  • cálculo de la varianza de un mestreo sistemático
  • cálculo de la desviación estándar de un muestreo simple fraccionado

Para hacer cálculos estadísticos sin una muestra, sólo hay que cambiar la variable muestra
a false (creo)

Hola

Hay un pequeño error en los slides. Dado que estamos calculando la varianza muestral para la formula debemos usar el valor de la media muestral. Por tal razón, si la muestra es: [28, 24, 28, 24, 28, 24]. Entonces el valor de la media seria de 26. Y el valor de la varianza seria: 4.8

Lo hice con NumPy y la verdad es que una delicia hacer todo de esa manera y en una sola línea de código:

import pandas as pd
import numpy as np

#Lista del ejercicio 1
population = np.array([7, 10, 12, 13, 16, 9, 8, 12, 8, 6, 16, 23, 11, 17, 20, 21, 25, 30, 31, 33, 37, 39, 27, 36, 40, 43, 41, 45])
population

#promedio con NumPy
mean = population.mean()
print(mean)

22.714285714285715

#varianza con NumPy
varianza = population.var()
print(varianza)

155.06122448979593

#desviación estándar con NumPy
desviación = population.std()
print(desviación)

12.452358189909088

#Lista del ejercicio 2
pop = pd.Series([7, 10, 12, 13, 16, 9, 8, 12, 8, 6, 16, 23, 11, 17, 20, 21, 25, 30, 31, 33, 37, 39, 27, 36, 40, 43, 41, 45])
sam_dos = pop.sample(frac=0.2)
#promedio con NumPy
media = sam_dos.mean()
print(media)

20.5

#varianza con NumPy
var_sam = sam_dos.var()
print(var_sam)

164.3

#desviación estándar con NumPy
des_sam = sam_dos.std()
print(des_sam)

12.817956155331473

  • Para calcular la varianza y desviación estándar de una población de datos, se utilizan las siguientes fórmulas:

Varianza (σ²):

σ² = (x1 - x̄)² + (x2 - x̄)² + (x3 - x̄)² + ... + (xn - x̄)² / n

Desviación estándar (σ):
σ = √σ²

  • donde x1, x2, x3, …, xn son los valores de los datos de la población, x̄ es la media de la población, y n es el tamaño de la población.

  • Para calcular la varianza y desviación estándar de la población de datos: 7, 10, 12, 13, 16, 9, 8, 12, 8, 6, 16, 23, 11, 17, 20, 21, 25, 30, 31, 33, 37, 39, 27, 36, 40, 43, 41, 45:

alcular la media de la población:

x̄ = (7 + 10 + 12 + 13 + 16 + 9 + 8 + 12 + 8 + 6 + 16 + 23 + 11 + 17 + 20 + 21 + 25 + 30 + 31 + 33 + 37 + 39 + 27 + 36 + 40 + 43 + 41 + 45) / 36 = 21.58

Calcular la varianza:

σ² = (7 - 21.58)² + (10 - 21.58)² + (12 - 21.58)² + … + (45 - 21.58)² / 36

Hola! Comparto mi solución al reto:

Ejercicio A

poblacion = [7, 10, 12, 13, 16, 9, 8, 12, 8, 6,
             16, 23, 11, 17, 20, 21, 25, 30, 31,
             33, 37, 39, 27, 36, 40, 43, 41, 45]
def media_poblacional(poblacion):
  media = sum(poblacion) / len(poblacion)
  return media

def varianza_poblacional(poblacion):
  media = sum(poblacion) / len(poblacion)
  var = sum([pow(i - media,2) for i in poblacion]) / len(poblacion)
  return var

def desviacion_poblacional(poblacion):
  media = sum(poblacion) / len(poblacion)
  sd = pow(sum([pow(i - media,2) for i in poblacion]) / len(poblacion), 1/2)
  return sd
print('La media de la población es: ', round(media_poblacional(poblacion),2))
print('La varianza de la población es: ', round(varianza_poblacional(poblacion),2))
print('La desviación estandar de la población es: ', round(desviacion_poblacional(poblacion),2))

Ejercicio B

from random import sample
muestra = sample(poblacion, 16)
muestra
def media_muestral(muestra):
  media = sum(muestra) / len(muestra)
  return media

def varianza_muestral(muestra):
  media = sum(muestra) / len(muestra)
  var = sum([pow(i - media,2) for i in muestra]) / (len(muestra) - 1)
  return var

def desviacion_muestral(muestra):
  media = sum(muestra) / len(muestra)
  sd = pow(sum([pow(i - media,2) for i in muestra]) / (len(muestra) - 1), 1/2)
  return sd
print('La media de la muestra es: ', round(media_muestral(muestra),2))
print('La varianza de la muestra es: ', round(varianza_muestral(muestra),2))
print('La desviación estandar de la muestra es: ', round(desviacion_muestral(muestra),2))

Varianza y desviación estándar muestral

  • Indica que tan dispersos están los datos respecto a la media.
  • La desviación estándar es la raíz cuadrada de la varianza.
  • Ejemplo: edades de la población de una ciudad.
import numpy as np

a = np.array([7, 10, 12, 13, 16, 9, 8, 12, 8, 6,16, 23, 11, 17, 20, 21, 25, 30, 31,33, 37, 39, 27, 36, 40, 43, 41, 45])

print(a.var(ddof=0), a.std(ddof=0))
print(a.var(ddof=1), a.std(ddof=1))

var_p: 155.0612244897959 | std_p: 12.452358189909088
var_s: 160.8042328042328 | std_s: 12.680860885769263

Reto cumplido!

porque el -1 en la muestra

básicamente es porque al tomar una muestra en especial las pequeñas la probabilidad de elegir una muestra que este muy junta y me desestime la varianza, por ejemplo 22-21-23 lo que me daría un valor muy pequeño 0.6 (sin el -1), en estos casos el -1 aumentaría el estimado a 1 algo que es mucho mas probable al tener una muestra tan pequeña.

En el otra lado si tengo una muestra muy grande la probabilidad de haber escogido una muestra muy junta es mucho menor, por lo que el efecto que tiene el -1 es mucho menor , por ejemplo (21 21 21 21 22 22 22 22 23 23 23 23) donde el valor de la varianza sin el -1 es 0.5 mientras que con el -1 0.53.

si quieren una mejor explicacion les recomiendo este video

Solución al reto:

import numpy as np        #importamos la libreria
import pandas as pd
poblacion=np.array([7, 10, 12, 13, 16, 9, 8, 12, 8, 6,      #creamos el arreglo con los datos indicados
  16, 23, 11, 17, 20, 21, 25, 30, 31,
  33, 37, 39, 27, 36, 40, 43, 41, 45])
print(poblacion)

poblacion1 = pd.Series(poblacion)
print(poblacion1)
[ 7 10 12 13 16  9  8 12  8  6 16 23 11 17 20 21 25 30 31 33 37 39 27 36
 40 43 41 45]
0      7
1     10
2     12
3     13
4     16
5      9
6      8
7     12
8      8
9      6
10    16
11    23
12    11
13    17
14    20
15    21
16    25
17    30
18    31
19    33
20    37
21    39
22    27
23    36
24    40
25    43
26    41
27    45
dtype: int64
varianza = poblacion.var()        #hallamos la varianza
desviacion = poblacion.std()      #hallamos la desvicón estandar
print(f"""
'La varianza de la poblaciión es ':           {varianza:.3f}
'La desviación estandar de la población es ': {desviacion:.3f}
""")
'La varianza de la poblaciión es ':           155.061
'La desviación estandar de la población es ': 12.452

Hacemos el reto con la Muestra
muestra = poblacion1.sample(frac=0.4)
muestra
0      7
2     12
19    33
21    39
26    41
16    25
12    11
9      6
23    36
25    43
8      8
dtype: int64
varianza_muestra = muestra.var()
desviacion_muestra = muestra.std()

print(f"""
'La varianza de la muestra es ':           {varianza_muestra:.3f}
'La desviación estandar de la muestra es ': {desviacion_muestra:.3f}
""")
'La varianza de la muestra es ':           108.473
'La desviación estandar de la muestra es ': 10.415

108.47272727272727
10.415024112921067
muestra.describe()
count    11.000000
mean     26.545455
std      10.415024
min      11.000000
25%      20.000000
50%      27.000000
75%      32.000000
max      43.000000
dtype: float64

Mi aporte usando una Serie de Pandas:

import pandas as pd
import numpy as np

# importing the data 
data = [7,10,12,13,16,9,8,12,8,6,16,23,11,17,20,21,25,30,31,33,37,39,27,36,40,43,41,45]
poblation = pd.Series(data)

# Solving A)
poblation_variance = poblation.var(ddof=0)
poblation_standard_deviation = poblation.std(ddof=0)
print(f'Poblation Variance = {poblation_variance} \nPoblation Standar Deviation = {poblation_standard_deviation}')
Poblation Variance = 155.06122448979593 
Poblation Standar Deviation = 12.452358189909088
# Extrac a sample of 10 elements
sample_10 = poblation.sample(10, random_state=5) #random state es para obtener la misma muestra que la que yo obtuve

# Solving b)
sample_variance = sample_10.var()
sample_std = sample_10.std()
print(f'Sample Variance = {sample_variance} \nSample Standar Deviation = {sample_std}')
Sample Variance = 146.9 
Sample Standar Deviation = 12.120231020900551