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