Re: [R-br] Fatorial tiplo com dados adicionais

Tiago, Obrigado por sua dica. Entretanto, o pacote ExpDes não analisa apenas um único tratamento adicional, mas quando tenho dentro de um fator. No meu caso tenho um tratamento adicional dentro de solo. Att. 2015-05-10 0:28 GMT-03:00 Alisson Lucrécio <alisson.lucrecio@ifgoiano.edu.br
:
Tiago,
Obrigado por sua dica. Entretanto, o pacote ExpDes não análisa apenas um único tratamento adicional, mas quando tenho dentro de um fator. No meu caso tenho um tratamento adicional dentro de solo.
Att.
2015-05-09 23:42 GMT-03:00 Tiago de Souza [via R-br] < ml-node+s2285057n4664460h96@n4.nabble.com>:
Te indico o pacote ExpDes se você quer uma rotina simples.
Att.
Tiago.
Alisson Lucrécio <[hidden email] <http:///user/SendEmail.jtp?type=node&node=4664460&i=0>> escreveu:
Caro Colegas da lista r-br,
Preciso de uma ajudar para montar uma análise de variância para um fatorial tripo (Solo x Solução de Extração x Concentração) e um fator adicional água.
Os dados fatoriais são compostos por 5 níveis de solos, 2 níveis de solução e 3 níveis de concentração. Os dados adicionais são compostos por 5 níveis de solo e 1 nível de solução (Água).
Segue um exemplo abaixo.
fat_data <- data.frame(Solo = gl(5, 18, la = LETTERS[1:5]), Sol = gl(2, 9, length = 90, la = c("PO4", "SO4")), Conc = gl(3, 3, length = 90, la = c(0.10, 0.25, 0.50)))
Rep <- apply(data.frame(Solo = rep(1:5, each = 18), Sol = rep(rep(c(0.5, 1), each = 9), 5), Conc = rep(rep(c(0.4, 0.9, 1.5), each = 3), 10)), 1, sum)
fat_data$Rep <- Rep + rnorm(length(Rep),0,0.5)
adi_data <- data.frame(Solo = gl(5, 3, la = LETTERS[1:5]), Sol = rep("Água", 15))
Rep <- rep(1:5, each = 3) adi_data$Rep <- Rep + rnorm(length(Rep),0,0.5)
Muito obrigado.
-- Alisson Lucrecio da Costa
_______________________________________________ R-br mailing list [hidden email] <http:///user/SendEmail.jtp?type=node&node=4664460&i=1> 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. _______________________________________________ R-br mailing list [hidden email] <http:///user/SendEmail.jtp?type=node&node=4664460&i=2> 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.
------------------------------ If you reply to this email, your message will be added to the discussion below:
http://r-br.2285057.n4.nabble.com/R-br-Fatorial-tiplo-com-dados-adicionais-t... To unsubscribe from R-br, click here <http://r-br.2285057.n4.nabble.com/template/NamlServlet.jtp?macro=unsubscribe_by_code&node=3357982&code=YWxpc3Nvbi5sdWNyZWNpb0BpZmdvaWFuby5lZHUuYnJ8MzM1Nzk4MnwtNTI1NDI5NDE3> . NAML <http://r-br.2285057.n4.nabble.com/template/NamlServlet.jtp?macro=macro_viewer&id=instant_html%21nabble%3Aemail.naml&base=nabble.naml.namespaces.BasicNamespace-nabble.view.web.template.NabbleNamespace-nabble.view.web.template.NodeNamespace&breadcrumbs=notify_subscribers%21nabble%3Aemail.naml-instant_emails%21nabble%3Aemail.naml-send_instant_email%21nabble%3Aemail.naml>
-- Alisson Lucrecio da Costa
-- Alisson Lucrecio da Costa

