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.
Fundamentos de estadística inferencial
Estadística inferencial vs. descriptiva
Estadísticos principales
Poblaciones normales
Introducción al muestreo y teorema central del límite
Funciones de muestreo en Python
Muestreo estratificado en Python
Quiz: Fundamentos de estadística inferencial
Estadísticos y cálculos
La media muestral
Varianza y desviación estándar muestral
Varianza y desviación estándar muestral en Python
Intervalos de confianza
Cálculo de intervalo de confianza
Cálculo de intervalo de confianza en Python
Quiz: Estadísticos y cálculos
Pruebas de hipótesis y validación
Pruebas de hipótesis
Tipos de pruebas de hipótesis
Tipos de errores
Pruebas de hipótesis en Python: t de Student
Pruebas de hipótesis en Python: Pearson y ANOVA
Bootstrapping
Bootstrapping en Python
Validación cruzada
Validación cruzada en Python
Quiz: Pruebas de hipótesis y validación
Cierre del curso
Conclusiones
No tienes acceso a esta clase
¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera
Aportes 22
Preguntas 1
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.
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}
''')

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
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
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!
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
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?
o inicia sesión.