[R-br] Desdobramento de um fatorial triplo

classic Classic list List threaded Threaded
5 messages Options
Reply | Threaded
Open this post in threaded view
|

[R-br] Desdobramento de um fatorial triplo

R-br mailing list
Caros,
Peço auxilio para um problema de um fatorial em que há um problema em atender aos pressupostos.

Agradeço alguma sugestão.

Maurício

m_seca_raiz = c(0.000000000, 0.000000000, 0.000460000, 0.000000000, 0.000000000, 0.000140000,
                0.000000000, 0.000300000, 0.000150000, 0.000000000, 0.000120000, 0.000500000,
                0.000560000, 0.000300000, 0.000000000, 0.000160000, 0.000160000, 0.000600000,
                0.000200000, 0.000200000, 0.000440000, 0.000000000, 0.000080000, 0.000240000,
                0.000380000, 0.000080000, 0.000000000, 0.000250000, 0.000960000, 0.000800000,
                0.000320000, 0.000760000, 0.000920000, 0.000366667, 0.000720000, 0.000540000,
                0.000440000, 0.000620000, 0.000100000, 0.000600000, 0.000200000, 0.000280000,
                0.000000000, 0.000520000, 0.000480000, 0.000000000, 0.000280000, 0.000280000,
                0.000800000, 0.000280000, 0.000000000, 0.000680000, 0.000700000, 0.000380000,
                0.000000000, 0.000360000, 0.000300000, 0.000340000, 0.000280000, 0.000360000,
                0.000340000, 0.001780000, 0.000250000, 0.000260000, 0.000300000, 0.000280000,
                0.000160000, 0.000120000, 0.000125000, 0.000080000, 0.000220000, 0.000320000)
meio = factor((rep(c("m2","m3"),each=12, times=3)))
sacarose = factor(rep(c("7,5","15,0","30,0"), each=24))
carvão = factor((rep(c("c1","c2"),each=6, times=6)))
tratamento = meio:sacarose:carvão
head(data.frame(m_seca_raiz, meio, sacarose, carvão, tratamento),18)


hist(m_seca_raiz)
boxplot(m_seca_raiz ~ tratamento,ylab="Massa seca da raiz", xlab="Tratamento",
        cex.axis=0.85 )

max(m_seca_raiz)

modelo_m_seca_raiz = aov(m_seca_raiz ~ tratamento)
summary(modelo_m_seca_raiz)

hist(modelo_m_seca_raiz$residuals)
shapiro.test(modelo_m_seca_raiz$residuals)
require(car)
leveneTest(modelo_m_seca_raiz$residuals ~ tratamento)

anova(modelo_m_seca_raiz)$'Mean Sq'[2]
res_pad_m_seca_raiz = modelo_m_seca_raiz$residuals/sqrt(anova(modelo_m_seca_raiz)$'Mean Sq'[2])
plot(modelo_m_seca_raiz$fitted.values,  res_pad_m_seca_raiz, ylim = c(-5,5))
abline(h=c(-3,3),lty=3)

#Elimando a observação 62
shapiro.test(modelo_m_seca_raiz$residuals[-62])
leveneTest(modelo_m_seca_raiz$residuals[-62] ~ tratamento[-62])

#Transformação Box-Cox
require(forecast)
#require(fpp)
BoxCox.lambda(m_seca_raiz+0.5, method = "guerrero", lower=-3,upper = 3)
BoxCox.lambda(m_seca_raiz+0.5, method = "loglik", lower=-3,upper = 3)
#lambda = BoxCox.lambda(m_seca_raiz,lower=-3)
#lambda
m_seca_raizt = BoxCox(m_seca_raiz+0.5, lambda=-3)

hist(m_seca_raizt)
boxplot(m_seca_raizt ~ tratamento, ylab="m_seca_raiz (transformada)", xlab="Tratamentos")
modelo_m_seca_raizt = aov(m_seca_raizt ~ tratamento)
summary(modelo_m_seca_raizt)
hist(modelo_m_seca_raizt$residuals)
plot(modelo_m_seca_raizt$residuals)
plot(modelo_m_seca_raizt$fitted.values,  modelo_m_seca_raizt$residuals)
shapiro.test(modelo_m_seca_raizt$residuals)
leveneTest(modelo_m_seca_raizt$residuals ~tratamento)


anova(modelo_m_seca_raizt)$'Mean Sq'[2]
res_pad_m_seca_raizt = modelo_m_seca_raizt$residuals/sqrt(anova(modelo_m_seca_raizt)$'Mean Sq'[2])
plot(modelo_m_seca_raizt$fitted.values,  res_pad_m_seca_raizt, ylim = c(-6,6))
abline(h=c(-3,3),lty=3)

_______________________________________________
R-br mailing list
[hidden email]
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.
Reply | Threaded
Open this post in threaded view
|

Re: [R-br] Desdobramento de um fatorial triplo

R-br mailing list
Sem maiores esclarecimentos sobre os dados, análise, etc, o problema parece ser apenas uma observação com valor extremo se comparado com as demais. Ela salta aos olhos já na análise exploratória. Daí a importância de uma boa análise exploratória. Ainda que seja composta de gráficos simples, negar a sua utilidade e partir para a análise sem ver de fato os dados pode gerar preocupações e escrita de código desnecessários.

Aproveitando o ensejo, eu tenho uma posição de reserva com relação a aplicação de sequencias de testes para a avaliação dos pressupostos. Eu tenho preferência pela análise visual porque ela dá um panorama amplo e detalhado da condição dos pressupostos com sugestões de curso de ação (é um outlier? é relação média variância? é assimetria?). Eu considero a análise de dados uma tarefa artesanal, por isso não se pode deixar de aplicar no olhar clínico do analista. Por outro lado, se fosse para automatizar a análise de dados como análise em fluxo contínuo de várias respostas, ou análise diária, grande volume de dados, pouco tempo disponível, extrema necessidade de eliminar subjetividade (como se estivesse diante de uma corte), etc etc, aí eu usaria tais testes como pré-teste para que não seja necessário correr a todo momento a análise diagnóstico pente fino.

da <- data.frame(m_seca_raiz, meio, sacarose, carvão, tratamento)

# Ocorrência dos pontos experimentais.
ftable(xtabs(~meio + sacarose + carvão, data = da))

library(lattice)

# Inspeção dos dados antes da análise.
xyplot(m_seca_raiz ~ sacarose | carvão,
       groups = meio,
       auto.key = TRUE,
       data = da,
       type = c("p", "a"))

# ATTENTION: Análise exploratória revela um ponto suspeito na cela
# c1:30,0:m3. Existe conhecimento de algo que tenha provocado um valor
# maior? E.g. parcela comprometida, erro de dosagem, erro de mensuração,
# etc?

# Valor extremo será eliminado. Isso não complica a análise.
m0 <- lm(m_seca_raiz ~ sacarose * carvão * meio,
         data = da,
         subset = m_seca_raiz < 0.0015)

par(mfrow = c(2, 2))
plot(m0)
layout(1)

# NOTE: Pressupostos OK! Apenas uma muito sutil indicação de relação
# média variância mas que não é alarmante.

# Verifica sugestão de transformação.
range(m0$model[, 1])
MASS::boxcox(update(m0, . + 0.00001 ~ .))
abline(v = 0.5, col = "red")

# Transformar por raíz deve melhorar quase nada, todavia, vamos
# experimentar.
m1 <- lm((m_seca_raiz + 0.00001)^0.5 ~ sacarose * carvão * meio,
         data = da,
         subset = m_seca_raiz < 0.0015)

par(mfrow = c(2, 2))
plot(m1)
layout(1)

# NOTE: leve melhoria na relação média-variância.

# Médias marginais (erros padrões diferentes pelo desbalanceamento).
emm <- emmeans::emmeans(m1, specs = "sacarose")
emm

# Contrastes entre média marginais.
emmeans::contrast(emm, method = "pairwise")

À disposição.
Walmes.


_______________________________________________
R-br mailing list
[hidden email]
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.
Reply | Threaded
Open this post in threaded view
|

Re: [R-br] Desdobramento de um fatorial triplo

R-br mailing list
Respostas dentro da mensagem.

À disposição.
Walmes.

On Mon, Nov 18, 2019 at 7:19 PM Maurício Lordêlo <[hidden email]> wrote:
Obrigado Walmes!
Tenho feito bastante esta análise exploratória por achar fundamental conhecer os dados. A questão que como dou muito suporte para trabalhos de mestrado e doutorado, eles cobram os testes de normalidade e homogeneidade de variâncias.
 
É uma cultura a ser mudada. Hábitos que de uma época com pouco recursos de visualização e do uso precedural da estatística (faça o texte X, se rejeitar H0, faça Y, caso contrário faça Z, etc). Também tenho contato com público assim, mas tô sempre argumentando, redijo a leitura dos gráficos, não reporto CV nas minhas análises (apenas quando o revisor não aceita as justificativas dadas para omissão).
 
Confesso que tenho muita dificuldade em explicar algumas funções e resultados do R para os pesquisadores da área de Agrárias e Biológicas. Muitas vezes é uma tarefa árdua pelos vícios que adquirem.

É uma cultura. Mudá-la leva tempo.
 
Tenho feito o uso do pacote ExpDes, devido ao fato de muitos já terem utilizado o SisVar.
Rodei esta transformação proposta [(m_seca_raiz + 0.00001)^0.5] usando a função a fat3dic deste pacote.
Aproveitando a oportunidade, como o coeficiente de variação deu bem alto neste caso, qual a sua sugestão para convencer estes pesquisadores que esta medida não é "a medida"?
Eles "idolatram" este coeficiente...rs rs rs.

Primeiro ponto é argumentar que não existe vínculo entre CV alto/baixo e não atendimento ou não dos pressupostos.
Pode-se ter CV baixo com sérios afastamentos. Pode-se ter CV alto com total conformidade com as suposições.
As pessoas criaram a regra no sentido inverso. Por exemplo, sempre viam que dados de contagem tem alto CV e geralmente não atendem os pressupostos. Aí entenderam que CV alto implica em falta de pressupostos, o que não é fundamentalmente verdade. Sempre que se usava uma transformação estabilizadora da variância, o CV era grande, mas porque a distribuição assumida para aplicações das funções estabilizadoras mais comuns é Poisson (contagem) ou proporção (Binomial), que não atendem os pressupostos. Portanto, a prática sem muita reflexão ou esclarecimento criou uma regra ao contrário, a de que CV alto é sinal de problema.

O segundo ponto são as faixas para classificação do CV em baixo, médio e alto. Elas são arbitrárias. Aí os pesquisadores querem comparar um CV de 8% para produtividade de grãos em experimentos em vários locais com um CV de 38% de crescimento radicular em cultivo in vitro avaliando o efeito de doses homeopáticas de hormônio. Não tem como comparar isso. Uma coisa é feita em macro escala, grandes parcelas, variável resposta controlada por muitos genes e condições ambientais. O outro é micro escala. Um é produtividade de grãos (kg/ha) o outro é comprimento (mm de raíz). Como que uma estatística adquiriu tamanha e desproporcional importância?

Se você pensar o que o CV está medindo, fica claro que ele não deveria ser usado em uma análise de experimentos. É o quociente entre desvio padrão residual e média amostral do experimento (CV 100 · DP/M). Mas se o experimento é feito com a premissa de existência de diferença entre médias (efeito dos tratamentos), que valor tem uma estatística que usa uma média global? Em alguns poucos contextos haverá justificativa (i.e. efeitos aleatórios). Outro ponto é que pressupõe uma relação 1:1 entre média e desvio padrão, justamente se contrapondo a suposição de ausência de relação entre média e variância.

Existem muitos pontos frágeis sobre o CV. Eu poderia prosseguir aqui por muitas linhas. Mas eu geralmente me atenho ao primeiro: não existe relação entre valor do CV com atendimento dos pressupostos (a menos se for conhecida a distribuição dos dados). O CV estando alto ou não, se os pressupostos forem atendidos, a parte inferencial está assegurada (distribuições das estatísticas de teste conforme esperado, cobertura dos intervalos de confiança conforme esperado, níveis de significância conforme esperado, etc). Mas se ainda o sujeito quiser olhar pro CV alto e dizer que o experimento foi mal conduzido (é a coisa mais comum de ouvir), o que é lamentável, veja se consegue dialogar e desfazer a cultura aos poucos.
 

Outro pedido é que gostaria de uma função diferente destas (do pacote ExpDes) para obter estes resultados do desdobramento. Você tem alguma sugestão cujas sintaxe e resultado
são mais ou menos fáceis de serem entendidas por este público?

Não tenho opções que sejam mais fáceis que o respostado pelo ExpDes ou SISVAR.
Tenho apenas alternativas mais gerais para casos não gaussianos, balanceados, etc. O que posso recomendar para fazer o desdobramento no caso no glm(), survreg() e outros modelos paramétricos ou delineamentos mais completos é `emmeans` e `multcomp`. Veja alguns exemplos a seguir.

 

Agradeço mais uma vez caso possa ajudar.

Abraço,

Maurício

_______________________________________________
R-br mailing list
[hidden email]
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.
Reply | Threaded
Open this post in threaded view
|

Re: [R-br] Desdobramento de um fatorial triplo

R-br mailing list
Prez@dos,

Quero dar um pitaco nessa conversa sobre CV e pressupostos (que são um eufemismo para normalidade):

Considerando que o importante são os resíduos, que quando são hígidos têm média zero, pela definição de CV seria indeterminado (tendendo ao infinito)!

Por transitividade, se a média estiver no entorno de zero e os desvios puderem oscilar ao redor de zero, mesmo para os dados "brutos" ter-se-ia a mesma situação. . .

Apenas para ajudar pois partilho a ideia que certas práticas do passado precisam ser banidas, mas parafraseando J. K. Galbraith "Todo o revisor anônimo é um cara que estudou Estatística com um livro de um autor que já morreu há muitos anos...." 😉

HTH

On Tue, Nov 19, 2019 at 2:53 PM Walmes Zeviani por (R-br) <[hidden email]> wrote:
Respostas dentro da mensagem.

À disposição.
Walmes.

On Mon, Nov 18, 2019 at 7:19 PM Maurício Lordêlo <[hidden email]> wrote:
Obrigado Walmes!
Tenho feito bastante esta análise exploratória por achar fundamental conhecer os dados. A questão que como dou muito suporte para trabalhos de mestrado e doutorado, eles cobram os testes de normalidade e homogeneidade de variâncias.
 
É uma cultura a ser mudada. Hábitos que de uma época com pouco recursos de visualização e do uso precedural da estatística (faça o texte X, se rejeitar H0, faça Y, caso contrário faça Z, etc). Também tenho contato com público assim, mas tô sempre argumentando, redijo a leitura dos gráficos, não reporto CV nas minhas análises (apenas quando o revisor não aceita as justificativas dadas para omissão).
 
Confesso que tenho muita dificuldade em explicar algumas funções e resultados do R para os pesquisadores da área de Agrárias e Biológicas. Muitas vezes é uma tarefa árdua pelos vícios que adquirem.

É uma cultura. Mudá-la leva tempo.
 
Tenho feito o uso do pacote ExpDes, devido ao fato de muitos já terem utilizado o SisVar.
Rodei esta transformação proposta [(m_seca_raiz + 0.00001)^0.5] usando a função a fat3dic deste pacote.
Aproveitando a oportunidade, como o coeficiente de variação deu bem alto neste caso, qual a sua sugestão para convencer estes pesquisadores que esta medida não é "a medida"?
Eles "idolatram" este coeficiente...rs rs rs.

Primeiro ponto é argumentar que não existe vínculo entre CV alto/baixo e não atendimento ou não dos pressupostos.
Pode-se ter CV baixo com sérios afastamentos. Pode-se ter CV alto com total conformidade com as suposições.
As pessoas criaram a regra no sentido inverso. Por exemplo, sempre viam que dados de contagem tem alto CV e geralmente não atendem os pressupostos. Aí entenderam que CV alto implica em falta de pressupostos, o que não é fundamentalmente verdade. Sempre que se usava uma transformação estabilizadora da variância, o CV era grande, mas porque a distribuição assumida para aplicações das funções estabilizadoras mais comuns é Poisson (contagem) ou proporção (Binomial), que não atendem os pressupostos. Portanto, a prática sem muita reflexão ou esclarecimento criou uma regra ao contrário, a de que CV alto é sinal de problema.

O segundo ponto são as faixas para classificação do CV em baixo, médio e alto. Elas são arbitrárias. Aí os pesquisadores querem comparar um CV de 8% para produtividade de grãos em experimentos em vários locais com um CV de 38% de crescimento radicular em cultivo in vitro avaliando o efeito de doses homeopáticas de hormônio. Não tem como comparar isso. Uma coisa é feita em macro escala, grandes parcelas, variável resposta controlada por muitos genes e condições ambientais. O outro é micro escala. Um é produtividade de grãos (kg/ha) o outro é comprimento (mm de raíz). Como que uma estatística adquiriu tamanha e desproporcional importância?

