Seja \(X\) uma v.a. contínua com fdp \(f(x)\), e seja a função inversa \(F^{-1}(u)\), se esta existir, em que \(0 \leq u \leq 1\), então, a amostra da variável aleatória de \(X\) pode ser simulada a partir da seguinte maneira:
Ex: Gere uma amostra aleatória de X usando o método da Transformação Inversa para a \(f(x)\ = \ \lambda e^{- \lambda x}\).
A \(f(x) \ = \ \lambda e^{- \lambda x}\) é a função de probabilidade da Distribuição exponencial.
Sabemos que a \(F(x)\) da dist. exponencial é \(1 - e^{- \ \lambda x}\).
Para encontrar \(F^{-1}(u)\), faremos:
\(F(x) \ = \ u\)
\(1 - e^{- \ \lambda x} \ = \ u\)
\(1 - e^{- \ \lambda x} \ - \ 1 = \ u - 1\)
\(- e^{- \ \lambda x} \ = \ 1 - u\)
\((-1) \cdot - e^{- \ \lambda x} \ = \ 1 - u \cdot (-1)\)
\(e^{- \ \lambda x} \ = \ 1 - u\)
\(ln(e^{- \ \lambda x}) \ = \ ln(1 - u)\)
\(- \ \lambda x \ = \ ln(1 - u)\)
\(- x \ = \frac{\ ln(1 - u)}{\lambda}\)
\(x \ = - \frac{ln(1 - u)}{\lambda}\)
O argoritmo:
exp_par <- function(n, lambda){ # defino os parâmetros
u <- runif(n) # Gerando n valores da distribuição uniforme de 0 a 1
x <- -log(1 - u)/lambda
return(x)
}
x <- exp_par(1000, 4)
y <- rexp(1000, rate = 4)
par(mfrow = c(1, 2))
hist(x)
hist(y)
Se \(X\) é uma variável aleatória discreta e
\(... < \ x_{i - 1} x_i < x_{i + 1} < ...\)
sejam pontos de descontinuidade de \(F_X(x)\), então a transformação inversa de
\(F_X^{-1} (u) \ = \ x_i\), onde \(F_X{(x_i - 1)} < u \leq F_X{(x_i)}\)
Para cada variável aleatória:
Gere números aleatórios a partir da Distribuição Uniforme (0, 1).
Determine \(x_i\) tal que \(F(x_{i-1}) < u \leq F(x_i)\).
Ex: Seja \(X\) uma v.a. com a seguinte fdp, usando o método da transformação inversa, encontre a média e a variância de \(X\).
\[\begin{array}{c |c c } \text{x} & 1 & 2 & 3 & 4\\ \hline \text{P (X = x)} & 0.2 & 0.4 & 0.3 & 0.1\\ \end{array}\]
A média de uma variável aleatória discreta é o \(\sum_{i = 1}^n x_i \cdot p_i\)
\(E (X) = \sum_{i = 1}^n x_i \cdot p_i\)
\(E (X) = 1 \ \cdot \ 0.2 \ + \ 2 \ \cdot \ 0.4 \ + \ 3 \ \cdot \ 0.3 \ + \ 4 \ \cdot \ 0.1\)
\(E (X) = 0.2 + 0.8 + 0.9 + 0.4\)
\(E (X) = 2.3\)
A variância:
\(Var(X) = E(X^2) - [E(X)]^2\)
\(E(X^2) = \sum_{i = 1}^n x_i^2 \cdot p_i\)
\(E(X^2) = 1^2 \cdot 0.2 + 2^2 \cdot 0.4 + 3^2 \cdot 0.3 + 4^2 \cdot 0.1\)
\((X^2) = 1 \cdot 0.2 + 4 \cdot 0.4 + 9 \cdot 0.3 + 16 \cdot 0.1\)
\(E(X^2) = 0.2 + 1.6 + 2.7 + 1.6\)
\(E(X^2) = 6.1\)
\(Var(X) = 6.1 - 5.29\)
\(Var(X) = 0.81\)
O algoritmo:
va_disc <- function(n) {
b <- numeric(n)
# b recebe um vetor de tamanho n
u <- runif(n)
# u recebe n realizações da uniforme (0,1)
for (i in 1:n) {
if (u[i] <= 0.2) {
b[i] <- 1
} else if (u[i] <= 0.6) {
b[i] <- 2
} else if (u[i] <= 0.9) {
b[i] <- 3
} else {
b[i] <- 4
}
# laço que armazena os valores em b de acordo com as probabilidades pré estabelecidas na distribuição
}
return(b)
}
n <- 1000
x <- va_disc(n)
dados_dist <- data.frame(Média = c(mean(x)),
Variância = c(var(x)))
dados_dist
## Média Variância
## 1 2.268 0.825001
freq <- table(x)
# Exbindo as proporções
p <- freq / n
p
## x
## 1 2 3 4
## 0.222 0.380 0.306 0.092
hist(x)
REFERÊNCIAS
RIZZO, Maria L. Statistical computing with R. 2. ed. New York: Chapman and Hall/CRC, 2019.