我在使用R中的Multiple Regression- GAM 预测预测时遇到问题。目标是使用各种自变量和虚拟变量预测因变量的预测,我有大约2年多的时间我在测试和培训数据之间分配的数据。但在预测因变量时,它预测为负值,这是错误的。作为输入给出的数据,从属变量和独立变量都没有负值。因变量(被预测)通常是一个很小的值,大多数在0到25之间。其中作为因子使用的自变量很少,为0-20,很少有数百万。
有人可以帮我这个吗?问题是什么?如何纠正? 提前谢谢。
@Oliver - 我一直在使用的代码:
setwd("C:/Users/11th Aug")
ImpZs <- read.table("Train2.csv",sep=",",quote="\"",header=TRUE)
ImpZs <- ImpZs[complete.cases(ImpZs),]
PredZs <- read.table("Test2.csv",sep=",",quote="\"",header=TRUE)
library(base)
Zs <- unique(ImpZs$Z)
attach(PredZs)
attach(ImpZs)
ZsPred <- unique(PredZs$Z)
length(ZsPred)
bP <- 1
PGW2 <- data.frame(cbind(bP,1))
GResults1 <- data.frame(cbind(b,summary(GAM)$adj.r.squared,Accur))
Predict <- Accuracy
for (i in 1:length(Zs)){
b <- Zs[i]
temp <- ImpZs[ImpZs$Z==Zs[i],]
temp <- temp[complete.cases(temp),]
attach(temp)
GAM <- lm(X~ns(TU,df=10)+ns(OU,df=10)+ ns(TPO,df=9)+ ns(OPO,df=9)+ ns(XT,df=5)+ V + Oct + Nov+ Dec +Jan+Feb + Mar +Apr+May+June+July+ Aug+ Sep+ WK1+ WK2 +WK3 +WK4+WK5+Year)
Accuracy <- data.frame(cbind(b,round(GAM$fitted,digits=1),X, Week))
Predict <- rbind(Predict,Accuracy)
Accur <- round((1-(sum(abs((round((GAM$fitted),digits=0))-(X))))/sum(X)),digits=2)
t1 <- data.frame(cbind(b,summary(GAM)$adj.r.squared,Accur))
GResults1 <- rbind(GResults1,t1)
predP <- PredZs[PredZs$Z==Zs[i],]
bP <- Zs[i]
AG <- predict(GAM, newdata = predP , type = "response", se.fit = TRUE)
PGW1 <- data.frame(cbind(bP,AG$fit))
PGW2 <- rbind(PGW2,PGW1)
}