[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