Logo Passei Direto
Buscar

Media Mediana e Moda

Ferramentas de estudo

Material
páginas com resultados encontrados.
páginas com resultados encontrados.

Prévia do material em texto

Medidas de Posição e Dispersão.
Estatística Descritiva
A Estatística Descritiva é o ramo da estatística que se ocupa em coletar, organizar, resumir e 
apresentar dados de forma significativa. Seu objetivo principal é descrever as características de 
um conjunto de dados por meio de tabelas, gráficos e medidas numéricas, facilitando a 
compreensão e a análise inicial dos fenômenos estudados. Ela não tira conclusões sobre a 
população, mas sim organiza e sumariza as informações existentes.
Base dados
import numpy as np
import math
import statistics
import pandas as pd
from scipy import stats
data = np.array([150, 151, 152, 152, 153, 154, 155, 155, 155, 155, 
156, 156, 156,
 157, 158, 158, 160, 160, 160, 160, 160, 161, 161, 
161, 161, 162,
 163, 163, 164, 164, 164, 165, 166, 167, 168, 168, 
169, 170, 172,
 173])
Medidas de Posição para Dados Não Agrupados
Média, Mediana e Moda
Estas são as medidas de tendência central mais comuns, que buscam representar o valor 'típico' 
ou central de um conjunto de dados:
• Média: É a soma de todos os valores de um conjunto de dados dividida pelo número total 
de valores. É a medida mais utilizada, mas é sensível a valores extremos (outliers).
X́=
∑ x i
n
• Mediana: É o valor central de um conjunto de dados quando os dados estão ordenados 
em ordem crescente ou decrescente. Se o número de dados for ímpar, é o valor do meio. 
Se for par, é a média dos dois valores centrais. É menos afetada por outliers que a média.
– Quando é par
Mediana=x
( n+12 )
– Quando é impar:
Mediana=
x
( n2 )
+x
( n2+1)
2
• Moda: É o valor que mais aparece em um conjunto de dados. Um conjunto de dados pode 
ter uma moda (unimodal), várias modas (multimodal) ou nenhuma moda.
Média aritmética simples
data.sum() / len(data)
np.float64(160.375)
data.mean()
np.float64(160.375)
statistics.mean(data)
np.int64(160)
Moda
statistics.mode(data)
np.int64(160)
stats.mode(data)
ModeResult(mode=np.int64(160), count=np.int64(5))
Mediana
# Odd (Impar)
odd_data = [150, 151, 152, 152, 153, 154, 155, 155, 155]
position = len(odd_data) / 2
position
4.5
odd_position = math.ceil(position)
odd_position
5
value = odd_data[odd_position - 1]
value
153
# Even (Par)
even_position = len(data) // 2
even_position
20
data[even_position - 1], data[even_position]
(np.int64(160), np.int64(160))
median = (data[even_position - 1] + data[even_position]) / 2
median
np.float64(160.0)
# Using library
print(f"numpy.median: {np.median(data)}")
print(f"statistics.median odd: {statistics.median(odd_data)}")
print(f"statistics.median even: {statistics.median(data)}")
numpy.median: 160.0
statistics.median odd: 153
statistics.median even: 160.0
Média Aritmética Ponderada
A Média Aritmética Ponderada é um tipo de média que atribui diferentes pesos a cada valor em 
um conjunto de dados, refletindo a importância relativa de cada valor. É calculada multiplicando 
cada valor pelo seu peso correspondente, somando esses produtos e, em seguida, dividindo 
essa soma pela soma de todos os pesos.
É amplamente utilizada em situações onde nem todos os dados têm a mesma relevância, como 
no cálculo de notas em que diferentes avaliações têm pesos distintos ou na média de preços de 
produtos com diferentes volumes de venda.
X́ w=
∑
i=1
n
(xi ⋅w i )
∑
i=1
n
w i
Onde:
• X́ w é a média aritmética ponderada.
• x i é o i-ésimo valor do conjunto de dados.
• w i é o peso atribuído ao i-ésésimo valor.
• n é o número total de valores.
# manual
score = np.array([9,8,7,3])
weight = np.array([1,2,3,4])
weighted_average = (score * weight).sum() / weight.sum()
weighted_average
np.float64(5.8)
# Numpy
np.average(score, weights=weight)
np.float64(5.8)
Medidas de Posição para Dados Agrupados
Criando o Dataset
Quando trabalhamos com dados agrupados em classes de frequência, as medidas de posição 
(média, mediana e moda) são calculadas de maneira um pouco diferente, pois não temos acesso 
aos valores individuais de cada observação, mas sim aos intervalos e suas respectivas 
frequências.
data = {"inferior": [150,154,158,162,166,170],
 "superior": [154,158,162,166,170,174],
 "fi": [5,9,11,7,5,3]}
