-
Notifications
You must be signed in to change notification settings - Fork 0
/
lista_7_questao_2.py
51 lines (40 loc) · 2.02 KB
/
lista_7_questao_2.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
from statistics import mean
import numpy as np
from numpy.ma import average, var, max
def main():
simulacao(1000)
simulacao(10000)
simulacao(100000)
simulacao(1000000)
def simulacao(tamanho_amostras):
print(f"\n*Simulacão com {tamanho_amostras} amostras")
epsilon = 0.00001
numero_amostras = 100
valor_minimo = epsilon
teta = 10
valor_maximo = teta - epsilon
estimadores_momentos = []
erros_amostrais_estimadores_momentos = []
estimadores_maxima_verossimilhanca = []
erros_amostrais_estimadores_maxima_verossimilhanca = []
for i in range(numero_amostras):
distribuicao_uniforme = np.random.uniform(low=valor_minimo, high=valor_maximo, size=tamanho_amostras)
estimador_momentos = 2 * average(distribuicao_uniforme)
estimadores_momentos.append(estimador_momentos)
erro_amostral_estimador_momentos = estimador_momentos - teta
erros_amostrais_estimadores_momentos.append(erro_amostral_estimador_momentos)
estimador_maxima_verossimilhanca = max(distribuicao_uniforme) + epsilon
estimadores_maxima_verossimilhanca.append(estimador_maxima_verossimilhanca)
erro_amostral_estimador_maxima_verossimilhanca = estimador_maxima_verossimilhanca - teta
erros_amostrais_estimadores_maxima_verossimilhanca.append(erro_amostral_estimador_maxima_verossimilhanca)
imprimir_resultados("Momentos", erros_amostrais_estimadores_momentos, estimadores_momentos,
teta)
imprimir_resultados("Máx. Veros.", erros_amostrais_estimadores_maxima_verossimilhanca,
estimadores_maxima_verossimilhanca, teta)
def imprimir_resultados(nome_estimador, erros_amostrais_estimadores, estimadores, teta):
erro_quadratico_medio = average(erros_amostrais_estimadores) ** 2
vies = average(estimadores) - teta
variancia = var(estimadores)
print(f"Estimador: {nome_estimador} \tEQM: {erro_quadratico_medio:.5f} \tViés: {vies:.5f} \tVariância: {variancia:.5f}")
if __name__ == '__main__':
main()