diff --git a/scripts/05_atribut.R b/scripts/05_atribut.R
new file mode 100644
index 0000000000000000000000000000000000000000..de37617e975796902fe61d658a1316fd7b288a72
--- /dev/null
+++ b/scripts/05_atribut.R
@@ -0,0 +1,141 @@
+#-----------------------------------------------------------------------
+# Gráfico de controle para a fração de itens não conformes.
+
+# Número de itens não conformes em amostras de tamanho n = 50.
+x0 <- c(12, 15, 8, 10, 4, 7, 16, 9, 14, 10, 5, 6, 17, 12, 22, 8, 10, 5,
+        13, 11, 20, 18, 24, 15, 9, 12, 7, 13, 9, 6)
+i0 <- seq_along(x0)
+
+# Proporção amostral de itens não conformes
+n <- 50
+p0 <- x0/n
+
+x <- x0
+p <- p0
+i <- i0
+
+plot(p ~ i, type = "o")
+
+# Linhas do gráfico de controle.
+L <- list(LC = mean(p))
+L <- within(L, {
+    m <- 3 * sqrt(LC * (1 - LC)/n)
+    LIC <- LC - m
+    LSC <- LC + m
+    rm(m)
+})
+
+ylim <- extendrange(c(p, unlist(L)), f = 0.1)
+plot(p ~ i, type = "o", ylim = ylim)
+with(L, abline(h = c(LC, LIC, LSC), lty = c(1, 2, 2)))
+
+# r <- c(15, 23)
+r <- identify(x = i, y = p, n = 2)
+
+L <- list(LC = mean(p[-r]))
+L <- within(L, {
+    m <- 3 * sqrt(LC * (1 - LC)/n)
+    LIC <- LC - m
+    LSC <- LC + m
+    rm(m)
+})
+
+ylim <- extendrange(c(p, unlist(L)), f = 0.1)
+plot(p ~ i, type = "o", ylim = ylim)
+with(L, abline(h = c(LC, LIC, LSC), lty = c(1, 2, 2)))
+text(x = i[r], y = p[r], labels = c("Material", "Operador"), pos = 3)
+
+x1 <- c(9, 6, 12, 5, 6, 4, 6, 3, 7, 6, 2, 4, 3, 6, 5, 4, 8, 5, 6, 7, 5,
+        6, 3, 5)
+p1 <- x1/n
+
+M <- list(LC = mean(p1))
+M <- within(M, {
+    m <- 3 * sqrt(LC * (1 - LC)/n)
+    LIC <- LC - m
+    LSC <- LC + m
+    rm(m)
+})
+
+x <- c(x0, x1)
+i <- seq_along(x)
+p <- c(p0, p1)
+
+ylim <- extendrange(c(p, unlist(L), unlist(M)), f = 0.1)
+plot(p ~ i, type = "o", ylim = ylim)
+with(L, abline(h = c(LC, LIC, LSC), lty = c(1, 2, 2)))
+with(M, abline(h = c(LC, LIC, LSC), lty = c(1, 2, 2), col = 2))
+abline(v = length(x0), lty = 3)
+
+x2 <- c(8, 7, 5, 6, 4, 5, 2, 3, 4, 7, 6, 5, 5, 3, 7, 9, 6, 10, 4, 3, 5,
+        8, 11, 9, 7, 3, 5, 2, 1, 4, 5, 3, 7, 6, 4, 4, 6, 8, 5, 6)
+p2 <- x2/n
+
+x <- c(x0, x1, x2)
+i <- seq_along(x)
+p <- c(p0, p1, p2)
+
+ylim <- extendrange(c(p, unlist(L), unlist(M)), f = 0.1)
+plot(p ~ i, type = "o", ylim = ylim)
+with(L, abline(h = c(LC, LIC, LSC), lty = c(1, 2, 2)))
+with(M, abline(h = c(LC, LIC, LSC), lty = c(1, 2, 2), col = 2))
+abline(v = length(x0), lty = 3)
+
+#-----------------------------------------------------------------------
+
+library(qcc)
+
+qcc(data = x0, type = "p", sizes = n)
+qcc(data = x1, type = "p", sizes = n, newdata = x2, newsizes = n)
+
+#-----------------------------------------------------------------------
+# Tamanho de amostra baseada na aproximação Poisson.
+
+# Deseja-se que a probabilidade de pelo menos um item defeituoso seja no
+# mínimo de gamma. Então Pr(X >= 1) >= gamma. Aproximando a binomial com
+# a Poisson fazendo lambda = n * p.
+
+# Probabilidade mínima de detectar pelo menos 1 item defeituoso.
+gamma <- 0.95
+
+# Probabilidade de defeito em um item (teórico).
+p <- 0.01
+
+# Grid de valores para lambda.
+lambda <- seq(0.05, 5, by = 0.05)
+
+# Como obter a probabilidade desejada com a ppois().
+ppois(1, lambda = 1)                     # Pr(X <= 1).
+1 - ppois(1, lambda = 1)                 # Pr(X > 1) = Pr(X >= 2).
+ppois(0, lambda = 1)                     # Pr(X <= 0).
+dpois(0, lambda = 1)                     # Pr(X = 0).
+1 - ppois(0, lambda = 1)                 # Pr(X > 0).
+ppois(0, lambda = 1, lower.tail = FALSE) # Pr(X > 0) = Pr(X >= 1).
+
+# P(X >= 1 | lambda = i).
+px <- 1 - dpois(0, lambda = lambda)
+px <- ppois(0, lambda = lambda, lower.tail = FALSE)
+
+plot(px ~ lambda, type = "l")
+abline(h = gamma)
+
+# Cria uma função por aproximação de segmentos de reta.
+lamb <- approxfun(x = px, y = lambda)
+
+# Na realidade, tem-se expressão analítica para Pr(D >= 1) ~ \lambda.
+curve(1 - exp(-lambda), from = 0, to = 5, xname = "lambda")
+abline(h = gamma)
+
+# E o calculo é analítico.
+-log(1 - gamma)
+
+# Como lambda = n * p, então n é o tamanho de amostra mínimo necessário.
+n <- ceiling(-log(1 - gamma)/p)
+
+plot(px ~ lambda, type = "l")
+curve(1 - exp(-lambda),
+      from = 0, to = 5, xname = "lambda",
+      add = TRUE, lty = 2, col = 4, lwd = 2)
+abline(h = gamma, v = n * p, col = 2)
+
+#-----------------------------------------------------------------------
diff --git a/slides/graf_contr_atribut.org b/slides/graf_contr_atribut.org
new file mode 100644
index 0000000000000000000000000000000000000000..57b0b8609a03d045fdf6a58702efedf78728cbd2
--- /dev/null
+++ b/slides/graf_contr_atribut.org
@@ -0,0 +1,162 @@
+#+TITLE:     Gráfico de Controle para Atributos
+#+AUTHOR:    Prof. Walmes Zeviani
+#+EMAIL:     walmes@ufpr.br
+#+DATE:
+#+LANGUAGE:  pt
+
+#+STARTUP: beamer
+#+STARTUP: oddeven
+
+#+LaTeX_CLASS: beamer
+#+LaTeX_CLASS_OPTIONS: [aspectratio=169, serif, professionalfont]
+
+#+BEAMER_THEME: default
+#+COLUMNS: %40ITEM %10BEAMER_env(Env) %9BEAMER_envargs(Env Args) %4BEAMER_col(Col) %10BEAMER_extra(Extra)
+
+# PREAMBULO ------------------------------------------------------------
+#+LaTeX_HEADER: \usepackage[brazil]{babel}
+#+LaTeX_HEADER: \usepackage[T1]{fontenc}
+#+LaTeX_HEADER: \usepackage[utf8]{inputenc}
+#+LaTeX_HEADER: \usepackage{mathpazo}
+#+LaTeX_HEADER: \usepackage{eulervm}
+#+LaTeX_HEADER: \usepackage{inconsolata}
+#+LaTeX_HEADER: \usepackage{hyperref}
+#+LaTeX_HEADER: \hypersetup{colorlinks, allcolors=., urlcolor=blue, runcolor=orange}
+
+# ----------------------------------------------------------------------
+# Para chunks R.
+#+LaTeX_HEADER: \usepackage{listings}
+#+LATEX_HEADER: \lstset{
+#+LATEX_HEADER:   keywordstyle=\color{blue},
+#+LATEX_HEADER:   commentstyle=\color{red},
+#+LATEX_HEADER:   stringstyle=\color{green},
+#+LATEX_HEADER:   basicstyle=\ttfamily\small,
+#+LATEX_HEADER:   columns=fullflexible,
+#+LATEX_HEADER:   basewidth={0.5em,0.4em}
+#+LATEX_HEADER: }
+
+#+LATEX_HEADER: \RequirePackage{fancyvrb}
+#+LATEX_HEADER: \DefineVerbatimEnvironment{verbatim}{Verbatim}{
+#+LATEX_HEADER:   fontsize=\footnotesize,
+#+LATEX_HEADER:   formatcom={\color[rgb]{0,0,0.5}}
+#+LATEX_HEADER: }
+
+#+OPTIONS: H:1 toc:nil
+
+# ----------------------------------------------------------------------
+
+* Quando Usar?
+
+  #+ATTR_BEAMER: :overlay +-
+  - Existem medidas de qualidade não descritas por escalas contínuas.
+  - São igualmente ou até mais percebidas pelo consumidor.
+  - Por exemplo, o item pode ser defeituoso/não defeituoso.
+  - É mais comum não conforme/conforme.
+  - São chamadas de atributos.
+
+#+BEAMER: \pause
+** Serão vistos
+
+  - Gráfico de Controle para a Fração Não Conforme.
+  - Gráfico de Controle para a Não Conformidades.
+
+* A Fração Não Conforme
+
+  #+ATTR_BEAMER: :overlay +-
+  - Atributos são baseados em levantamento (contagem) e não em medições.
+  - Fração não conforme é
+    $p = \dfrac{\text{\# itens não conformes}}{\text{\# total de itens}}$.
+  - Estar conforme pode considerar várias características simultâneas.
+  - Não satisfazer pelo menos uma implica em ser não conforme.
+  - $p$ pode ser expresso $0 \leq p \leq 1$.
+  - $p$ pode ser expresso em porcentagem, $0 \leq p \leq 100\%$, pois é
+    mais indicado para comunicação (relatórios, etc).
+  - Pode-se avaliar os itens conformes, é equivalente.
+
+* A Distribuição Binomial
+
+  #+ATTR_BEAMER: :overlay +-
+  - Procedimentos são baseados na distribuição binomial.
+  - Cada item produzido é um ensaio Bernoulli.
+  - Assume que a probabilidade de defeito é constante.
+  - Assume que itens são idenpendentes.
+  - Portanto, o número de itens não conformes (D) é binomial.
+  - Seja o D o número de itens não conformes numa a.a. de $n$, então
+    $$\Pr(D = x) = \binom{n}{x}\, p^{x}\, (1 - p)^{n - x}. $$
+  - $\text{E}(D) = n p$.
+  - $\text{V}(D) = n p (1-p)$.
+
+* A Fração Não Conforme na Amostra
+
+  #+ATTR_BEAMER: :overlay +-
+  - A fração não conforme é $\hat{p} = \dfrac{D}{n}$.
+  - A distribuição amostral de $\hat{p}$ vem da binomial de $D$, assim
+  - $\text{E}(\hat{p}) = p$.
+  - $\text{V}(\hat{p}) = \dfrac{p (1-p)}{n}$.
+  - Essas informações são usadas para construnir o gráfico de controle.
+
+* Gráfico de Controle para a Fração Não Conforme
+
+  #+ATTR_BEAMER: :overlay +-
+  - Seja $p$ a verdadeira fração não conforme ou um valor alvo.
+  - O gráfico de controle tem limites:
+    - $\text{LC} = p$
+    - $\text{LIC} = p - 3 \sqrt{\dfrac{p (1-p)}{n}}$
+    - $\text{LSC} = p + 3 \sqrt{\dfrac{p (1-p)}{n}}$
+  - Retirar $m$ amostras de $n$ elementos a fazer o gráfico.
+
+* Gráfico de Controle para a Fração Não Conforme
+
+  #+ATTR_BEAMER: :overlay +-
+  - Quando não há um valor de $p$, pode-se considerar a amostra para
+    estimá-lo. $$ \bar{p} = \sum{i = 1}^{m} p_{i}/n.$$
+  - Os limites são função de $\bar{p}$:
+    - $\text{LC} = \bar{p}$
+    - $\text{LIC} = \bar{p} - 3 \sqrt{\dfrac{\bar{p} (1-\bar{p})}{n}}$
+    - $\text{LSC} = \bar{p} + 3 \sqrt{\dfrac{\bar{p} (1-\bar{p})}{n}}$
+
+* Cuidados
+
+  #+ATTR_BEAMER: :overlay +-
+  - Os limites baseados na amostra são tentativos ou candidatos.
+  - Só devem ser usados se não apresentar fuga de controle.
+  - Pontos anomalos devem ser investigados, explicados e removidos.
+  - Ao recalcular os limites de controle, pode-se incluir novas
+    amostras.
+  - Cuidados quando usar um $p$ alvo
+    - Raramente o $p$ é conhecido.
+    - Facilmente o valor usado pode ser otimista demais.
+    - O processo pode estar em controle num nível diferente de $\bar{p}$
+      distante de $p$.
+    - Nem sempre é possível controlar $p$ com as variáveis de entrada,
+      então é melhor usar $\bar{p}$.
+
+* Aplicações
+
+  - =05_atribut.R=
+
+* Planejamento do Gráfico de Controle
+
+  #+ATTR_BEAMER: :overlay +-
+  - Definir:
+    - Tamanho da amostra (n)
+    - Intervalo de amostragem
+    - Distância entre os limites (e.g. $3\sigma$)
+  - A taxa de produção pode fixar o $n$.
+  - Não esquecer de coletar amostras em grupos racionais.
+  - A escolha do $n$ depende do $p$.
+  - Se $p$ pequeno, o $n$ deve ser grande para detectar itens não
+    conformes.
+
+* Tamanho de Amostra
+
+  #+ATTR_BEAMER: :overlay +-
+  - Considere o problema de definir o tamanho da amostra para que a
+    probabilidade de encontrar um item defeituoso seja de pelo menos
+    $0 < \gamma < 1$, ou seja $$\Pr(D \geq 1) \geq \gamma.$$
+  - Considerando a aproximação da binomial pela Poisson, faz-se $\lambda
+    = np$.
+  - $\Pr(X \geq 1) = 1 - \Pr(X = 0) =
+    1 - \dfrac{e^{-\lambda} \lambda^{0}}{0!} = 1 - e^{-\lambda}$.
+  - Se $1 - e^{-\lambda} = \gamma$, então $\lambda = -\log(1 - \gamma)$.
+  - Como $\lambda = np$, logo $n = \lambda/p$.
diff --git a/slides/graf_contr_atribut.pdf b/slides/graf_contr_atribut.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..a755c5b772809029cc6d33e42e9d47b0ae72f118
Binary files /dev/null and b/slides/graf_contr_atribut.pdf differ