dataset = pd.DataFrame(data)
dataset
{"summary":"{\n \"name\": \"dataset\",\n \"rows\": 6,\n \"fields\": 
[\n {\n \"column\": \"inferior\",\n \"properties\": {\n 
\"dtype\": \"number\",\n \"std\": 7,\n \"min\": 150,\n 
\"max\": 170,\n \"num_unique_values\": 6,\n \"samples\": 
[\n 150,\n 154,\n 170\n ],\n 
\"semantic_type\": \"\",\n \"description\": \"\"\n }\
n },\n {\n \"column\": \"superior\",\n \"properties\": 
{\n \"dtype\": \"number\",\n \"std\": 7,\n 
\"min\": 154,\n \"max\": 174,\n \"num_unique_values\": 
6,\n \"samples\": [\n 154,\n 158,\n 
174\n ],\n \"semantic_type\": \"\",\n 
\"description\": \"\"\n }\n },\n {\n \"column\": 
\"fi\",\n \"properties\": {\n \"dtype\": \"number\",\n 
\"std\": 2,\n \"min\": 3,\n \"max\": 11,\n 
\"num_unique_values\": 5,\n \"samples\": [\n 9,\n 
3,\n 11\n ],\n \"semantic_type\": \"\",\n 
\"description\": \"\"\n }\n }\n ]\
n}","type":"dataframe","variable_name":"dataset"}
dataset["xi"] = (dataset["superior"] + dataset["inferior"]) / 2
dataset
{"summary":"{\n \"name\": \"dataset\",\n \"rows\": 6,\n \"fields\": 
[\n {\n \"column\": \"inferior\",\n \"properties\": {\n 
\"dtype\": \"number\",\n \"std\": 7,\n \"min\": 150,\n 
\"max\": 170,\n \"num_unique_values\": 6,\n \"samples\": 
[\n 150,\n 154,\n 170\n ],\n 
\"semantic_type\": \"\",\n \"description\": \"\"\n }\
n },\n {\n \"column\": \"superior\",\n \"properties\": 
{\n \"dtype\": \"number\",\n \"std\": 7,\n 
\"min\": 154,\n \"max\": 174,\n \"num_unique_values\": 
6,\n \"samples\": [\n 154,\n 158,\n 
174\n ],\n \"semantic_type\": \"\",\n 
\"description\": \"\"\n }\n },\n {\n \"column\": 
\"fi\",\n \"properties\": {\n \"dtype\": \"number\",\n 
\"std\": 2,\n \"min\": 3,\n \"max\": 11,\n 
\"num_unique_values\": 5,\n \"samples\": [\n 9,\n 
3,\n 11\n ],\n \"semantic_type\": \"\",\n 
\"description\": \"\"\n }\n },\n {\n \"column\": 
\"xi\",\n \"properties\": {\n \"dtype\": \"number\",\n 
\"std\": 7.483314773547883,\n \"min\": 152.0,\n \"max\": 
172.0,\n \"num_unique_values\": 6,\n \"samples\": [\n 
152.0,\n 156.0,\n 172.0\n ],\n 
\"semantic_type\": \"\",\n \"description\": \"\"\n }\
n }\n ]\n}","type":"dataframe","variable_name":"dataset"}
dataset["fi.xi"] = dataset["fi"] * dataset["xi"]
dataset
{"summary":"{\n \"name\": \"dataset\",\n \"rows\": 6,\n \"fields\": 
[\n {\n \"column\": \"inferior\",\n \"properties\": {\n 
\"dtype\": \"number\",\n \"std\": 7,\n \"min\": 150,\n 
\"max\": 170,\n \"num_unique_values\": 6,\n \"samples\": 
[\n 150,\n 154,\n 170\n ],\n 
\"semantic_type\": \"\",\n \"description\": \"\"\n }\
n },\n {\n \"column\": \"superior\",\n \"properties\": 
{\n \"dtype\": \"number\",\n \"std\": 7,\n 
\"min\": 154,\n \"max\": 174,\n \"num_unique_values\": 
6,\n \"samples\": [\n 154,\n 158,\n 
174\n ],\n \"semantic_type\": \"\",\n 
\"description\": \"\"\n }\n },\n {\n \"column\": 
\"fi\",\n \"properties\":{\n \"dtype\": \"number\",\n 
\"std\": 2,\n \"min\": 3,\n \"max\": 11,\n 
\"num_unique_values\": 5,\n \"samples\": [\n 9,\n 
3,\n 11\n ],\n \"semantic_type\": \"\",\n 
\"description\": \"\"\n }\n },\n {\n \"column\": 
\"xi\",\n \"properties\": {\n \"dtype\": \"number\",\n 
\"std\": 7.483314773547883,\n \"min\": 152.0,\n \"max\": 
172.0,\n \"num_unique_values\": 6,\n \"samples\": [\n 
152.0,\n 156.0,\n 172.0\n ],\n 
\"semantic_type\": \"\",\n \"description\": \"\"\n }\
n },\n {\n \"column\": \"fi.xi\",\n \"properties\": {\
n \"dtype\": \"number\",\n \"std\": 458.180168347198,\n 
\"min\": 516.0,\n \"max\": 1760.0,\n 
\"num_unique_values\": 6,\n \"samples\": [\n 760.0,\n 
1404.0,\n 516.0\n ],\n \"semantic_type\": 
\"\",\n \"description\": \"\"\n }\n }\n ]\
n}","type":"dataframe","variable_name":"dataset"}
dataset["Fi"] = dataset["fi"].cumsum()
dataset
{"summary":"{\n \"name\": \"dataset\",\n \"rows\": 6,\n \"fields\": 
[\n {\n \"column\": \"inferior\",\n \"properties\": {\n 
\"dtype\": \"number\",\n \"std\": 7,\n \"min\": 150,\n 
\"max\": 170,\n \"num_unique_values\": 6,\n \"samples\": 
[\n 150,\n 154,\n 170\n ],\n 
\"semantic_type\": \"\",\n \"description\": \"\"\n }\
n },\n {\n \"column\": \"superior\",\n \"properties\": 
{\n \"dtype\": \"number\",\n \"std\": 7,\n 
\"min\": 154,\n \"max\": 174,\n \"num_unique_values\": 
6,\n \"samples\": [\n 154,\n 158,\n 
174\n ],\n \"semantic_type\": \"\",\n 
\"description\": \"\"\n }\n },\n {\n \"column\": 
\"fi\",\n \"properties\": {\n \"dtype\": \"number\",\n 
\"std\": 2,\n \"min\": 3,\n \"max\": 11,\n 
\"num_unique_values\": 5,\n \"samples\": [\n 9,\n 
3,\n 11\n ],\n \"semantic_type\": \"\",\n 
\"description\": \"\"\n }\n },\n {\n \"column\": 
\"xi\",\n \"properties\": {\n \"dtype\": \"number\",\n 
\"std\": 7.483314773547883,\n \"min\": 152.0,\n \"max\": 
172.0,\n \"num_unique_values\": 6,\n \"samples\": [\n 
152.0,\n 156.0,\n 172.0\n ],\n 
\"semantic_type\": \"\",\n \"description\": \"\"\n }\
n },\n {\n \"column\": \"fi.xi\",\n \"properties\": {\
n \"dtype\": \"number\",\n \"std\": 458.180168347198,\n 
\"min\": 516.0,\n \"max\": 1760.0,\n 
\"num_unique_values\": 6,\n \"samples\": [\n 760.0,\n 
1404.0,\n 516.0\n ],\n \"semantic_type\": 
\"\",\n \"description\": \"\"\n }\n },\n {\n 
\"column\": \"Fi\",\n \"properties\": {\n \"dtype\": 
\"number\",\n \"std\": 13,\n \"min\": 5,\n 
\"max\": 40,\n \"num_unique_values\": 6,\n \"samples\": 
[\n 5,\n 14,\n 40\n ],\n 
\"semantic_type\": \"\",\n \"description\": \"\"\n }\
n }\n ]\n}","type":"dataframe","variable_name":"dataset"}
Média para Dados Agrupados
Para calcular a média de dados agrupados, utilizamos o ponto médio de cada classe como uma 
estimativa dos valores dentro daquela classe. Cada ponto médio é então ponderado pela 
frequência da sua classe.
X́=
∑ ( f i ⋅ x i )
N
Onde:
• X́ é a média.
• f i é a frequência da i-ésima classe.
• x i é o ponto médio da i-ésima classe.
• N é o número total de observações (soma de todas as frequências).
dataset["fi.xi"].sum() / dataset["fi"].sum()
np.float64(160.7)
# Using Numpy
np.average(dataset["xi"], weights=dataset["fi"])
np.float64(160.7)
Mediana para Dados Agrupados
A mediana para dados agrupados é encontrada primeiro identificando a classe mediana (a classe 
onde a frequência acumulada atinge ou ultrapassa N /2) e, em seguida, usando uma fórmula de 
interpolação:
Mediana=L+( N2 − Ff )⋅h
Onde:
• L é o limite inferior da classe mediana.
• N é a frequência total.
• F é a frequência acumulada da classe imediatamente anterior à classe mediana.
• f é a frequência da classe mediana.
• h é a amplitude da classe mediana.
# Frequancia total
N = dataset['fi'].sum()
print(f"N: {N}")
# # Encontrar a classe mediana (a primeira classe onde Fi é maior ou 
igual a N/2)
median_class_index = dataset[dataset['Fi'] >= (N/2)].index[0]
median_class = dataset.loc[median_class_index]
# Limite inferior da classe mediana
L = median_class['inferior']
print(f"L: {L}")
# Frequência acumulada da classe anterior
F = dataset.loc[median_class_index - 1, 'Fi']
print(f"F: {F}")
# Frequencia da classe mediana
f = median_class['fi']
print(f"f: {f}")
# Amplitude
h = median_class['superior'] - median_class['inferior']
print(f"h: {h}")
median_result = L + ( ( ( ( N/2 ) - F ) / f ) * h )
print(f"Mediana: {median_result:.2f}")
L: 158.0
N: 40
F: 14
f: 11.0
h: 4.0
Mediana: 160.18
Moda para Dados Agrupados
A moda para dados agrupados é geralmente estimada pela classe modal (a classe com a maior 
frequência). Para uma estimativa mais precisa, pode-se usar a seguinte fórmula de interpolação:
Moda=L+( Δ1
Δ1+Δ2 )⋅h
Onde:
• L é o limite inferior da classe modal.
• Δ1 (delta 1) é a diferença entre a frequência da classe modal e a frequência da classe 
precedente.
• Δ2 (delta 2) é a diferença entre a frequência da classe modal e a frequência da classe 
sucessora.
• h é a amplitude da classe modal.
# Encontrar a classe modal (a classe com a maior frequência 'fi')
modal_class_index = dataset['fi'].idxmax()
modal_class = dataset.loc[modal_class_index]
# L: limite inferior da classse modal
L = modal_class['inferior']
# h: Amplitude da classe modal
h = modal_class['superior'] - modal_class['inferior']
# f_modal: Frequência da classe modal
f_modal = modal_class['fi']
# Delta 1: Diferença entre a frequência da classe modal e a frequência 
da classe precedente
f_preceding = dataset.loc[modal_class_index - 1, 'fi']
delta1 = f_modal - f_preceding
# Delta 2: Diferença entre a frequência da classe modal e a frequência 
da classe sucessora
f_succeeding = dataset.loc[modal_class_index + 1, 'fi' ]
delta2 = f_modal - f_succeeding
# Calculando a moda agrupada
moda = L + (delta1 / (delta1 + delta2)) * h
# Resultado
print(f"Moda para Dados Agrupados: {moda:.2f}")
Moda para Dados Agrupados: 159.33
	Medidas de Posição e Dispersão.
	Estatística Descritiva
	Base dados
	Medidas de Posição para Dados Não Agrupados
	Média, Mediana e Moda
	Média aritmética simples
	Moda
	Mediana
	Média Aritmética Ponderada
	Medidas de Posição para Dados Agrupados
	Criando o Dataset
	Média para Dados Agrupados
	Mediana para Dados Agrupados
	Moda para Dados Agrupados

Mais conteúdos dessa disciplina