繁体   English   中英

使用预测值计算置信区间

[英]Calculating Confidence Intervals with Predicted Values

我有一个 dataframe 的学生属性和测试分数,我为每个年级(1 到 12)创建了一个线性 model。 我正在使用扫帚 package 为每个年级有效地创建一个 model。 下面是一个简化的示例数据集和我正在使用的代码。

一旦我训练了 model,我就用它来预测 2020 学年的分数。 一年级model仅应用于测试集中的一年级数据,二年级model仅应用于测试集中的二年级数据,依此类推。

#start df creation 

school_year <- rep(2017:2020, 120)
grade <- rep(1:12, each = 40)
attendance_rate <- round(runif(480, min=25, max=100), 1)
test_growth <- round(runif(480, min = -12, max = 38))
binary_flag <- round(runif(480, min = 0, max = 1))
score <- round(runif(480, min = 92, max = 370))
survey_response <- round(runif(480, min = 1, max = 4))

df <- data.frame(school_year, grade, attendance_rate, test_growth, binary_flag, score, survey_response) 

df$survey_response[df$grade == 1] <- NA

# end df creation

df_train <- df %>% filter(!(school_year == 2020))
df_predict <- df %>% filter(school_year == 2020)


#create models
model <- df_train %>%
  group_by(grade) %>% 
  nest() %>% 
  mutate(fit = map(data, ~ if(all(is.na(.x$survey_response)))
    lm(score ~ attendance_rate + test_growth + binary_flag, data = .x) 
    else lm(score ~ attendance_rate + test_growth + binary_flag + survey_response, data = .x)),
    tidied = map(fit, tidy),
    augmented = map(fit, augment),
    glanced = map(fit, glance))

#generate projections for values in df_predict
df_predict %>%
   nest(test_data = -grade) %>%
   inner_join(model, by = 'grade') %>%
   mutate(result = map2(fit, test_data, predict))

我正在尝试确定在生成样本外预测时是否可以为 df_predict 数据集中的每个学生生成 95% 的置信区间。 我需要标准差是特定于年级的。 这将给我一个最小和最大的切点,使我能够识别实际测试结果中的异常值。

试试这个。 您可以使用新的变量confinter创建另一个槽,您可以在其中启用interval = 'prediction'来计算 95% 水平的置信区间。 这里的代码:

#generate projections for values in df_predict using interval
dfpred2 <- df_predict %>%
  nest(test_data = -grade) %>%
  inner_join(model, by = 'grade') %>%
  mutate(result = map2(fit, test_data, predict),
         confinter=map2(fit, test_data, predict,interval = 'prediction'))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM