Archive

Posts Tagged ‘dic’

Gerando seus próprios dados

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.

Funções para análise de experimentos balanceados

ExpDes é um pacote não oficial do R desenvolvido por Denismar Alves Nogueira, Eric Batista Ferreira e Portya Piscitelli Cavalcanti. O pacote contém funções para análise de dados de experimentos balanceados. As funções são de fácil aplicação e apresentam como resultado o quadro de análise de variância, teste de normalidade para os resíduos, o teste de médias para comparar níveis dos fatores (quando qualitativos) e ajuste de modelos de regressão polinomial (quando quantitativo).

As funções disponíveis no pacote ExpDes (nomes em português) podem ser aplicadas aos seguintes tipos de delineamentos experimentais, sempre considerando fatores de efeito fixo:

função descrição
dic() Delineamento Inteiramente Casualizado balanceado com um só fator.
dbc() Delineamento em Blocos Casualizados balanceado com um só fator.
dql() Delineamento em Quadrado Latino balanceado com um só fator.
fat2.dic() Delineamento Inteiramente Casualizado balanceado em fatorial duplo.
fat2.dbc() Delineamento em Blocos Casualizados balanceado em fatorial duplo.
fat2.ad.dic() Delineamento Inteiramente Casualizado balanceado em fatorial duplo com um tratamento adicional.
fat2.ad.dbc() Delineamento em Blocos Casualizados balanceado em fatorial duplo com um tratamento adicional.
fat3.dic() Delineamento Inteiramente Casualizado balanceado em fatorial triplo.
fat3.dbc() Delineamento em Blocos Casualizados balanceado em fatorial triplo.
fat3.ad.dic() Delineamento Inteiramente Casualizado balanceado em fatorial triplo com um tratamento adicional.
fat3.ad.dbc() Delineamento em Blocos Casualizados balanceado em fatorial triplo com um tratamento adicional.
psub2.dic() Delineamento Inteiramente Casualizado balanceado em esquema de parcelas subdivididas.
psub2.dbc() Delineamento em Blocos Casualizados balanceado em esquema de parcelas subdivididas.

Para casos experimentais onde houve perda de observações (desbalanceados), experimentos com blocos incompletos, experimentos em parcela subsubvividida, experimentos com mais de um tratamento adicional, experimentos com emprego de regressão não linear, experimentos com fatores de efeito aleatório, experimentos com emprego de confundimento entre fatores (fatoriais fracionários), experimentos com resposta não normal (e.g. proporções, contagens) pode-se usar as funções lm(), aov(), nls(), e nlme::lme(), glm() do R, dentre outras. No entanto, o usuário deve ter um conhecimento mais aprofundado sobre o tipo de experimento em questão para evitar conclusões equivocadas dos seus resultados. Esses tipos de experimentos exigem mais conhecimento de modelos lineares, álgebra de matrizes, estimação e inferência.

O pacote está disponível nas versões português e inglês. Confesso que só consegui instalar a versão em inglês mas sei que pessoas que instalaram a versão português com sucesso. Sempre ao usar um pacote, faça a citação do mesmo. Use a função citation("ExpDes"). No link está disponível o manual em português do pacote.