Obrigado Manoel,

Consegui resolver o problema com as funções do pacote plyr que você indicou. Obrigado pelas observações em relação às comparações múltiplas (vou cuidar disso).

Abraço.

 
Marcelo Costa



Laboratório de Dinâmicas Ecológicas
Programa de Pós-graduação em Entomologia - Doutorado
Departamento de Zoologia
Universidade Federal do Paraná - UFPR
Jardim das Américas, Curitiba, Paraná - Brasil
Caixa Postal 19020, CEP 81.531-980





De: Manoel Galdino <mcz.fea@gmail.com>
Para: r-br@listas.c3sl.ufpr.br; marcelo costa <marcelokosta@yahoo.com.br>
Enviadas: Terça-feira, 29 de Janeiro de 2013 18:10
Assunto: Re: [R-br] rodar função para cada nível de um fator

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@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@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/