
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@yahoo.com.br alexandre.santos@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@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