问题似乎在问题5中?
退出线路65-75(DAE3.Rmd)
model.frame.default中有错误(Terms,newdata,na.action=na.action,xlev=object$xlevels):
因子DISTRICT具有新的级别3
呼叫:。。。预测->predict.lm->型号框架->型号框架故障
执行已停止
#1.读入数据,确定哪些变量是定量的,哪些是因素。如有必要,将变量STATUS、DISTRICT和SUBCONT更改为factors。使用随机种子101和70/30训练验证分割。将数据拆分为训练集和验证集。打印训练集和验证集的头。
df <- read.csv("FLAG2.csv")
df$STATUS <- factor(df$STATUS)
df$DISTRICT <- factor(df$DISTRICT)
df$SUBCONT <- factor(df$SUBCONT)
set.seed(101)
index <- sample(1:nrow(df), size = nrow(df)*0.7, replace = FALSE)
train <- df[index, ]
valid <- df[-index, ]
head(train)
head(valid)
#2.在两个方向上使用逐步法来找到预测合同价格(LOWBID)的模型。使用除DOTEST和SUBCONT之外的所有变量作为预测因子。如果合适的话,请考虑交互术语。陈述最终模型。
library(MASS)
nullmod <- formula(LOWBID ~ 1)
null <- lm(nullmod, data = train)
fullmod <- formula(LOWBID~(LBERATIO+NUMBIDS+DAYSEST+RDLNGTH+PCTASPH+PCTBASE+PCTEXCAV+PCTMOBIL+PCTSTRUC+PCTTRAFF)^2+STATUS+DISTRICT)
full <- lm(fullmod, data = train)
stepwise_mod <- stepAIC(null, scope=list(lower=null, upper=full), direction="both", trace=0, k=2)
final_model_stepwise <- summary(stepwise_mod)
final_model_stepwise
#3.使用反向选择来找到用于预测合同价格(LOWBID)的模型。使用除DOTEST和SUBCONT之外的所有变量作为预测因子。如果合适的话,请考虑交互术语。陈述最终模型。
backward_mod <- stepAIC(full, scope=list(lower=null, upper=full), direction="backward", trace=0, k=2)
final_model_backward <- summary(backward_mod)
final_model_backward
#4.使用r2、r2 adj、残差图和您选择的每个模型的回归系数的偏显著性检验来比较模型的样本内充分性。
# R-squared and adjusted R-squared values
cat("R-squared value for stepwise model:", round(summary(stepwise_mod)$r.squared, 4), "\n")
cat("Adjusted R-squared value for stepwise model:", round(summary(stepwise_mod)$adj.r.squared, 4), "\n")
cat("R-squared value for backward model:", round(summary(backward_mod)$r.squared, 4), "\n")
cat("Adjusted R-squared value for backward model:", round(summary(backward_mod)$adj.r.squared, 4), "\n")
# Residual plots
plot(stepwise_mod, which = c(1,2))
plot(backward_mod, which = c(1,2))
# Tests of partial significance for the regression coefficients
summary(stepwise_mod)$coefficients
summary(backward_mod)$coefficients
#5.使用您选择的每个模型的r2验证和ASE验证措施,比较模型的样本外有效性。
# R-squared validation values
valid_pred_stepwise <- predict(stepwise_mod, newdata = valid)
valid_pred_backward <- predict(backward_mod, newdata = valid)
cat("R-squared validation value for stepwise model:", round(cor(valid$LOWBID, valid_pred_stepwise)^2, 4), "\n")
cat("R-squared validation value for backward model:", round(cor(valid$LOWBID, valid_pred_backward)^2, 4), "\n")
# ASE validation measures
ASE_stepwise <- mean((valid$LOWBID - valid_pred_stepwise)^2)
ASE_backward <- mean((valid$LOWBID - valid_pred_backward)^2)
cat("ASE validation value for stepwise model:", round(ASE_stepwise, 4), "\n")
cat("ASE validation value for backward model:", round(ASE_backward, 4), "\n")
#6.推荐最终型号。