首页 > 解决方案 > 用于创建自举假设检验的 r 函数

问题描述

我正在尝试在 r 中创建一个函数,该函数基于总体平均值的自举方法执行假设检验,该函数可以返回一个或两个侧面检验的 p 值。下面是我写的代码。当我调用函数时ht(Delta$dep_delay, 322, 1000, s_size = length(Delta$dep_delay), "greater", "mean"),无论我输入什么值,0 始终是输出。我正在尝试测试从肯尼迪国际机场出境的达美航空公司的航班平均起飞延迟是否大于 5 分钟。

sample_3054 <- function(data, reps=1000, s_size = length(data), 
stats =  c("mean", "median")){
  data <- na.omit(data)
  data <- as.data.frame(data)
  do(reps) * summarise(sample_n(data,size = s_size, replace = TRUE), 
  sampled = case_when(stats == "mean" ~ mean(data), 
  stats == "median" ~ median(data)))
}

ht <- function(data, specifiedMean, reps = 1000, p = c("equals", "less", "greater"), 
s_size = length(data), stats = c("mean", "median")){
  data <- na.omit(data)
  OBSMean <- mean(data)
  newValue <- data - OBSMean + specifiedMean
  c <- abs(specifiedMean - OBSMean)
  RSample <- sample_30543210(newValue, reps = 1000, s_size = length(newValue), "mean")
  ll <- specifiedMean - c
  ul <- specifiedMean + c
   if(p == "equals"){
    (sum(RSample$sampled <= ll) + sum(RSample$sampled >= ul)) / reps
   }else if(p == "less"){
(sum(RSample$sampled <= ll)) / reps
   }else if(p == "greater"){
(sum(RSample$sampled >= ul)) / reps
   }else{
print("Please choose "equals", "greater", or "less".")
   }
 }

标签: r

解决方案


推荐阅读