[R-br] rodar função para cada nível de um fator

Luciano F. Sgarbi luciano.f.sgarbi em gmail.com
Terça Janeiro 29 18:44:44 BRST 2013


Algo assim não seria uma solução?

y<-split(data,factor(data[,"especie"]))
model<-function(x) x<-summary.aov(lm(x[,3]~x[,2]))
lapply(y,model)

Abraços


Em 29 de janeiro de 2013 18:10, Manoel Galdino <mcz.fea em gmail.com> escreveu:

> Você pode usar o pacote plyr. Ele permite dividir um banco em subsets e
> rodar uma função para cada subset e retornar um data.frame, ou vetor, ou
> lista, com o resultado da função em cada subset.
>
>
> Mas você tem um problema estatístico de múltiplas comparações e um teste t
> não é o mais recomendado.
> Basicamente, se um p-valor de 0,05 quer dizer a probabilidade de se obter
> dados tão ou mais extremos do que o encontrado assumindo que a hipótese
> nula (de nenhuma diferença) é verdadeira, então 1 em cada 20 testes vai dar
> significativo, mesmo com a hipótese nula sendo verdadeira.
>
> Há várias formas de corrigir isso e se você googlar por "multiple
> comparisons" vai achar algo.
>
> De toda forma, o jeito mais simples de fazer o que você pediu é
> simplesmente:
>
> reg <- lm(tamanho ~ sexo*especie)
> summary(reg)
>
> Você terá uma regressão com um termo de interação entre sexo e espécie e
> testará o efeito de sexo para cada espécie.
>
> No exemplo que você deu, a linha abaixo faz isso:
> (summary(lm(tamanho ~ sexo*especie))
>
> Nesse exemplo, sexo é significativo, bem como espécies b e c (e mrelação
> ao baseline de sexo feminino e espécie a). Porém, não há diferença no
> tamanho por sexo/espécie.
>
> abç
> Manoel
>
> 2013/1/29 marcelo costa <marcelokosta em yahoo.com.br>
>
>>  Prezados membros,
>>
>> Peço a ajuda de vocês para o seguinte problema:  Eu tenho uma planilha
>> com dois fatores (“espécie” e “sexo”) e uma  variável contínua
>> (“tamanho”). Quero analisar se existe diferença no tamanho de machos e
>> fêmeas para cada espécie. Assim, preciso fazer um teste T para cada
>> espécie.  O problema é que eu tenho 288 espécies (uma planilha de 6638
>> linhas) e, portanto, fazer um subset para cada espécie não me parece uma
>> solução muito boa (e provavelmente não é!).
>>
>> Eu queria fazer um teste T para cada nível do fator "especie". Alguém
>> tem alguma ideia de como eu poderia fazer isso sem precisar fazer um subset
>> para cada espécie?
>>
>> A princípio eu achei que isso seria fácil (e provavelmente seja), no
>> entanto o meu pouco conhecimento sobre o R não está me ajudando.
>>
>> Eu estou enviando um exemplo hipotético do formato da minha planilha:
>>
>> especie<-rep(c("a","b","c"),each=6)
>> sexo<-rep(c("f","m"), each = 3, len = 18)
>>
>> tamanho<-c(1.5,1.6,1.8,1.3,1.1,1.2,2.5,2.7,2.6,2.1,2.2,2.1,3.5,3.6,3.7,3.1,3.3,3.2)
>> data<-data.frame(especie,sexo,tamanho)
>>
>> Um abraço a todos e obrigado pela atenção.
>>
>> Marcelo Costa
>>
>>
>>
>> _______________________________________________
>> 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.
>>
>
>
>
> --
> Manoel Galdino
> https://sites.google.com/site/galdinomcz/
>
> _______________________________________________
> 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.
>



-- 

*Luciano F. Sgarbi*

Mestrando em Ecologia e Evolução
Laboratório de Ecologia de Insetos (sl. 222)
Departamento de Ecologia
Instituto de Ciências Biológicas - ICB 1
Universidade Federal de Goiás, campus II
Goiânia-GO
74001-970
Brazil
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://listas.inf.ufpr.br/pipermail/r-br/attachments/20130129/a51d2694/attachment.html>


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