Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
ce089
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Harbor Registry
Model registry
Operate
Environments
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Walmes Marques Zeviani
ce089
Commits
aa33bf42
Commit
aa33bf42
authored
6 years ago
by
Walmes Marques Zeviani
Browse files
Options
Downloads
Patches
Plain Diff
Adiciona slides sobre GNA Uniforme.
parent
f94c899e
No related branches found
No related tags found
No related merge requests found
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
_site.yml
+6
-0
6 additions, 0 deletions
_site.yml
slides/03-gna-uniforme.Rnw
+367
-0
367 additions, 0 deletions
slides/03-gna-uniforme.Rnw
with
373 additions
and
0 deletions
_site.yml
+
6
−
0
View file @
aa33bf42
...
@@ -29,6 +29,12 @@ navbar:
...
@@ -29,6 +29,12 @@ navbar:
href
:
slides/01-revis-program.pdf
href
:
slides/01-revis-program.pdf
-
text
:
"
Doc.
e
avaliação
de
código."
-
text
:
"
Doc.
e
avaliação
de
código."
href
:
slides/02-docum-codigo.pdf
href
:
slides/02-docum-codigo.pdf
-
text
:
"
GNA
Uniformes"
href
:
slides/03-gna-uniforme.pdf
-
text
:
"
----------"
-
text
:
"
Arquivos
complementares"
-
text
:
"
GNA
Uniformes
(2015)"
href
:
http://leg.ufpr.br/~walmes/ensino/ce089-2015-02/aula02_gna-2015-02.html
# - text: "Estruturas de controle"
# - text: "Estruturas de controle"
# href: slides/01-estru-repet.html
# href: slides/01-estru-repet.html
# - text: "Teorema da Transformação da Probabilidade"
# - text: "Teorema da Transformação da Probabilidade"
...
...
This diff is collapsed.
Click to expand it.
slides/03-gna-uniforme.Rnw
0 → 100644
+
367
−
0
View file @
aa33bf42
%-----------------------------------------------------------------------
\documentclass[serif, professionalfont, usenames, dvipsnames]{beamer}
\usepackage[T1]{fontenc}
% ATTENTION: preamble.tex contains all style definitions.
\input{config/preamble.tex}
% \usepackage[backend=bibtex, style=authoryear]{biblatex}
\addbibresource{config/refs.bib}
<<include = FALSE>>=
source("config/setup.R")
@
%-----------------------------------------------------------------------
\title{Geração de números uniformes}
\subtitle{Importância e principais algorítmos}
\date{\small{ \Sexpr{sprintf('Atualizado em %s', Sys.Date())}}}
%-----------------------------------------------------------------------
\begin{document}
{\setbeamertemplate{footline}{}
\frame{\titlepage} %--------------------------------------------------
}
\begin{frame}{}
{\large Justificativas}
\begin{itemize}
\item Simulação computacional de processos estocásticos depende da
geração de números aleatórios (GNA).
\item TODO TODO TODO TODO TODO TODO TODO TODO TODO TODO TODO TODO TODO TODO TODO TODO TODO TODO TODO TODO TODO TODO TODO TODO TODO TODO
\end{itemize}
{\large Objetivos}
\begin{itemize}
\item Discutir a importância da geração de números aleatórios em Estatística.
\item Descrever os principais algorítmos para GNA uniformes.
\end{itemize}
\end{frame}
%-----------------------------------------------------------------------
\begin{frame}{A distribuição uniforme}
Se uma variável aleatória $X$ tem distribuição uniforme contínua entre
$a$ e $b$, denotamos $X \sim \text{U}(a, b)$, e sua função de
densidade é
\begin{equation}
f(x, a, b) = \frac{1}{b - a} \cdot I(a \leq x < b), \quad -\infty < a < b < \infty.
\end{equation}
A função de probabilidade é
\begin{equation}
F(x, a, b) = \Pr(X < x) = \int_{-\infty}^{x} f(x, a, b)\, \text{d}x =
\begin{cases}
0, & x < a \\
\dfrac{x - a}{b - a}, & a \leq x < b\\
1, & x \geq b.
\end{cases}
\end{equation}
A média e variância são funções dos parâmetros
\begin{equation}
\text{E}(X) = \frac{a + b}{2} \quad\text{e}\quad \text{V}(X) = \frac{(b - a)^2}{12}.
\end{equation}
\end{frame}
%-----------------------------------------------------------------------
\begin{frame}{Importância da distribuição uniforme}
\begin{itemize}
\item A distribuição tem pouca importância do ponto de vista de
modelagem.
\item Porém, para simulação computacional, ela é central.
\item Números aleatório da Uniforme são:
\begin{itemize}
\item O principal ingrediente para GNA de outras distribuições.
\item Usados em várias aplicações de Monte Carlo
(e.g. integração MC, inf. Bayesiana por MCMC, etc.)
\item Utilizados em otimização estocástica.
\item Empregados em jogos digitais (e.g. poker online).
\end{itemize}
\end{itemize}
\end{frame}
%-----------------------------------------------------------------------
\begin{frame}[allowframebreaks]{Geração de números aleatórios}
{\large Números aleatórios reais}
\begin{itemize}
\item São gerados por dispositivos via processos físicos.
\begin{itemize}
\item Globo de sorteio da Mega-Sena e bingos.
\item Lançamento de um dado, moeda.
\item Roleta de cassino.
\end{itemize}
\item Para uso em maior escala, são geralmente baseados em fenômenos
que geram um nível baixo de rúido.
\begin{itemize}
\item Ruído termal.
\item Ruído fotoelétrico.
\item Ruído acústico.
\item Movimento browniano de partículas.
\end{itemize}
\item Os sinais precisam ser traduzidos para números (intensidade).
\item A distribuição da v.a. pode não ter forma conhecida.
\item A v.a. pode ter correlação serial.
\item São usados em criptografia.
\end{itemize}
\framebreak
{\large Números pseudo-aleatórios reais}
\begin{itemize}
\item São gerados por programas de computador, ou seja, algorítmos.
\item Os número não são realmente aleatórios, pois, dado o algorítmo
gerador, pode-se prever os números (tem reprodutibilidade).
\item Do ponto de vista Estatístico, os números são imprevisíveis.
\item Bons GNA terão propriedades interessantes para aplicações
Estatística.
\end{itemize}
\end{frame}
%-----------------------------------------------------------------------
\begin{frame}{Propriedades desejáveis de um GNA}
\begin{itemize}
\item Os valores gerados são completamente imprevisíveis e passam em
testes de detecção de não aleatoriedade.
\item A distribuição da v.a. é matematicamente conhecida
(e.g. distribuição Uniforme).
\item O GNA produz v.a. que não apresentarem correlação serial, ou
seja, as realizações são independentes umas das outras.
\end{itemize}
\end{frame}
%-----------------------------------------------------------------------
\begin{frame}{Algorítmos para GNA Uniformes}
\begin{itemize}
\item Existem vários algorítmos para GNA. No R, existem 7 opções para
o algorítmo de GNA.
\item Peça \texttt{help(Random)} para consultar a respectiva documentação.
\end{itemize}
{\large Algorítmos disponíveis no R}
\mytwocolumns{0.49}{0.49}{
\begin{itemize}
\item Wichmann-Hill.
\item Marsaglia-Multicarry.
\item Super-Duper.
\item Mersenne-Twister (\textit{default}).
\end{itemize}
}{
\begin{itemize}
\item Knuth-TAOCP-2002.
\item Knuth-TAOCP.
\item L'Ecuyer-CMRG.
\end{itemize}
}
\end{frame}
%-----------------------------------------------------------------------
\begin{frame}{GNA feito por mim}
{\large Algorítmo}
\begin{enumerate}
\item Definir um número $u_0 \in (0, 1)$ e atribuir $i = 0$.
\item Calcular $u_{i+1} = 0.5+0.5\sin(2\pi u_{i}).$
\item Incrementar $i$ fazendo $i = i+1$.
\item Repetir 2--3 até obter a sequência de tamanho desejado.
\end{enumerate}
{\large Atividades}
\begin{itemize}
\item Implemente em R o algorítmo acima.
\item Considere $x_0 = 0.3$ e gere 1000 números.
\item Inspecione a amostra de números varificar existência de
independência, periodicidade e forma da distribuição.
\end{itemize}
\end{frame}
%-----------------------------------------------------------------------
\begin{frame}{GNA de von Neumann}
{\large Artigo}
von Neumann, J. (1951). Various Techniques Used in Connection with
Random Digits. In the Monte Carlo Method (ed. A.S. Householder et al.,
36-38). \textbf{Nat. Bur. Standards Appl.} Math Ser. no. 12.
{\large Algorítmo}
\begin{enumerate}
\item Definir um número $u_0$ de quadro digitos decimais e atribuir
$i = 0$.
\item Calcular $u_i^2$. Agregar zeros à esquerda, quando necessário,
para manter representação com 4 digitos:
$u_i^2 = d_7 d_6\ldots d_0$, onde cada $d_j$ é um inteiro entre 0 e
9.
\item Fazer $u_{i+1} = d_5 d_4 d_3 d_2$.
\item Incrementar $i$ fazendo $i = i+1$.
\item Repetir 2--4 até obter a sequência de tamanho desejado.
\end{enumerate}
Implemente e inspecione as propriedades deste GNA Uniformes.
\end{frame}
%-----------------------------------------------------------------------
\begin{frame}{O método congruencial linear}
O método congruencial linear é baseado na seguinte expressão recursiva
\begin{equation}
u_{i + 1} = (a u_{i} + c) \!\!\mod m,
\end{equation}
em que
\begin{itemize}
\item $u_i \in \mathbb{N}$ no intervalo $[0, m - 1]$,
\item $a \in \mathbb{N}^{+}$ é chamado de multiplicador,
\item $c \in \mathbb{N}^{+}$ é chamado de incremento,
\item $m \in \mathbb{N}^{+}$ é chamado de módulo.
\end{itemize}
Se $a$, $c$ e $m$ forem adequadamente escolhidos, a cardinalidade do
conjunto de valores gerados é no máximo $m$.
\end{frame}
%-----------------------------------------------------------------------
\begin{frame}{Implementação e avaliação}
Baseado nas orientações em \cite{ferreira2013estcompjava}.
\begin{itemize}
\item Implemente e inspecione usando as configurações
\begin{itemize}
\item $u_0 = 7$, $a = 7$, $c = 7$ e $m = 10$.
\item $u_0 = 7$, $a = 7^5$, $c = 0$ e $m = 2^{31} - 1$ (Park \& Miller, 1988, apud \cite{ferreira2013estcompjava}).
\end{itemize}
\end{itemize}
\cite{ferreira2013estcompjava} citando Schrage (1979), comenta que
\begin{equation}
a u_i \!\!\mod m = \begin{cases}
a (u_i \!\!\mod q) - r\lfloor u_i/q \rfloor & \text{se maior que } 0, \\
a (u_i \!\!\mod q) - r\lfloor u_i/q \rfloor + m & \text{caso contr\'ario},
\end{cases}
\end{equation}
é uma implementação mais portável para linguagens de baixo nível.
Em que $q = \lfloor m/a \rfloor$ e $r = m \!\!\mod a$, que resulta em
$m \approx aq + r$.
\end{frame}
%-----------------------------------------------------------------------
\begin{frame}[fragile, allowframebreaks]{Implementação em R}
{\large Método congruencial linear}
<<eval = FALSE>>=
# a = 7^5
# m = 2^31 - 1
rand_congr0 <- function(n = 1, x0, a = 16807, m = 2147483647) {
if (missing(x0)) x0 <- as.integer(Sys.time())
stopifnot(x0 < m)
n <- n + 1
x <- vector(mode = "integer", length = n)
x[1] <- x0
for (i in 2:n) {
x[i] <- (a * x[i - 1]) %% m
}
return(x[-1])
}
rand_congr0(n = 10, x0 = 321)
@
\framebreak
{\large Método congruencial linear de Schrage}
<<eval = FALSE>>=
rand_congr1 <- function(n = 1, x0) {
a <- 16807; m <- 2147483647; q <- 127773; r <- 2836
# Verifique que: a * (321 %% q) == a * (321 - r * floor(321/q)).
if (missing(x0)) x0 <- as.integer(Sys.time())
stopifnot(x0 < m)
n <- n + 1
x <- vector(mode = "integer", length = n)
x[1] <- x0
for (i in 2:n) {
k <- floor(x[i - 1]/q)
x[i] <- a * (x[i - 1] - k * q) - k * r
if (x[i] < 0) {
x[i] <- x[i] + m
}
}
return(x[-1])
}
@
\end{frame}
%-----------------------------------------------------------------------
{
\usebackgroundtemplate{\includegraphics[height=\paperheight, width=\paperwidth]{../img/looking-ahead.jpg}}
% \setbeamersize{text margin left=30mm}
\begin{frame}[b]{}
\hspace*{0.5\linewidth}
\begin{minipage}[t]{0.5\linewidth}
\hi{Próxima aula}
\begin{itemize}
\item Outros algorítmos para GNA Uniforme.
\item GNA de variáveis aleatórias discretas.
\item GNA de variáveis aleatórias contínuas.
\end{itemize}
\hi{Avisos}
\begin{itemize}
\item Sabatina no Moodle do conteúdo da semana passada.
\item Notas das sabatinas já estão disponíveis!
\end{itemize}
\end{minipage}
\end{frame}
}
%-----------------------------------------------------------------------
\begin{frame}[t, fragile, allowframebreaks]
\frametitle{Referências bibliográficas}
\printbibliography[heading=none]
\end{frame}
%-----------------------------------------------------------------------
\end{document}
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment