微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

用预测值计算置信区间

如何解决用预测值计算置信区间

我有一个学生属性和考试成绩的数据框,并且为每个年级(1至12)创建了一个线性模型。我正在使用扫帚包装为每个年级水平有效地创建一个模型。下面是一个简化的示例数据集和我正在使用的代码

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

#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,predict,interval = 'prediction'))

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。