多项式回归

 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)


评论

此博客中的热门博文

V2ray websocket(ws)+tls+nginx分流

Rstudio 使用代理