Segue uma rotina que pode ser útil ou servir de inspiração. ##----------------------------------------------------------------------------- require(doBy) require(multcomp) str(fat_data) str(adi_data) adi_data$Conc <- factor(0, levels=c(0, levels(fat_data$Conc))) da <- merge(fat_data, adi_data, all=TRUE) str(da) da$Conc <- factor(da$Conc, levels=sort(as.numeric(levels(da$Conc)))) da$Solo <- factor(da$Solo, levels=c("E","A","B","C","D")) da$Sol <- factor(da$Sol, levels=c("Água","PO4","SO4")) str(da) ftable(xtabs(~Solo+Sol+Conc, data=da)) ## Especificação do modelo completo. m0 <- lm(Rep~Solo*Sol*Conc, data=da) ## Efeitos não estimáveis devido ausência de celas. coef(m0) ## Quadro de anova. anova(m0) ##-------------------------------------------- ## TRUQUE: criar um conjunto de dados artificiais mas que seja um ## fatorial completo. ## Dados artificiais. fac <- c("Solo","Sol","Conc") L <- lapply(fac, function(x) levels(da$x)) m0$xlevels ## Dados artificiais, possui todas as celas. db <- do.call(what=expand.grid, args=m0$xlevels) db$Rep <- runif(nrow(db)) ## Fatorial completo com um registro por cela. ftable(xtabs(~Solo+Sol+Conc, data=db)) ## Com este, ajustar um modelo de mentira apenas para que se possa obter ## a matriz de coeficientes para se chegar as médias marginais. ## mb <- lm(formula(m0), data=db) mb <- update(m0, data=db) anova(mb) ## Ajustou sem restar graus de liberdade pois não colocou-se ## repetições. Não é um problema pois quer-se apenas tirar proveito da ## estrutura completa. sum(is.na(coef(mb))) ## Todos os efeitos estimados. ## Matriz para médias ajustadas de Solo. t(LSmatrix(mb, effect="Solo")) ## Cuidado! Essa matriz não contém os pesos corretos. É muito útil em ## experimentos fatorias completos, mas nos incompletos deve ser usada ## com o devido cuidado. ## Nessa matriz, remover as colunas dos efeitos não estimáveis. Guardar ## o nome dos efeitos estimados. estm <- names(coef(m0))[!is.na(coef(m0))] ## Matriz do modelo com colunas correspondentes à efeitos estimáveis. X <- model.matrix(m0)[, estm] ## Reajuste do modelo sem uso de fórmula, mas com o uso da matriz do ## modelo contendo apenas colunas de efeitos estimáveis. m1 <- lm(Rep~0+X, data=da) c(deviance(m0), deviance(m1)) ## São o mesmo modelo. ## Partindo a matriz do modelo. Havendo desbalanceamento (caselas ## presentes com frequência não igual), esse passo precisa ser revisto e ## adaptado. M <- by(data=X, INDICES=da$Solo, FUN=as.matrix) ## M <- by(data=X, INDICES=da$Sol, FUN=as.matrix) ## M <- by(data=X, INDICES=da$Conc, FUN=as.matrix) K <- t(sapply(M, FUN=colMeans)) str(K) ## "Pesos". Os pesos estão corretos, diferente daquela retornada pela ## LSmatrix(). MASS::fractions(t(K)) ## Médias ajustadas. K%*%coef(m1) ## Médias amostrais coincidem com as médias matriciais. with(da, tapply(Rep, Solo, FUN=mean)) ## with(da, tapply(Rep, Sol, FUN=mean)) ## with(da, tapply(Rep, Conc, FUN=mean)) ## Médias ajustadas são sempre bem vindas pela maioria das pessoas mas ## elas raramente fazem sentido. Por exemplo, fazem sentido se os ## efeitos marginalizados são nulos (termo pode ser removido do modelo) ## ou talvez considerados como aleatórios (esperança 0). ##-------------------------------------------- ## Contrastes entre níveis de Solo. require(wzRfun) ## No caso de não desejar instalar o wzRfun, apenas copie o código da ## função apc() para uma sessão R. Acesso pelo link: ## https://raw.githubusercontent.com/walmes/wzRfun/master/R/apc.R source("https://raw.githubusercontent.com/walmes/wzRfun/master/R/apc.R") G <- apc(K) summary(glht(m1, linfct=G), test=adjusted(type="fdr")) ## summary(glht(m1, linfct=G), test=adjusted(type="bonferroni")) ##----------------------------------------------------------------------------- À disposição. Walmes.

Obrigado, Walmes. Vou analisar a rotina. Att. 2015-05-10 23:10 GMT-03:00 Walmes Zeviani 2 [via R-br] < ml-node+s2285057n4664466h82@n4.nabble.com>:
Segue uma rotina que pode ser útil ou servir de inspiração.
##-----------------------------------------------------------------------------
require(doBy) require(multcomp)
str(fat_data) str(adi_data)
adi_data$Conc <- factor(0, levels=c(0, levels(fat_data$Conc)))
da <- merge(fat_data, adi_data, all=TRUE) str(da)
da$Conc <- factor(da$Conc, levels=sort(as.numeric(levels(da$Conc)))) da$Solo <- factor(da$Solo, levels=c("E","A","B","C","D")) da$Sol <- factor(da$Sol, levels=c("Água","PO4","SO4")) str(da)
ftable(xtabs(~Solo+Sol+Conc, data=da))
## Especificação do modelo completo. m0 <- lm(Rep~Solo*Sol*Conc, data=da)
## Efeitos não estimáveis devido ausência de celas. coef(m0)
## Quadro de anova. anova(m0)
##-------------------------------------------- ## TRUQUE: criar um conjunto de dados artificiais mas que seja um ## fatorial completo.
## Dados artificiais. fac <- c("Solo","Sol","Conc") L <- lapply(fac, function(x) levels(da$x))
m0$xlevels
## Dados artificiais, possui todas as celas. db <- do.call(what=expand.grid, args=m0$xlevels) db$Rep <- runif(nrow(db))
## Fatorial completo com um registro por cela. ftable(xtabs(~Solo+Sol+Conc, data=db))
## Com este, ajustar um modelo de mentira apenas para que se possa obter ## a matriz de coeficientes para se chegar as médias marginais. ## mb <- lm(formula(m0), data=db) mb <- update(m0, data=db) anova(mb)
## Ajustou sem restar graus de liberdade pois não colocou-se ## repetições. Não é um problema pois quer-se apenas tirar proveito da ## estrutura completa.
sum(is.na(coef(mb))) ## Todos os efeitos estimados.
## Matriz para médias ajustadas de Solo. t(LSmatrix(mb, effect="Solo"))
## Cuidado! Essa matriz não contém os pesos corretos. É muito útil em ## experimentos fatorias completos, mas nos incompletos deve ser usada ## com o devido cuidado.
## Nessa matriz, remover as colunas dos efeitos não estimáveis. Guardar ## o nome dos efeitos estimados. estm <- names(coef(m0))[!is.na(coef(m0))]
## Matriz do modelo com colunas correspondentes à efeitos estimáveis. X <- model.matrix(m0)[, estm]
## Reajuste do modelo sem uso de fórmula, mas com o uso da matriz do ## modelo contendo apenas colunas de efeitos estimáveis. m1 <- lm(Rep~0+X, data=da)
c(deviance(m0), deviance(m1)) ## São o mesmo modelo.
## Partindo a matriz do modelo. Havendo desbalanceamento (caselas ## presentes com frequência não igual), esse passo precisa ser revisto e ## adaptado.
M <- by(data=X, INDICES=da$Solo, FUN=as.matrix) ## M <- by(data=X, INDICES=da$Sol, FUN=as.matrix) ## M <- by(data=X, INDICES=da$Conc, FUN=as.matrix)
K <- t(sapply(M, FUN=colMeans)) str(K)
## "Pesos". Os pesos estão corretos, diferente daquela retornada pela ## LSmatrix(). MASS::fractions(t(K))
## Médias ajustadas. K%*%coef(m1)
## Médias amostrais coincidem com as médias matriciais. with(da, tapply(Rep, Solo, FUN=mean)) ## with(da, tapply(Rep, Sol, FUN=mean)) ## with(da, tapply(Rep, Conc, FUN=mean))
## Médias ajustadas são sempre bem vindas pela maioria das pessoas mas ## elas raramente fazem sentido. Por exemplo, fazem sentido se os ## efeitos marginalizados são nulos (termo pode ser removido do modelo) ## ou talvez considerados como aleatórios (esperança 0).
##-------------------------------------------- ## Contrastes entre níveis de Solo.
require(wzRfun)
## No caso de não desejar instalar o wzRfun, apenas copie o código da ## função apc() para uma sessão R. Acesso pelo link: ## https://raw.githubusercontent.com/walmes/wzRfun/master/R/apc.R
source("https://raw.githubusercontent.com/walmes/wzRfun/master/R/apc.R")
G <- apc(K)
summary(glht(m1, linfct=G), test=adjusted(type="fdr")) ## summary(glht(m1, linfct=G), test=adjusted(type="bonferroni"))
##-----------------------------------------------------------------------------
À disposição. Walmes.
_______________________________________________ R-br mailing list [hidden email] <http:///user/SendEmail.jtp?type=node&node=4664466&i=0> 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.
------------------------------ If you reply to this email, your message will be added to the discussion below:
http://r-br.2285057.n4.nabble.com/R-br-Fatorial-tiplo-com-dados-adicionais-t... To unsubscribe from R-br, click here <http://r-br.2285057.n4.nabble.com/template/NamlServlet.jtp?macro=unsubscribe_by_code&node=3357982&code=YWxpc3Nvbi5sdWNyZWNpb0BpZmdvaWFuby5lZHUuYnJ8MzM1Nzk4MnwtNTI1NDI5NDE3> . NAML <http://r-br.2285057.n4.nabble.com/template/NamlServlet.jtp?macro=macro_viewer&id=instant_html%21nabble%3Aemail.naml&base=nabble.naml.namespaces.BasicNamespace-nabble.view.web.template.NabbleNamespace-nabble.view.web.template.NodeNamespace&breadcrumbs=notify_subscribers%21nabble%3Aemail.naml-instant_emails%21nabble%3Aemail.naml-send_instant_email%21nabble%3Aemail.naml>
-- Alisson Lucrecio da Costa

