Regressão Polinomial Múltipla
# Vamos simular a produção de massa seca de uma forrageira em função de doses de nitrogênio e potássio
# carregar conjunto de dados via web
dados<-read.table("https://19e31fa08e.cbaul-cdnwnd.com/fd58c287e8dcea635dc0088984f5a026/200000021-9e5459f4e9/regmult.txt",header=TRUE, sep="", dec=".")
# criar um modelo com dois termos lineares, dois quadráticos e duas interações
modelo1=lm(prod~N+K+I(N^2)+I(K^2)+N*K+I(N^2)*I(K^2), data=dados)
# para visualizar os coeficientes
modelo1
# para observar a significância dos coeficientes estimados e o coeficiente de determinação
summary(modelo1)
anova(modelo1)
# pode-se retirar os efeitos não significativos do modelo ou utilizar o procedimento de stepwise para selecionar o melhor modelo
step(modelo1)
# criar um novo modelo sugerido pelo procedimento de stepwise
modelo2=lm(prod~N+K+I(N^2)*I(K^2), data=dados)
modelo2
# note que ainda existem coeficientes não significativos
summary(modelo2)
anova(modelo2)
# se quiser utilizar o critério da significância dos coeficientes o modelo fica:
modelo3=lm(prod~N+K+I(N^2), data=dados)
modelo3
# note que todos os coeficientes são significativos
summary(modelo3)
anova(modelo3)
# comparando os dois modelos é difícil decidir qual a melhor opção
# pelo AIC o modelo 2 é melhor (menor AIC é melhor)
AIC(modelo2);AIC(modelo3)
# pelo BIC o modelo 3 é melhor (menor BIC é melhor)
BIC(modelo2);BIC(modelo3)
# pelo coeficiente de determinação ajustado o modelo 2 é melhor (maior é melhor)
summary(modelo2)[9];summary(modelo3)[9]
# considerando que o modelo 3 foi selecionado devido a sua maior simplicidade, vamos contruir um gráfico
# criando uma função a partir do modelo 3
c=coef(modelo3)
c
f=function(x,y){c[1]+c[2]*x+c[3]*y+c[4]*x^2}
# criar sequências do menor ao maior valor de N e K
n=seq(min(dados$N),max(dados$N), by=2)
k=seq(min(dados$K),max(dados$K), by=2)
# criar uma malha (rede) com as sequências e a função
rede=outer(n,k,f)
# utilizando a função persp() criamos o gráfico
persp(n,k,rede)
# fazendo alterações para melhorar a visualização gráfica
persp(n, k, rede, theta=295, phi=20, expand=0.9, col="light green", xlab = "Nitrogênio", ylab = "Potássio", zlab = "Produção",shade = 0.2, ticktype = "detailed", font.lab=2, cex.axis=0.8, main="Gráfico 3D")
# abaixo o gráfico gerado pelo script acima