Gerando seus próprios dados

June 5, 2011
By

This post was kindly contributed by Ridículas - go there to comment and to read the full post.

Se você está prestes a ficar louco por causa dos seus dados que não ficaram bons ou porque você perdeu tudo! Esse post vem bem de encontro as suas expectativas.

Vamos mostrar agora como gerar seus próprios dados! Isso vai ser feito pelo uso das funções de geração de números aleatórios (pseudo aleatórios) do R, especialmente a rnorm().

É claro que é brincadeira que você vai usar os dados simulados como os dados verdadeiramente obtidos. Mas pretendemos com a demonstração da geração de dados mostrar uma boa funcionalidade do programa R.

E sem dúvida sempre que você abstrair um pouco para imaginar como gerar dados é um ótima forma de melhor compreender a mecânica envolvida no processo. Outra coisa é que a simulação é uma “bonita” forma de realizar testes, se você por acaso tiver uma idéia (ou hipótese) a testar mas ela seja meio difícil de se fazer experimentalmente a simulação é uma boa alternativa!

Para começar vamos apresentar a função rnorm(). É com ela que geramos os números pseudo-aleatórios. seus argumentos são n que é número de valores que serão gerados e depois vem os parâmetros da normal sob o qual os valores serão gerados mean e sd. Se você não especificar esses parâmetros serão gerado valores de uma distribuição normal padrão, media 0 e desvio padrão 1. O R tem função para geração de dados de outras distribuições, poisson, binomial, gamma, beta, etc. Procure a documentação!

Assim, primeiro temos que postular o que queremos simular. No nosso exemplo (CMR) vamos mostrar como gerar dados de um experimento em DIC, qualquer (qualquer mesmo…). Teremos então t tratamentos, r repetições e uma média geral mu, especificamos qual deva ser a variância entre tratamentos (sg.t) e uma variância do erro (sg.e).

Veja o CMR:

t <- 20 # número de tratamentos

r <- 10 # número de repetições

mu <- 100
sg.t <- 15
sg.e <- 9 # parâmetros (média geral, var de trat e var do erro)

a.dat <- matrix(rnorm(t, 0, sqrt(sg.t)),
                nrow = t,
                ncol = r) # iésimo efeito de tratamento

e.dat <- matrix(rnorm(t*r, 0, sqrt(sg.e)),
                nrow = t,
                ncol = r) # iésimo efeito aleatório

plan <- transform(data.frame(expand.grid(trat = 1:t, rep = 1:r), # dados
                            obs = c(round(mu + a.dat + e.dat))),
                 trat = factor(trat),
                 rep = factor(rep))

Esse conjunto de dados gerados é (digamos assim) “único”. A chance de você rodando novamente esse código obter exatamente os mesmos dados é bem improvável. Se você quiser repetir exatamente esses valores você pode especificar a semente que gera os dados, isso é feito pela função set.seed(). Faça o teste!

O modelo de DIC é: y_{ij} = \mu + t_i + \varepsilon_{ij} Portanto depois de especificar os parâmetros do nosso modelo criamos matrizes, com as dimensões do experimento que contêm simulações geradas com esses parâmetros.

Inspecione a matriz de nome a.dat, veja que a dimensão da matriz é t por r, mas são gerados apenas t simulações, assim todas células da mesma linha terão os mesmos valores, que serão os efeitos de tratamentos.

Por outro lado, a matriz e.dat tem todos os valores diferentes. Que são os desvios aleatórios. Como os efeitos de tratamentos e do erro são independentes somando-se as células dessas matrizes obtemos os dados.

É claro que esse é apenas uma simulação, é extremamente simples, mas ela serve como exemplo de como realizar uma simulação mais complexa, que envolva um outro delineamento diferente. E se você pretende usar a simulação para testar outras hipóteses seria interessante realizar mais de um conjunto de dados. E realizar alguns “testes” sobre os conjuntos gerados para verificar a consistência dos dados gerados. Mas vamos deixar isso para outro post!

Veja por exemplo que se você realizar uma análise sobre esse conjunto de dados as variâncias que você obterá não serão exatamente os parâmetros que você estipulou, isso ocorre pois como o exemplo tem uma dimensão pequena ocorrem alguns desvios devido ao processo de amostragem inerente.


Tags: , , , , ,

Comments are closed.