<jupyter_start><jupyter_text>Distribuição de probabilidade Distribuição binomial<jupyter_code>from scipy.special import comb
combinacoes = comb(60,6)
combinacoes
1/combinacoes*100
comb(25,20)
1/comb(25,20)
n = 10
n
p = 1/3
p
q = 1-p
q
k = 5
k
prob = (comb(n, k) * (p**k) * (q ** (n - k)))
prob
from scipy.stats import binom
prob = binom.pmf(k,n,p)
print(f'{prob:.8f}')
 binom.pmf(5,n,p) + binom.pmf(6,n,p) + binom.pmf(7,n,p) + binom.pmf(8,n,p) + binom.pmf(9,n,p) + binom.pmf(10,n,p)
 binom.pmf([5, 6, 7, 8, 9, 10], n, p).sum()
1 - binom.cdf(4, n, p)
binom.sf(4, n, p)
k = 2
n = 4
p = 1/2
binom.pmf(k, n, p)
k = 3
n = 10
p = 1/6
1-binom.cdf(k, n, p)
#exemplo
p = 0.6
n = 12
k = 8
prob = binom.pmf(k, n, p)
prob
n = 30 * prob
n
p = 0.22
n = 3
k = 2
prob = binom.pmf(k, n, p)
prob
50*prob<jupyter_output><empty_output><jupyter_text>Distribuição de probabilidade Poisson<jupyter_code>np.e
media = 20
k = 15
prob = ((np.e**(-media)) * (media**k)) / np.math.factorial(k)
print(f'{prob:.8f}')
from scipy.stats import poisson
prob = poisson.pmf(k, media)
prob
k = 25
media = 20
prob = poisson.pmf(k, media)
print(f'{prob*100:.2f}')<jupyter_output>4.46<jupyter_text>Distribuição Normal<jupyter_code>from scipy.stats import norm
tabela_normal_padronizada = pd.DataFrame(
    [],
    index=[f"{i/100:.2f}" for i in range(0, 400, 10)],
    columns=[f"{i/100:.2f}" for i in range(0, 10)]
)

for index in tabela_normal_padronizada.index:
    for columns in tabela_normal_padronizada.columns:
        Z = np.round(float(index) + float(columns), 2)
        tabela_normal_padronizada.loc[index, columns] = f'{norm.cdf(Z):.4f}'

tabela_normal_padronizada.rename_axis('Z', axis=1, inplace=True)
tabela_normal_padronizada
media = 1.70
dp = 0.1
x = 1.80
Z = (x - media)/dp
Z
prob = 0.8413
prob
prob=norm.cdf(Z)
prob
prob = norm.cdf((85-70)/5)
prob
prob = norm.cdf((1.80-1.70)/0.1) - norm.cdf((1.60-1.70)/0.1)
prob
prob = (norm.cdf((1.80-1.70)/0.1) - 0.5)*2
prob
prob = norm.cdf((1.80-1.70)/0.1) - (1 - norm.cdf((1.80-1.70)/0.1))
prob
media = 300
dp = 50
x1 = 250
x2 = 350
prob = norm.cdf((x1-media)/dp) - (norm.cdf((x2-media)/dp))
prob*100
media = 300
dp = 50
x1 = 400
x2 = 500
prob = norm.cdf((x1-media)/dp) - (norm.cdf((x2-media)/dp))
prob*100
media = 1.70
dp = 0.1
x1 = 1.90
prob = 1- (norm.cdf((x1-media)/dp))
prob*100
media = 1.70
dp = 0.1
x1 = 1.90
prob = (norm.cdf(-(x1-media)/dp))
prob*100
media = 720
dp = 30
x1 = 650
x2 = 750
x3 = 800
x4 = 700
prob = norm.cdf((x1-media)/dp) - (norm.cdf((x2-media)/dp))
prob*100
prob = (norm.cdf(-(x3-media)/dp))
prob*100
prob = (norm.cdf((x4-media)/dp))
prob*100
prob = norm.cdf(1.96)
prob
prob = 1-norm.cdf(2.15)
prob
prob = norm.cdf(-0.78)
prob
prob = 1-norm.cdf(0.59)
prob<jupyter_output><empty_output><jupyter_text>Amostragem Populacao e amostragem<jupyter_code>dados.shape[0]
dados.Renda.mean()
amostra = dados.sample(n = 100, random_state=101)
amostra.shape[0]
amostra.Renda.mean()
dados.Sexo.value_counts(normalize=True)
amostra.Sexo.value_counts(normalize=True)<jupyter_output><empty_output><jupyter_text>Estimação Teorema do limíte central<jupyter_code>n = 2000
total_amostras = 1500
amostras = pd.DataFrame()
for i in range(total_amostras):
   _ = dados.Idade.sample(2000)
   _.index = range(0, len(_))
   amostras['Amostra_' + str(i)] = _

