[R-br] Pedindo ajuda para simulação em R
Mauro Sznelwar
sznelwar em uol.com.br
Domingo Agosto 21 21:08:29 BRT 2011
Muito obrigado pelas dicas, mas no quarto problema, na distribuição de Pareto não deu certo, levou em conta o domínio 1 até infinito para calcular a função de distribuição?
Então cara, no 1o problema tu já tem a fórmula de X, então é só tocar na linguagem do R.
No caso, teu R é um numero vindo da Uniforme[0,1] e p é o parâmetro conhecido. Por exemplo:
p <- .8
x <- ((log(1-runif(1))/log(1-p))-1)
Só que no caso assim tu gera números reais entre -1 e Inf, e o dominio da geométrica são só os numeros naturais, então tem que arredondar.
p <- .8
ceiling(((log(1-runif(1))/log(1-p))-1))
Agora tu pode comparar com o rgeom() do R para ver se ta funcionando direito:
table(rgeom(10000,p))/10000
table(ceiling(((log(1-runif(10000))/log(1-p))-1)))/10000
Na 2 tu faz com while.
Na 3 tu errou os cálculos.
f(x) = alfa / x ^ (alfa+1), dai tu acha que F(x) = x ^ -alfa
Na 4 tu faz com while tb
2011/8/21 Mauro Sznelwar <sznelwar em uol.com.br>
1) Este algoritmo da distribuição geométrica(p)
Conhecendo a cdf: F(x)=1-(1-p)^x+1
F(x-1)=1-(1-p)^x
Usando o método da transformada inversa
F(x-1)<R<=F(x)
1-(1-p)^x<R<=1-(1-p)^x+1
(1-p)^x+1<R-1<=1-(1-p)^x
ln(1-R)/ln(1-p)-1<=X<ln(1-R)/ln(1-p)
X=[(ln(1-R)/ln(1-p))-1]
2)Gerar a distribuição de Poisson através do processo de Poisson que pode ser simulado gerando variáveis aleatórias exponenciais até sua soma exceder 1.
Lembrar o método da inversa para distribuição exponencial
X1= -1/A(ln(Ri))
Então A1+....+Ax<=1<A1+A2+....+Ax+Ax+1
torna-se
-somatória de i=1 até x(1/A(ln(Ri)<=1< -somatória(i=1 até x+1(1/lambda(ln(Ri))
somatória de i=1 até x((ln(Ri)>=lambda>somatória(i=1 até x+1(ln(Ri))
ln(produtória(i=1 até x(Ri)>= -lambda>ln(produtória(i=1 até x(Ri)
(produtória(i=1 até x(Ri)>=e^ -lambda>(produtória(i=1 até x(Ri)
Isto leva ao algoritmo da rejeição
Usando
(produtória(i=1 até x(Ri)>=e^ -lambda>(produtória(i=1 até x(Ri)
Passo 1: N=0 ; P=1
Passo 2: Gere número aleatório Rn-1 e substitua P por P*Rn-1
Passo 3: Se P<e^-lambda, então aceita N=n, senão rejeita o n, soma n por um e
retorne ao passo 2.
3) Gerar a distribuição de Pareto que é definida por f(x|alfa)=alfa*x^-alfa-1 sobre (1,infinito). Mostre que pode ser gerada como potencia -1/alfa de uma variável uniforme.
Eu tentei fazer a inversa mas não sei se é isto: a funçao de distribuição deve ser
F(x)=1-x^-alfa e ao fazer a tranformada inversa: log(1-x)=log(u)/-alfa
4)Gerar a distribuição Beta onde U e V são i.i.d e a distribuição é (U^1/alfa)/((U^1/alfa)+V^(1/Beta)), condicional em U^1/alfa+V^1/B<=1.Tem que ser gerado com a potencia -1/alfa de uma uniforme.
Desde já agradeço
.
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://listas.inf.ufpr.br/pipermail/r-br/attachments/20110821/917de039/attachment.html>
Mais detalhes sobre a lista de discussão R-br