多项式回归
data(iris)
iris <- iris[,-c(5)]
#找自變數
library(rminer)
library(tidyverse)
model <- lm(Sepal.Length~Sepal.Width+Petal.Length+Petal.Width,iris)
lm <- Importance(model,iris,measure="AAD")
lm$imp
#檢查離群值
par(mfrow=c(1,3))
boxplot(iris$Sepal.Width)$out
boxplot(iris$Petal.Length)$out
boxplot(iris$Petal.Width)$out
par(mfrow=c(1,3))
scatter.smooth(x=iris$Sepal.Width, y=iris$Sepal.Length)
scatter.smooth(x=iris$Petal.Length, y=iris$Sepal.Length)
scatter.smooth(x=iris$Petal.Width, y=iris$Sepal.Length)
#隨機抽樣
n <- nrow(iris)
set.seed(1117)
subiris <- sample(seq_len(n), size = round(0.7 * n))
traindata <- iris[subiris,]
testdata <- iris[ - subiris,]
#建模 残差的三个检验>0.05
model <- lm(Sepal.Length~poly(Sepal.Width,3)+Petal.Length+Petal.Width,traindata)
#條件2~4
library(car)
ncvTest(model)#>a 殘差變異數有同質性
shapiro.test(model$residuals) #>a 殘差常態
library(lmtest)
dwtest(model)#>a 殘差獨立
vif(model) #<10 ok 10~100可能過度配適
#預測
future <- predict(model,testdata)
future <- as.data.frame(future)
final <- cbind(future,testdata)
library(dplyr)
final <- mutate(final,mape=abs(future-Sepal.Length)/Sepal.Length)
mean(final$mape)
评论
发表评论