amostras
amostras.mean()
amostras.mean().hist()
dados.Idade.mean()
amostras.mean().mean()
amostras.mean().std()
dados.Idade.std()
dados.Idade.std()/np.sqrt(n)<jupyter_output><empty_output><jupyter_text>Intervalo de confiança<jupyter_code>media_amostral = 5050
significancia = 0.05
confiança = (1-significancia)
alpha = confiança/2+0.5
dp = 150
n=20
raiz_n = np.sqrt(n)
z = norm.ppf(alpha)
round(z, 4)
#calculo do erro amostras
sigma = dp/raiz_n
e = z * sigma
e
 e = norm.ppf((1-0.05)/2+0.5)*dp/np.sqrt(n)
 round(e, 2) #gramas
#Intervalo de confiança
intervalo = (
    media_amostral - e,
    media_amostral + e
)
intervalo
intervalo = norm.interval(alpha = confiança, loc = media_amostral, scale = sigma)
intervalo
#exercício
media_amostral = ''
significancia = 0.05
confiança = (1-significancia)
alpha = confiança/2+0.5
dp = 6
n=50
raiz_n = np.sqrt(n)
 e = norm.ppf(alpha)*dp/np.sqrt(n)
 round(e, 2) #gramas
#exercício
media_amostral = 28
significancia = 1 - confiança
confiança = 0.9
alpha = confiança/2+0.5
dp = 11
n = 1976
raiz_n = np.sqrt(n)
sigma = dp/raiz_n
intervalo = norm.interval(alpha = confiança, loc = media_amostral, scale = sigma)
intervalo<jupyter_output><empty_output><jupyter_text>Calculo do tamanho de amostra<jupyter_code>confiança = 0.95
alpha = confiança/2+0.5
sigma = 3323.29 #desvio padrão populacional
e = 100
z = norm.ppf(alpha)
z
n = (norm.ppf(alpha)*((sigma)/(e)))**2
int(round(n))
#exercício
media_amostral = 45.50
significancia = 0.1
confianca = 1 - significancia
alpha = confianca/2+0.5
dp = 15 #pq é sigma? 
n = ''
erro = 0.1
e= media_amostral * erro #erro diferencial
#raiz_n = np.sqrt(n)
#sigma = dp/raiz_n
n = (norm.ppf(alpha)*((dp)/(e)))**2
int(round(n))
 media = 45.5
sigma = 15
significancia = 0.10
confianca = 1 - significancia

z = norm.ppf(0.5 + (confianca / 2))
erro_percentual = 0.10
e = media * erro_percentual

n = (z * (sigma / e)) ** 2
n.round()<jupyter_output><empty_output><jupyter_text>Calculo da amostra para população finita<jupyter_code>N = 10000 #tamanho da população
significancia = 1 - confianca
confianca = 0.95
alpha = alpha = confianca/2+0.5
z = norm.ppf(alpha) #variavel normal padronizada
sigma = '' #desvio padrão populacional
s = 12 #desvio padrão amostral
e = 5 #erro diferencial

n = ((z**2)*(s**2)*(N)) / (((z**2)*(s**2))+((e**2)*(N-1)))
int(n.round())
 N = 2000 #tamanho da população
