[R-br] Fwd: Enc: model.matrix() (continuação)
ASANTOS
alexandresantosbr em yahoo.com.br
Sábado Março 28 11:54:26 BRT 2015
Walmes,
Conhece alguma função para automatizar a formação dos contrastes
abaixo:
## Se \beta = C\mu então \mu = C^{-1}\beta.
C <- rbind("mu"=c(1,1,1,1)/4,
"1vs2"=c(1,-1,0,0),
"2vs3"=c(0,1,-1,0),
"3vs4"=c(0,0,1,-1))
Pois em um fator com 4 níveis, tudo bem é bem razoável fazer "na mão",
porém e se eu tivesse um fator com 40 níveis como em trat <-gl(40, 30),
fica um pouco complicado, então eu gostaria de achar um jeito de criar
os vetores das comparações com maior facilidade,
Obrigado,
--
======================================================================
Alexandre dos Santos
Proteção Florestal
IFMT - Instituto Federal de Educação, Ciência e Tecnologia de Mato Grosso
Campus Cáceres
Caixa Postal 244
Avenida dos Ramires, s/n
Bairro: Distrito Industrial
Cáceres - MT CEP: 78.200-000
Fone: (+55) 65 8132-8112 (TIM) (+55) 65 9686-6970 (VIVO)
e-mails:alexandresantosbr em yahoo.com.br
alexandre.santos em cas.ifmt.edu.br
Lattes: http://lattes.cnpq.br/1360403201088680
===================================================================
On 22/03/2015 11:48, walmes . wrote:
> Uma matriz de contraste tem que ter no máximo k-1 funções e essas
> devem ser linearmente independentes. Os contrastes de Tukey formam uma
> matriz com k*(k-1)/2 hipóteses (ou funções) lineares. Além do mais, as
> funções não são linearmente independentes, o posto é sempre k-1. É por
> isso que você não consegue usar os contrastes de Tukey como definição
> de restrições na estimação. Abaixo segue CMR para esclarecer e como
> montar seus próprios contrastes.
>
> ## Fator de 4 níveis.
> trat <- gl(4, 3)
> levels(trat)
>
> ## k níveis => k-1 funções/combinações lineares independentes.
> contrasts(trat)
> contrasts(C(trat, contr="contr.sum"))
> contrasts(C(trat, contr="contr.helmert"))
>
> Xcontr <- multcomp::contrMat(n=1:nlevels(trat), type="Tukey")
> dim(Xcontr)
>
> ## Posto das matrizes (número de autovalores não nulos).
> eigen(crossprod(Xcontr))$values
> eigen(crossprod(contrasts(trat)))$values
>
> ## Como implementar contrastes próprios?
> ## Ex: Contrastes entre pares na sequência (1-2, 2-3, 3-4, etc).
> ## Se \beta = C\mu então \mu = C^{-1}\beta.
> C <- rbind("mu"=c(1,1,1,1)/4,
> "1vs2"=c(1,-1,0,0),
> "2vs3"=c(0,1,-1,0),
> "3vs4"=c(0,0,1,-1))
> K <- solve(C) ## K = C^{-1}.
>
> contrasts(trat) <- K[,-1] ## Retira o col do intercepto, deixa k-1.
>
> y <- rnorm(trat, as.numeric(trat), sd=0.01)
> tapply(y, trat, mean)
> mean(y)
> diff(tapply(y, trat, mean))
>
> m0 <- lm(y~trat)
> coef(m0)
> anova(m0)
> summary(m0)
>
> À
> disposição.
> Walmes.
>
>
> _______________________________________________
> 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.
===
---
Este email foi escaneado pelo Avast antivírus.
http://www.avast.com
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://listas.inf.ufpr.br/pipermail/r-br/attachments/20150328/54580731/attachment.html>
Mais detalhes sobre a lista de discussão R-br