Coleção modelos
Regressão polinomial
Desdobra o tratamento quantitativo da ANOVA em linear, quadrático, cúbico... e ajusta a curva.
O que o bloco faz
models/polinomial recebe o modelo de uma ANOVA (models/anova_dic, models/anova_dbc ou models/anova_dql) em que o tratamento é uma dose, desdobra a soma de quadrados de tratamentos em componentes linear, quadrático, cúbico… (1 gl cada, testados com o QM do resíduo da ANOVA) e ajusta a curva do grau escolhido. Tem duas saídas: modelo (models/fit, a curva, que vai para models/coefficients, models/predict e models/plot_regression) e quadro (models/effects, o desdobramento, com a equação, o R² e a dose de máxima eficiência técnica no rodapé).
Desde a versão 2 ele reúne o antigo models/dose_response; fluxos gravados com esse id abrem aqui.
Antes de continuar
Termos que esta página usa, em poucas palavras. As definições completas estão no glossário.
- Resíduo
- A diferença entre o valor observado e o valor que o modelo ajustado prevê para aquela observação. É nos resíduos que se conferem os pressupostos do modelo: eles devem parecer ruído, sem padrão.
- Coeficiente de determinação (R²)
- A fração da variação da resposta que o modelo explica, entre 0 e 1. Nunca diminui quando se acrescentam variáveis, por isso não serve sozinho para escolher entre modelos.
- Fator
- Uma variável explicativa categórica cujo efeito se quer estudar, como adubo, cultivar ou dose. Num experimento fatorial, dois ou mais fatores são combinados.
- Nível
- Cada valor que um fator assume no estudo: as doses 0, 50 e 100 kg/ha são três níveis do fator dose.
- Tratamento
- A condição aplicada a uma unidade experimental: um nível de um fator ou uma combinação de níveis de vários fatores. As comparações do experimento são entre tratamentos.
Quando usar
Quando o tratamento é quantitativo — doses de adubo, lâminas de irrigação, densidades, épocas — e a pergunta é como a resposta muda com a dose, e não só se as doses diferem. Com níveis igualmente espaçados e repetições iguais, a decomposição é a dos polinômios ortogonais dos livros; com espaçamento desigual entram as doses reais, e com repetições desiguais ou parcela perdida a partição é sequencial (cada grau depois do bloco e dos graus menores).
Pressupostos
O modelo que entra atende aos seus pressupostos (erros normais, variância constante, independência): as comparações usam o erro padrão dele.
Verificar:Normalidade dos resíduosLeveneDiagnóstico dos resíduos
Se falhar: Acerte o modelo antes: transformação,
models/glm, oumodels/lmerpara erros correlacionados.Os níveis do tratamento são quantitativos e a resposta pode variar de forma contínua entre eles (dose, época, espaçamento).
O modelo é um DIC, DBC ou DQL de um fator. Com repetições desiguais ou parcela perdida a partição é sequencial (cada grau depois do bloco e dos graus menores), e a curva é ajustada às médias da tabela.
O polinômio só vale dentro da faixa testada; fora dela a equação extrapola.
Se falhar: Não use a equação para prever doses fora dos níveis do experimento.
A falta de ajuste não é significativa para o grau escolhido.
Se falhar: Aumente o grau, ou considere um modelo não linear (platô, exponencial).
A MET (−b₁ / 2b₂) só é dose ótima se cair dentro da faixa testada e a parábola for o grau adequado.
Se falhar: A nota avisa quando a MET cai fora das doses; não a reporte como ótimo.
Configuração
Tratamento é o fator de doses (níveis numéricos; vírgula decimal serve). Grau da curva automático escolhe o maior componente significativo a 1 − Confiança; se nenhum é, a curva é a média geral (grau 0) e a nota diz isso. De 1 a 5 fixam o grau. Maior grau testado (padrão 3) é quantos componentes o quadro testa; desce sozinho até k − 1 com poucas doses. O quadro traz os desvios da regressão e a falta de ajuste do grau escolhido.
Exemplo
library(trama)
reg <- tr_registry()
tr_use("trama.models", registry = reg)
tr_flow(reg) |>
tr_add("dados", "models/example", dataset = "adubo_dbc") |>
tr_add("ajuste", "models/anova_dbc", resposta = "producao", tratamento = "dose", bloco = "bloco", from = "dados") |>
tr_add("resultado", "models/polinomial", tratamento = "dose", from = "ajuste")adubo_dbc simula cinco doses de nitrogênio (0 a 200 kg/ha) em quatro blocos. O linear (F = 228,2) e o quadrático (F = 104,1) são significativos, o cúbico e os desvios não (p = 0,66 e 0,71), e o grau automático é 2: ŷ = 3,051 + 0,0363x − 0,0001262x², R² = 0,9989, falta de ajuste do grau 2 com p = 0,84 e dose de máxima produção 143,8 kg/ha.
Como interpretar
Componente significativo quer dizer que aquela forma explica parte da diferença entre as doses. A falta de ajuste significativa avisa que a curva escolhida deixa diferença sem explicar. O R² é SQ da regressão / SQ de tratamentos: com três doses e grau 2 a curva passa por todas as médias e o R² é 1 por construção. A equação vale só dentro da faixa testada; a dose de máxima eficiência técnica, −b₁ / (2 b₂), quando cai fora das doses, é extrapolação e a nota avisa. A validação reproduz as SQ do exemplo do algodão de Montgomery (33,62, 343,21, 64,98 e 33,95), os contrastes contr.poly com as doses reais como scores e a ANOVA sequencial de lm(y ~ bloco + x + x² + x³ + dose) no DBC desbalanceado. A validação usa os dados do algodão de Montgomery (Design and Analysis of Experiments, 5.ª ed., tabela 3.1): as SQ 33,62, 343,21, 64,98 e 33,95 são calculadas desses dados e conferidas à mão pelos contrastes ortogonais (não copiadas de página impressa); e a decomposição sequencial do lm com poly().
Implementação
stats::poly()versão 4.6.0Colunas depoly(x, grau)nas doses reais em sequência depois do bloco (e linha/coluna no DQL), e o fator do tratamento por último (desvios da regressão); F com o QM do resíduo da ANOVA; curva porlmnas médias com peso r e erro padrão QM_res · (X'WX)⁻¹.
No código O bloco chama trama.models::tr_models_polinomial(), em trama.models/R/polinomial.R:47.
A conta é feita nesta chamada:
stats::poly(dose, gmax)
Outras funções de pacotes que o bloco usa (10)
stats::terms(stats::as.formula(modelo$formula))stats::as.formula(modelo$formula)stats::as.formula(paste(.tr_models_bt(modelo$resposta), "~", paste(c(controles, paste0(".p", seq_len(gmax)), .tr_models_bt(trat)), collapse = " + ")))stats::anova(stats::lm(f, data = d))stats::lm(f, data = d)stats::pf(f, gl, gl_res, lower.tail = FALSE)stats::as.formula(paste(.tr_models_bt(modelo$resposta), "~", if (length(rhs)) paste(rhs, collapse = " + ") else "1"))stats::lm(f, data = medias, weights = .r)stats::coef(ajuste)stats::coef(ajuste)
Referências
Livro-texto
- Pimentel-Gomes, F. (2009). Curso de estatística experimental. 15. ed. Piracicaba: FEALQ.
- Banzatto, D. A.; Kronka, S. N. (2006). Experimentação agrícola. 4. ed. Jaboticabal: Funep.
- Montgomery, D. C. (2017). Design and Analysis of Experiments. 9. ed. Hoboken: Wiley.