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 36
Preguntas 2
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.
Qué tal, agrego mi código con los siguientes cálculos:
Para hacer cálculos estadísticos sin una muestra, sólo hay que cambiar la variable muestra
a false (creo)
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}
''')
:
xm = datos.sum() / len(datos)
sumatoria = 0
for xi in datos:
sumatoria += (xi - xm)**2
if p_m == 'p':
return sumatoria / len(datos)
else:
return sumatoria / (len(datos) - 1)
def std(var):
return var** 0.5
**Media **es el promedio de todas las observaciones
**Moda **es el dato más frecuente
Mediana es el dato que está al centro de los datos
Media muestral (X), media aritmética de una muestra de la población.
Varianza y desviación estándar nos ayuda a calcular que tan dispersa están los datos
Reto 1:
Creamos un array en NumPy
poblacion = 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])
poblacion
Hallamos la varianza
np.var(poblacion)
Luego su desviación estándar
poblacion.std()
Reto 2
Creamos una serie de Pandas
poblacion_2 = 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])
Tomamos una muestra
muestra_poblacion_2 = poblacion_2.sample(n=10)
muestra_poblacion_2
Hallamos la varianza de la muestra:
np.var(muestra_poblacion_2)
Y luego su desviación estándar:
np.std(muestra_poblacion_2)
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!
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?