[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