[R-br] Dificuldade na utilização de um loop duplo para a criação de várias amostras

Augusto Ribas ribas.aca em gmail.com
Quinta Novembro 20 10:16:07 BRST 2014


Opa, ali na sua parte de  Simulação da amostra, veja que eu crio uma matriz
de tamanho n*n, dai vou realizando sua simulação e guardando nela.
Da pra otimizar isso usando apply, se colocar o seu codigo da simulação
dentro de uma função, mas colocar outro for é relativamente mais simples.
Basta a cada iteração, guardar sua simulação, uma linha de tamanho n da
matriz, na matriz que você criou.
Veja que agora cada linha da matriz saida é uma simulação.

## Tamanho da Amostra
n=10

## Parâmetros 1
a <- c(4.5,1.5)
b <- c(3.0,9.0)
p <- c(0.5,0.5)

## Função Acumulada Inversa
fmenos1_kuma = function(x,a,b){
 (1-(1-x)^(1/b))^(1/a)
}

## Mistura
mkuma = function(x){
 (a[1]*b[1]*(x^(a[1]-1))*(1-x^a[1])^(b[1]-1))*p[1] +
 (a[2]*b[2]*(x^(a[2]-1))*(1-x^a[2])^(b[2]-1))*p[2]
}

## Simulação da amostra

#Crie uma matriz para receber os dados
saida<-matrix(NA,n,n)
saida


for(j in 1:n) {
    u1 <- runif(n)
    u2 <- runif(n)
    x  <- numeric(n)
    for (i in 1:n){
        if(u1[i] <  p[1]) x[i]= fmenos1_kuma(u2[i],a[1],b[1])
        if(u1[i] >= p[1]) x[i]= fmenos1_kuma(u2[i],a[2],b[2])
    }
    saida[,j]<-x
}

saida



Espero ter ajudado. Se não for fazer muitas simulações isso deve resolver :)

Em 19 de novembro de 2014 15:23, Thiago Touya <thiagotouya em gmail.com>
escreveu:

> Boa tarde!
>
> Senhores, peço sua ajuda para criar um código que gere um número 'n' de
> amostras de tamanho 'n'.
>
> Atualmente, consigo fazer apenas uma amostra de tamanho 'n', mas gostaria
> de fazer de um modo prático a geração de outras 'n-1' amostras. No final
> gostaria de armazenar tudo numa matriz 'nxn'.
>
> Segue o código que estou usando para a geração de uma amostra:
>
> ## Tamanho da Amostra
> n=100
>
> ## Parâmetros 1
> a <- c(4.5,1.5)
> b <- c(3.0,9.0)
> p <- c(0.5,0.5)
>
> ## Função Acumulada Inversa
> fmenos1_kuma = function(x,a,b){
>  (1-(1-x)^(1/b))^(1/a)
> }
>
> ## Mistura
> mkuma = function(x){
>  (a[1]*b[1]*(x^(a[1]-1))*(1-x^a[1])^(b[1]-1))*p[1] +
>  (a[2]*b[2]*(x^(a[2]-1))*(1-x^a[2])^(b[2]-1))*p[2]
> }
>
> ## Simulação da amostra
>  u1 <- runif(n)
>  u2 <- runif(n)
>  x  <- numeric(n)
>  for (i in 1:n){
>   if(u1[i] <  p[1]) x[i]= fmenos1_kuma(u2[i],a[1],b[1])
>   if(u1[i] >= p[1]) x[i]= fmenos1_kuma(u2[i],a[2],b[2])
>  }
>
>
> O que eu pensei em fazer foi adicionar um outro 'For' no passo da
> simulação da
> amostra, mas  não consegui alimentar um objeto 'y' com os valores gerados
> para cada amostra.
>
>
> Obrigado.
>
> --
> Att,
> Thiago Morais de Carvalho (61 - 8169-5094)
>
> _______________________________________________
> R-br mailing list
> R-br em listas.c3sl.ufpr.br
> https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
> Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça
> código mínimo reproduzível.
>



-- 
Grato
Augusto C. A. Ribas

Site Pessoal: http://recologia.com.br/ <http://augustoribas.heliohost.org>
Github: https://github.com/Squiercg
Lattes: http://lattes.cnpq.br/7355685961127056
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://listas.inf.ufpr.br/pipermail/r-br/attachments/20141120/d6c87d13/attachment.html>


Mais detalhes sobre a lista de discussão R-br