Se você pensar o que o CV está medindo, fica claro que ele não deveria ser usado em uma análise de experimentos. É o quociente entre desvio padrão residual e média amostral do experimento (CV 100 · DP/M). Mas se o experimento é feito com a premissa de existência de diferença entre médias (efeito dos tratamentos), que valor tem uma estatística que usa uma média global? Em alguns poucos contextos haverá justificativa (i.e. efeitos aleatórios). Outro ponto é que pressupõe uma relação 1:1 entre média e desvio padrão, justamente se contrapondo a suposição de ausência de relação entre média e variância.

Existem muitos pontos frágeis sobre o CV. Eu poderia prosseguir aqui por muitas linhas. Mas eu geralmente me atenho ao primeiro: não existe relação entre valor do CV com atendimento dos pressupostos (a menos se for conhecida a distribuição dos dados). O CV estando alto ou não, se os pressupostos forem atendidos, a parte inferencial está assegurada (distribuições das estatísticas de teste conforme esperado, cobertura dos intervalos de confiança conforme esperado, níveis de significância conforme esperado, etc). Mas se ainda o sujeito quiser olhar pro CV alto e dizer que o experimento foi mal conduzido (é a coisa mais comum de ouvir), o que é lamentável, veja se consegue dialogar e desfazer a cultura aos poucos.
 

Outro pedido é que gostaria de uma função diferente destas (do pacote ExpDes) para obter estes resultados do desdobramento. Você tem alguma sugestão cujas sintaxe e resultado
são mais ou menos fáceis de serem entendidas por este público?

Não tenho opções que sejam mais fáceis que o respostado pelo ExpDes ou SISVAR.
Tenho apenas alternativas mais gerais para casos não gaussianos, balanceados, etc. O que posso recomendar para fazer o desdobramento no caso no glm(), survreg() e outros modelos paramétricos ou delineamentos mais completos é `emmeans` e `multcomp`. Veja alguns exemplos a seguir.

 

Agradeço mais uma vez caso possa ajudar.

Abraço,

Maurício
_______________________________________________
R-br mailing list
[hidden email]
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]
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.
Reply | Threaded
Open this post in threaded view
|

Re: [R-br] Desdobramento de um fatorial triplo

R-br mailing list
Cesar,

Seus apontamentos são muito bem vindos.
Complementos na mensagem.

À disposição.
Walmes.


On Tue, Nov 19, 2019 at 9:04 PM Cesar Rabak por (R-br) <[hidden email]> wrote:
Prez@dos,

Quero dar um pitaco nessa conversa sobre CV e pressupostos (que são um eufemismo para normalidade):
 
Talvez não necessariamente. Quando me refiro a análise dos pressupostos estou considerando a abordagem gráfica da inspeção dos 4 gráficos padrões do R para o objeto de classe lm. Lá você está avaliando os pressupostos em propriedades que vão além da questão apenas relacionada a normalidade. Mas entendo que para a maioria pressupostos e normalidade são praticamente a mesma coisa.


Considerando que o importante são os resíduos, que quando são hígidos têm média zero, pela definição de CV seria indeterminado (tendendo ao infinito)!

Exatamente! Outro ponto é que coeficiente de variação é uma medida descritiva que introduzimos nos cursos de estatística básica quando analisamos a distribuição de uma variável aleatória, etc. No caso de um experimento, temos amostras de potencialmente diferentes populações (tratamentos), então esse CV coletivo está estimando uma única média quando podem haver várias. Na minha humilde opinião, essa maldição do CV (R² talvez seja o mesmo caso) provavelmente surgiu do senso de dever que o pesquisador sentia de discutir todos os números reportados pela maioria dos softwares e quase que todos eles colocam o CV na saída acompanhando um quadro de anova. Aí como é porcentagem, adimensional, etc, fácil de interpretar, ficou convidativo sempre discuti-lo até o ponto de se tornar exagerado, desproporcional e distorcido.
 

Por transitividade, se a média estiver no entorno de zero e os desvios puderem oscilar ao redor de zero, mesmo para os dados "brutos" ter-se-ia a mesma situação. . .

Apenas para ajudar pois partilho a ideia que certas práticas do passado precisam ser banidas, mas parafraseando J. K. Galbraith "Todo o revisor anônimo é um cara que estudou Estatística com um livro de um autor que já morreu há muitos anos...." 😉

HTH


_______________________________________________
R-br mailing list
[hidden email]
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.