class: center, middle, inverse, title-slide .title[ # Variáveis Aleatórias Discretas - Sistemas de TI/Engenharia de Software ] .subtitle[ ## Um Problema · Uma Fila · Três Distribuições ] .author[ ### Prof. Hidelbrando Ferreira Rodrigues ] .institute[ ### Universidade Federal do Amazonas — UFAM ] .date[ ### 09 de junho de 2026 ] --- <style type="text/css"> .remark-slide-content { font-size: 22px; padding: 20px 60px 35px 60px; } .remark-code, .remark-inline-code { background: #ebebeb; border-radius: 3px; padding: 2px 5px; font-size: 0.85em; } .remark-slide-number { font-size: 13px; opacity: 0.6; } h1, h2, h3 { color: #1a3a5c; } .inverse { background-color: #1a3a5c; color: #f0f0f0; text-shadow: none; } .inverse h1, .inverse h2, .inverse h3 { color: #f0f0f0; } .pull-left { float: left; width: 48%; } .pull-right { float: right; width: 48%; } .center { text-align: center; } .small { font-size: 0.82em; } .conceito { background: #eaf4fb; border-left: 6px solid #2980b9; padding: 13px 16px; margin: 10px 0; border-radius: 4px; } .pergunta { background: #fef9e7; border-left: 6px solid #e67e22; padding: 13px 16px; margin: 10px 0; border-radius: 4px; } .solucao { background: #eafaf1; border-left: 6px solid #27ae60; padding: 13px 16px; margin: 10px 0; border-radius: 4px; } .alerta { background: #fdedec; border-left: 6px solid #c0392b; padding: 13px 16px; margin: 10px 0; border-radius: 4px; } .pausa { text-align: center; color: #e67e22; font-weight: bold; font-size: 1.05em; margin-top: 14px; } </style> --- class: center, middle, inverse # Variáveis Aleatórias Discretas ## Geométrica · Hipergeométrica · Binomial Negativa ### Prof. Hidelbrando Ferreira Rodrigues ### Universidade Federal do Amazonas — UFAM ### 09 de junho de 2026 --- ## O Cenário: Pipeline de Deploy Contínuo Uma empresa de software mantém um **pipeline de integração contínua (CI/CD)**. A equipe de QA precisa responder três perguntas práticas: 1. **"Quantos deploys até o primeiro bug crítico aparecer?"** → Distribuição **Geométrica** 2. **"Num lote de pacotes entregues, quantos estão com defeito?"** → Distribuição **Hipergeométrica** 3. **"Quantos deploys até acumularmos 3 falhas e acionar uma revisão?"** → Distribuição **Binomial Negativa** .alerta[ Cada bloco da aula resolve **uma dessas perguntas** com teoria + cálculo + interpretação. ] --- class: inverse, center, middle # Bloco 1 ## Distribuição Geométrica: ### Quantos deploys até o primeiro bug crítico? --- ## Conceito: Distribuição Geométrica .conceito[ Seja `\(X\)` o número de ensaios de Bernoulli **independentes** até a **primeira ocorrência de sucesso**, com probabilidade `\(p\)` de sucesso em cada ensaio. `$$P(X = k) = (1-p)^{k-1} \cdot p, \quad k = 1, 2, 3, \dots$$` - **Esperança:** `\(E(X) = \dfrac{1}{p}\)` - **Variância:** `\(\mathrm{Var}(X) = \dfrac{1-p}{p^2}\)` **Propriedade da falta de memória:** `$$P(X > m+n \mid X > m) = P(X > n)$$` ] --- ## Ligando ao Cenário .conceito[ No pipeline de CI/CD: - Cada **deploy** é um ensaio independente; - `\(p = 0.05\)` = probabilidade de um deploy introduzir um **bug crítico**; - `\(X\)` = número de deploys **até** o primeiro bug crítico. `$$X \sim \text{Geométrica}(p = 0.05)$$` ] --- ## Visualizando a Geométrica <img src="iscreta_avançadas_files/figure-html/geom-pmf-1.png" alt="" style="display: block; margin: auto;" /> .small[ `\(E(X) = 1/p = 20\)` deploys até o primeiro bug crítico. ] --- ## Pergunta 1 .pergunta[ Para `\(X \sim \text{Geométrica}(p = 0.05)\)`: 1. Qual a probabilidade de o **primeiro bug** aparecer **exatamente** no 5º deploy? 2. Qual a probabilidade de **nenhum bug** nos primeiros 10 deploys: `\(P(X > 10)\)`? 3. Interprete a **propriedade da falta de memória** neste contexto de CI/CD. ] .pausa[⏸ Calculem em duplas — 4 minutos] --- ## Resposta 1 .solucao[ 1. `\(P(X = 5) = (1-0.05)^4 \cdot 0.05 \approx 0.0407\)` 2. `\(P(X > 10) = (1-0.05)^{10} \approx 0.5987\)` 3. **Falta de memória em CI/CD:** se os últimos 10 deploys foram limpos, a probabilidade de bug no 11º deploy **continua sendo** `\(p = 0.05\)`. O pipeline "não guarda rancor" — cada deploy é igualmente arriscado. ] --- ## Pergunta 2 .pergunta[ O time quer saber **com que frequência** devem se preparar para um bug crítico. 1. Calcule `\(E(X)\)` e `\(\mathrm{Var}(X)\)`. 2. Se o time faz **20 deploys por semana**, quantas semanas, em média, até o primeiro bug crítico? 3. Que ação de engenharia (testes, cobertura de código) reduziria `\(p\)` e qual seria o impacto em `\(E(X)\)`? ] .pausa[⏸ Calculem e discutam — 4 minutos] --- ## Resposta 2 .solucao[ - `\(E(X) = \dfrac{1}{0.05} = 20\)` deploys até o primeiro bug crítico. - `\(\mathrm{Var}(X) = \dfrac{0.95}{0.05^2} \approx 380\)` - Com 20 deploys/semana: `\(20 / 20 = 1\)` semanas até o primeiro bug. - Se adotarmos mais testes e reduzirmos `\(p\)` para `\(0{,}01\)`: `\(E(X)\)` sobe de 20 para **100 deploys** — um ganho de resiliência significativo! ] --- class: inverse, center, middle # Bloco 2 ## Distribuição Hipergeométrica: ### Quantos defeituosos há na amostra inspecionada? --- ## Conceito: Distribuição Hipergeométrica .conceito[ Considere uma **população finita** de `\(N\)` itens, sendo `\(K\)` "defeituosos" e `\(N-K\)` "conformes". Retira-se uma **amostra sem reposição** de tamanho `\(n\)`. `\(X\)` = número de defeituosos na amostra: `$$P(X = k) = \frac{\dbinom{K}{k}\dbinom{N-K}{n-k}}{\dbinom{N}{n}}, \quad k = 0,1,\dots,\min(n,K)$$` - **Esperança:** `\(E(X) = n \dfrac{K}{N}\)` - **Variância:** `\(\mathrm{Var}(X) = n \dfrac{K}{N}\dfrac{N-K}{N}\dfrac{N-n}{N-1}\)` ] --- ## Por Que Não Usar a Binomial? .alerta[ Na **Binomial**, cada ensaio é **independente** — como uma amostragem **com reposição**. Na **Hipergeométrica**, a amostragem é **sem reposição**: retirar um item defeituoso **muda** a probabilidade dos próximos. → Em lotes pequenos de software (pacotes, módulos, versões), a Hipergeométrica é **mais adequada**. ] --- ## Ligando ao Cenário .conceito[ O time de QA recebe um **lote de `\(N = 20\)` pacotes** de uma atualização de software. Por experiência, sabe-se que ** `\(K = 5\)` pacotes** do lote têm defeito. A equipe inspeciona uma amostra de ** `\(n = 6\)` ** pacotes (sem reposição). `$$X = \text{nº de defeituosos na amostra} \sim \text{Hipergeométrica}(N=20,\, K=5,\, n=6)$$` ] --- ## Visualizando a Hipergeométrica <img src="iscreta_avançadas_files/figure-html/hiper-pmf-1.png" alt="" style="display: block; margin: auto;" /> --- ## Pergunta 3 .pergunta[ Para `\(X \sim \text{Hipergeométrica}(N=20, K=5, n=6)\)`: 1. Calcule `\(P(X = 0)\)`: probabilidade de **nenhum defeituoso** na amostra. 2. Calcule `\(P(X \ge 2)\)`: probabilidade de **dois ou mais defeituosos**. 3. Calcule `\(E(X)\)` e interprete. ] .pausa[⏸ Calculem — 4 minutos] --- ## Resposta 3 .solucao[ 1. `\(P(X = 0) \approx 0.1291\)` 2. `\(P(X \ge 2) = 1 - P(X \le 1) \approx 0.4835\)` 3. `\(E(X) = 6 \times \dfrac{5}{20} = 1.5\)` pacotes defeituosos esperados na amostra. **Interpretação:** Em média, esperamos 1.5 pacote(s) defeituoso(s) em cada amostra de 6 — um sinal de que o lote precisa de atenção. ] --- ## Pergunta 4 .pergunta[ ### Decisão de aceitação do lote O contrato estabelece que o lote será **rejeitado** se a amostra contiver **2 ou mais** pacotes defeituosos. 1. Qual a probabilidade de o lote ser **rejeitado**? 2. Qual a probabilidade de o lote ser **aceito indevidamente** (passar com defeituosos não detectados)? 3. Como aumentar o tamanho da amostra `\(n\)` reduziria esses riscos? ] .pausa[⏸ Discutam em grupos — 4 minutos] --- ## Resposta 4 .solucao[ - `\(P(\text{rejeitar}) = P(X \ge 2) \approx 0.4835\)` (**48.3%**) - `\(P(\text{aceitar com 1 defeituoso}) = P(X = 1) \approx 0.3874\)` - Aumentando `\(n\)`: maior probabilidade de detectar defeitos → menos risco de aceitar lotes ruins. Porém, inspecionar mais pacotes tem **custo de tempo** no pipeline — um trade-off clássico de QA. ] --- class: inverse, center, middle # Bloco 3 ## Distribuição Binomial Negativa: ### Quantos deploys até a 3ª falha? --- ## Conceito: Distribuição Binomial Negativa .conceito[ `\(X\)` = número de ensaios de Bernoulli **independentes** até a ** `\(r\)`-ésima ocorrência de sucesso**, com probabilidade `\(p\)`: `$$P(X = k) = \binom{k-1}{r-1} p^r (1-p)^{k-r}, \quad k = r, r+1, r+2, \dots$$` - **Esperança:** `\(E(X) = \dfrac{r}{p}\)` - **Variância:** `\(\mathrm{Var}(X) = \dfrac{r(1-p)}{p^2}\)` **Nota:** a Geométrica é o caso especial `\(r = 1\)`. ] --- ## Ligando ao Cenário .conceito[ O protocolo da equipe determina que uma **revisão completa do pipeline** é acionada após a **$r = 3ª falha crítica** no histórico de deploys. Com `\(p = 0.05\)` (probabilidade de falha por deploy): `$$X = \text{nº de deploys até a 3ª falha} \sim \text{Binomial Negativa}(r = 3,\, p = 0.05)$$` ] --- ## Visualizando a Binomial Negativa <img src="iscreta_avançadas_files/figure-html/bn-pmf-1.png" alt="" style="display: block; margin: auto;" /> .small[ `\(E(X) = r/p = 3/0.05 = 60\)` deploys esperados até a 3ª falha. ] --- ## Pergunta 5 .pergunta[ Para `\(X \sim \text{Binomial Negativa}(r = 3,\, p = 0.05)\)`: 1. Calcule `\(E(X)\)` e `\(\mathrm{Var}(X)\)`. 2. Qual a probabilidade de a **3ª falha** ocorrer **exatamente** no 60º deploy? 3. Qual a probabilidade de a 3ª falha ocorrer **até o 40º deploy**: `\(P(X \le 40)\)`? ] .pausa[⏸ Calculem — 5 minutos] --- ## Resposta 5 .solucao[ - `\(E(X) = 60\)` deploys | `\(\mathrm{Var}(X) \approx 1140\)` - `\(P(X = 60) \approx 0.0115\)` - `\(P(X \le 40) \approx 0.3233\)` (**32.3%** de chance de atingir 3 falhas até o 40º deploy) **Interpretação:** há 32.3% de chance de o protocolo de revisão ser acionado antes do 41º deploy — útil para o planejamento de sprints de manutenção. ] --- ## Pergunta 6 .pergunta[ ### Planejamento de capacidade O gerente pergunta: > "Se a equipe planeja **100 deploys** no próximo trimestre, > qual a probabilidade de precisarmos acionar a **revisão completa ao menos uma vez**?" 1. Reformule: qual evento precisamos calcular? 2. Calcule `\(P(X \le 100)\)`. 3. Que decisão de gestão esse número apoia? ] .pausa[⏸ Calculem e discutam — 5 minutos] --- ## Resposta 6 .solucao[ 1. O evento é: a 3ª falha ocorre dentro dos 100 deploys, ou seja, `\(X \le 100\)`. 2. `\(P(X \le 100) \approx 0.8817\)` (**88.2%**) 3. **Decisão de gestão:** - Com 88.2% de probabilidade, a revisão completa será acionada **ao menos uma vez** no trimestre. - O time deve **reservar uma sprint de manutenção** no planejamento trimestral — não é um evento improvável, é **esperado**. ] --- class: inverse, center, middle # Bloco 4 ## Síntese: Comparando as Três Distribuições --- ## Tabela Comparativa | Distribuição | Pergunta que responde | Parâmetros | `\(E(X)\)` | Contexto CI/CD | |---|---|---|---|---| | **Geométrica** | Até o **1º** evento | `\(p\)` | `\(1/p\)` | Deploys até o 1º bug | | **Hipergeométrica** | Defeituosos em amostra **sem reposição** | `\(N, K, n\)` | `\(nK/N\)` | Inspeção de lote de pacotes | | **Binomial Negativa** | Até o ** `\(r\)`-ésimo** evento | `\(r, p\)` | `\(r/p\)` | Deploys até a 3ª falha | .alerta[ **Atenção às condições de aplicação:** - Geométrica e Binomial Negativa: ensaios **independentes**, `\(p\)` constante; - Hipergeométrica: **população finita**, amostragem **sem reposição**. ] --- ## Pergunta Final — Integradora .pergunta[ Considere um sistema de software com as seguintes características: - `\(p = 0{,}08\)` de probabilidade de falha por deploy; - Lote de `\(N = 30\)` módulos, dos quais `\(K = 6\)` têm vulnerabilidades; - A equipe inspeciona `\(n = 8\)` módulos; - A revisão de segurança é acionada na **2ª** falha crítica. Para cada distribuição: 1. Identifique o modelo adequado e seus parâmetros. 2. Calcule `\(E(X)\)` em cada caso. 3. Qual dos três cenários exige ação **mais urgente**? ] .pausa[⏸ Resolvam em grupos de 4 — 8 minutos] --- ## Resposta Final .solucao[ | Distribuição | Parâmetros | `\(E(X)\)` | |---|---|---| | Geométrica | `\(p = 0{,}08\)` | 12.5 deploys | | Hipergeométrica | `\(N=30, K=6, n=8\)` | 1.6 módulos defeituosos | | Binomial Negativa | `\(r=2, p=0{,}08\)` | 25 deploys | **Ação mais urgente:** a Hipergeométrica indica que, em média, 1.6 módulos defeituosos passarão pela amostra — com `\(K/N = 20\%\)` de taxa de defeito, o lote merece inspeção completa. ] --- ## Para Pensar na Próxima Aula .pergunta[ Os modelos vistos assumem que ** `\(p\)` é conhecido**. Na prática, a equipe precisa **estimar `\(p\)`** a partir dos logs: > "Com base nos **últimos 200 deploys** (12 com falha), > como estimar `\(p\)` e construir um **intervalo de confiança**?" - Quais **parâmetros desconhecidos** aparecem em cada modelo? - Como passamos de **modelos teóricos** para **estimativas com dados reais**? - O que significa um intervalo de confiança para o **gerente de produto**? Esse será o passo para **inferência estatística**: estimação e testes de hipóteses. ] --- class: center, middle, inverse # Obrigado! **Prof. Hidelbrando Ferreira Rodrigues** Universidade Federal do Amazonas — UFAM 📧 hrodrigues@ufam.edu.br