Caro Walmes, Boa noite. Quando tenho dados adcionais é possível fazer teste de comparação de médias, e estudar a interação? Segue adaptação da rotina que passou para os meus dados. Obrigado. Alisson Lucrécio da Costa ######################################### full_data <- structure(list(Solo = structure(c(4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L), .Label = c("LHd", "LVd1", "LVd2", "OX", "RQ", "SXd"), class = "factor"), Sol = structure(c(1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L), .Label = c("Água", "PO4", "SO4"), class = "factor"), Conc = structure(c(1L, 1L, 1L, 2L, 2L, 2L, 3L, 3L, 3L, 4L, 4L, 4L, 2L, 2L, 2L, 3L, 3L, 3L, 4L, 4L, 4L, 1L, 1L, 1L, 2L, 2L, 2L, 3L, 3L, 3L, 4L, 4L, 4L, 2L, 2L, 2L, 3L, 3L, 3L, 4L, 4L, 4L, 1L, 1L, 1L, 2L, 2L, 2L, 3L, 3L, 3L, 4L, 4L, 4L, 2L, 2L, 2L, 3L, 3L, 3L, 4L, 4L, 4L, 1L, 1L, 1L, 2L, 2L, 2L, 3L, 3L, 3L, 4L, 4L, 4L, 2L, 2L, 2L, 3L, 3L, 3L, 4L, 4L, 4L, 1L, 1L, 1L, 2L, 2L, 2L, 3L, 3L, 3L, 4L, 4L, 4L, 2L, 2L, 2L, 3L, 3L, 3L, 4L, 4L, 4L, 1L, 1L, 1L, 2L, 2L, 2L, 3L, 3L, 3L, 4L, 4L, 4L, 2L, 2L, 2L, 3L, 3L, 3L, 4L, 4L, 4L), .Label = c("0", "0.1", "0.25", "0.5"), class = "factor"), Carbono = c(27.087, 30.352, 29.322, 242, 236.489, 222.298, 432, 438.257, 447.383, 627.138, 631.305, 623.106, 136.73, 75.979, 70.907, 102.099, 109.085, 103.674, 123.428, 128.664, 128.844, 39.875, 27.29, 27.084, 75.825, 79.792, 80.901, 103.56, 107.515, 102.137, 138.102, 136, 141.998, 40.357, 27.128, 30.341, 39.267, 42, 40.453, 46.644, 46.076, 45.548, 74.694, 76.737, 75.685, 395, 403.542, 395.252, 527, 539.921, 530.46, 622.059, 631.452, 629.786, 259.416, 201.837, 200.237, 269.717, 270.958, 269.994, 292, 286.941, 290.546, 72.797, 48.767, 47.596, 187, 181.801, 192.776, 234.527, 232, 229.607, 240, 229.223, 236.598, 79.515, 66.552, 61.401, 92.569, 96.655, 93.394, 104.37, 107.796, 106.256, 75.803, 70.931, 68.759, 391, 414.772, 431.379, 602.842, 615.489, 600, 787.489, 796.342, 798, 110, 134.839, 88.296, 104.46, 100.025, 102.778, 133.712, 136.63, 137.27, 153.782, 155.091, 152.531, 743, 763.369, 752.123, 986.662, 991.683, 1003, 1343.37, 1293, 1330.571, 280, 274.604, 279.925, 314.887, 319.158, 325.88, 350.673, 357.058, 346.08)), .Names = c("Solo", "Sol", "Conc", "Carbono"), row.names = c(NA, -126L), class = "data.frame") str(full_data) xyplot(Carbono ~ Conc|Solo, data=full_data, group = Sol, type=c("p","a")) ftable(xtabs(~Solo+Sol+Conc, data=full_data)) lm0 <- lm(Carbono ~ Solo*Sol*Conc, data = full_data) coef(lm0) anova(lm0) estm <- names(coef(lm0))[!is.na(coef(lm0))] X <- model.matrix(lm0)[, estm] lm1 <- lm(Carbono~0+X, data=full_data) names(lm1$coefficients) <- colnames(X) summary(lm1) c(deviance(lm0), deviance(lm1)) M1 <- by(data=X, INDICES=full_data$Solo, FUN=as.matrix) M2 <- by(data=X, INDICES=full_data$Sol, FUN=as.matrix) M3 <- by(data=X, INDICES=full_data$Conc, FUN=as.matrix) K1 <- t(sapply(M1, FUN=colMeans)) K2 <- t(sapply(M2, FUN=colMeans)) K3 <- t(sapply(M3, FUN=colMeans)) str(K1) str(K2) str(K2) MASS::fractions(t(K1)) MASS::fractions(t(K2)) MASS::fractions(t(K3)) K1%*%coef(lm1) K2%*%coef(lm1) K3%*%coef(lm1) ddply(full_data, "Solo", summarise, Carbono = mean(Carbono)) ddply(full_data, "Sol", summarise, Carbono = mean(Carbono)) ddply(full_data, "Conc", summarise, Carbono = mean(Carbono)) G1 <- apc(K1) G2 <- apc(K2) G3 <- apc(K3) summary(glht(lm1, linfct=G1), test=adjusted(type="fdr")) summary(glht(lm1, linfct=G2), test=adjusted(type="fdr")) summary(glht(lm1, linfct=G3), test=adjusted(type="fdr")) ################ 2015-05-11 0:13 GMT-03:00 Alisson Lucrécio <alisson.lucrecio@ifgoiano.edu.br
:
Obrigado, Walmes.
Vou analisar a rotina.
Att.
2015-05-10 23:10 GMT-03:00 Walmes Zeviani 2 [via R-br] < ml-node+s2285057n4664466h82@n4.nabble.com>:
Segue uma rotina que pode ser útil ou servir de inspiração.
##-----------------------------------------------------------------------------
require(doBy) require(multcomp)
str(fat_data) str(adi_data)
adi_data$Conc <- factor(0, levels=c(0, levels(fat_data$Conc)))
da <- merge(fat_data, adi_data, all=TRUE) str(da)
da$Conc <- factor(da$Conc, levels=sort(as.numeric(levels(da$Conc)))) da$Solo <- factor(da$Solo, levels=c("E","A","B","C","D")) da$Sol <- factor(da$Sol, levels=c("Água","PO4","SO4")) str(da)
ftable(xtabs(~Solo+Sol+Conc, data=da))
## Especificação do modelo completo. m0 <- lm(Rep~Solo*Sol*Conc, data=da)
## Efeitos não estimáveis devido ausência de celas. coef(m0)
## Quadro de anova. anova(m0)
##-------------------------------------------- ## TRUQUE: criar um conjunto de dados artificiais mas que seja um ## fatorial completo.
## Dados artificiais. fac <- c("Solo","Sol","Conc") L <- lapply(fac, function(x) levels(da$x))
m0$xlevels
## Dados artificiais, possui todas as celas. db <- do.call(what=expand.grid, args=m0$xlevels) db$Rep <- runif(nrow(db))
## Fatorial completo com um registro por cela. ftable(xtabs(~Solo+Sol+Conc, data=db))
## Com este, ajustar um modelo de mentira apenas para que se possa obter ## a matriz de coeficientes para se chegar as médias marginais. ## mb <- lm(formula(m0), data=db) mb <- update(m0, data=db) anova(mb)
## Ajustou sem restar graus de liberdade pois não colocou-se ## repetições. Não é um problema pois quer-se apenas tirar proveito da ## estrutura completa.
sum(is.na(coef(mb))) ## Todos os efeitos estimados.
## Matriz para médias ajustadas de Solo. t(LSmatrix(mb, effect="Solo"))
## Cuidado! Essa matriz não contém os pesos corretos. É muito útil em ## experimentos fatorias completos, mas nos incompletos deve ser usada ## com o devido cuidado.
## Nessa matriz, remover as colunas dos efeitos não estimáveis. Guardar ## o nome dos efeitos estimados. estm <- names(coef(m0))[!is.na(coef(m0))]
## Matriz do modelo com colunas correspondentes à efeitos estimáveis. X <- model.matrix(m0)[, estm]
## Reajuste do modelo sem uso de fórmula, mas com o uso da matriz do ## modelo contendo apenas colunas de efeitos estimáveis. m1 <- lm(Rep~0+X, data=da)
c(deviance(m0), deviance(m1)) ## São o mesmo modelo.
## Partindo a matriz do modelo. Havendo desbalanceamento (caselas ## presentes com frequência não igual), esse passo precisa ser revisto e ## adaptado.
M <- by(data=X, INDICES=da$Solo, FUN=as.matrix) ## M <- by(data=X, INDICES=da$Sol, FUN=as.matrix) ## M <- by(data=X, INDICES=da$Conc, FUN=as.matrix)
K <- t(sapply(M, FUN=colMeans)) str(K)
## "Pesos". Os pesos estão corretos, diferente daquela retornada pela ## LSmatrix(). MASS::fractions(t(K))
## Médias ajustadas. K%*%coef(m1)
## Médias amostrais coincidem com as médias matriciais. with(da, tapply(Rep, Solo, FUN=mean)) ## with(da, tapply(Rep, Sol, FUN=mean)) ## with(da, tapply(Rep, Conc, FUN=mean))
## Médias ajustadas são sempre bem vindas pela maioria das pessoas mas ## elas raramente fazem sentido. Por exemplo, fazem sentido se os ## efeitos marginalizados são nulos (termo pode ser removido do modelo) ## ou talvez considerados como aleatórios (esperança 0).
##-------------------------------------------- ## Contrastes entre níveis de Solo.
require(wzRfun)
## No caso de não desejar instalar o wzRfun, apenas copie o código da ## função apc() para uma sessão R. Acesso pelo link: ## https://raw.githubusercontent.com/walmes/wzRfun/master/R/apc.R
source("https://raw.githubusercontent.com/walmes/wzRfun/master/R/apc.R")
G <- apc(K)
summary(glht(m1, linfct=G), test=adjusted(type="fdr")) ## summary(glht(m1, linfct=G), test=adjusted(type="bonferroni"))
##-----------------------------------------------------------------------------
À disposição. Walmes.
_______________________________________________ R-br mailing list [hidden email] <http:///user/SendEmail.jtp?type=node&node=4664466&i=0> 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.
------------------------------ If you reply to this email, your message will be added to the discussion below:
http://r-br.2285057.n4.nabble.com/R-br-Fatorial-tiplo-com-dados-adicionais-t... To unsubscribe from R-br, click here <http://r-br.2285057.n4.nabble.com/template/NamlServlet.jtp?macro=unsubscribe_by_code&node=3357982&code=YWxpc3Nvbi5sdWNyZWNpb0BpZmdvaWFuby5lZHUuYnJ8MzM1Nzk4MnwtNTI1NDI5NDE3> . NAML <http://r-br.2285057.n4.nabble.com/template/NamlServlet.jtp?macro=macro_viewer&id=instant_html%21nabble%3Aemail.naml&base=nabble.naml.namespaces.BasicNamespace-nabble.view.web.template.NabbleNamespace-nabble.view.web.template.NodeNamespace&breadcrumbs=notify_subscribers%21nabble%3Aemail.naml-instant_emails%21nabble%3Aemail.naml-send_instant_email%21nabble%3Aemail.naml>
-- Alisson Lucrecio da Costa
-- Alisson Lucrecio da Costa
participantes (2)
-
Alisson Lucrécio
-
walmes .