significancia = 1 - confianca
confianca = 0.95
alpha = alpha = confianca/2+0.5
z = norm.ppf(alpha) #variavel normal padronizada
sigma = '' #desvio padrão populacional
s = 0.480 #desvio padrão amostral
e = 0.3 #erro diferencial
n = ((z**2)*(s**2)*(N)) / (((z**2)*(s**2))+((e**2)*(N-1)))
int(n.round())
renda_5mil = dados.query('Renda <=5000').Renda
 N = '' #tamanho da população
significancia = 1 - confianca
confianca = 0.95
alpha = alpha = confianca/2+0.5
z = norm.ppf(alpha) #variavel normal padronizada
sigma = renda_5mil.std() #desvio padrão populacional
media = renda_5mil.mean()
s = '' #desvio padrão amostral
e = 10 #erro diferencial
n = int((z * (sigma / e)) ** 2)
n
intervalo = norm.interval(alpha = confianca, loc = media, scale = sigma/np.sqrt(n))
intervalo
import matplotlib.pyplot as plt
tamanho_simulacao = 1000

medias = [renda_5mil.sample(n = n).mean() for i in range(1 , tamanho_simulacao)]
medias = pd.DataFrame(medias)
ax = medias.plot(style = '.')
ax.figure.set_size_inches(12,6)
ax.hlines(y= media, xmin=0, xmax=tamanho_simulacao, color='black', linestyles='dashed')
ax.hlines(y= intervalo[0], xmin=0, xmax=tamanho_simulacao, color='red', linestyles='dashed')
ax.hlines(y= intervalo[1], xmin=0, xmax=tamanho_simulacao, color='red', linestyles='dashed')
ax<jupyter_output><empty_output><jupyter_text>Desafio<jupyter_code>dados.head()
k = 7
n = 10
p = 0.7
prob = binom.pmf(k, n, p)
prob
media = 100
#media = n * prob
n = media / prob
n

dataset= dados.Renda.sample(n=200, random_state=101)
dataset.mean()
dataset.std()
media_amostra = dataset.mean()
desvio_padrao_amostra = dataset.std()
recursos = 150000
custo_por_entrevista = 100
e = 0.1*media_amostra
z = norm.ppf((0.9/2)+0.5)
n_90 = int((z * (desvio_padrao_amostra/ e))**2)
n_90
z = norm.ppf((0.95/2)+0.5)
n_95 = int((z * (desvio_padrao_amostra/ e))**2)
n_95
z = norm.ppf((0.99/2)+0.5)
n_99 = int((z * (desvio_padrao_amostra/ e))**2)
n_99
print(f'O custo para a pesquisa com 90% de conficança é R${n_90*custo_por_entrevista:,.2f}')
print(f'O custo para a pesquisa com 95% de conficança é R${n_95*custo_por_entrevista:,.2f}')
print(f'O custo para a pesquisa com 99% de conficança é R${n_99*custo_por_entrevista:,.2f}')
intervalo = norm.interval(alpha = 0.95, loc = media_amostra, scale = desvio_padrao_amostra/np.sqrt(n_95))
intervalo
n = recursos/custo_por_entrevista
n
 e = norm.ppf((1-0.05)/2+0.5)*desvio_padrao_amostra/np.sqrt(n)
 round(e, 2)
e_percentual = (e / media_amostra )*100
e_percentual
e = 0.05*media_amostra
z = norm.ppf((0.95/2)+0.5)
n_95 = int((z * (desvio_padrao_amostra/ e))**2)
n_95
custo = n_95*custo_por_entrevista
custo<jupyter_output><empty_output>
{'fraction_non_alphanumeric': 0.1738604763631967, 'fraction_numerical': 0.06891548784911135, 'mean_word_length': 4.732501732501732, 'pattern_counts': {'":': 0, '<': 37, '<?xml version=': 0, '>': 36, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '9', 'dir': 'jupyter-structured-clean-dedup', 'id': '489879', 'license': 'MIT', 'n_tokens_mistral': 4158, 'n_tokens_neox': 3817, 'n_words': 771, 'path': 'alura_estatistica_probabilidade.ipynb', 'repo_name': 'andrade-lcs/data_science_alura_1', 'size': '8271'}