繁体   English   中英

在 R 中构建修剪均值的置信区间

[英]Constructing confidence intervals for trimmed means in R

我想测试修剪均值的覆盖概率,我使用 Wilcox 书中的公式作为置信区间:置信区间s_w 是 Winsorised 方差,γ 是比例系数,在我的代码中它表示为 alpha。 问题是,我的代码输出置信区间始终为 0,因此覆盖概率为 1。所以,我认为构造中存在一些错误。

代码:

sample_var <- function(data, alpha){
  n <- length(data)
  data <- sort(data)
  data_t <- data[(floor(n*alpha)+1):(n-floor(alpha*n))]
  m <- length(data_t)
  t_mean <- mean(data_t)
 sigma <-  (1/(1-2*alpha)^2)* ((1/n) *sum((data_t-t_mean)^2)+ alpha*(data_t[1]-t_mean)^2 +
                       alpha*(data_t[m]-t_mean)^2)
 sigma
}
sample_var <- Vectorize(sample_var, vectorize.args = "alpha")

    conf_int <- function(data,alpha){
      a <- floor(alpha * n)
      n <- length(data)
      df <- n-2*a-1
      data_t <- data[a:(n-a)]
      t_mean <- mean(data_t)
      t_quantile <- qt(p = alpha, df = df)
      sw <- sample_var(data = data, alpha = alpha)
      ul <- t_mean + t_quantile * sw / ((1-2*alpha)*sqrt(n))
      ll <- t_mean - t_quantile * sw / ((1-2*alpha)*sqrt(n))
     c(ll, ul)
    }

也许有人看到错误?

编辑:在这里,我尝试使用 wilcox.test 函数构造区间,但我不知道它是否准确地构造了修剪均值的区间。 此外,无论我使用哪个 alpha,对于给定的数据集,我都会得到相同的间隔。 所以,我认为子集论点是错误的。

set_seed(1)
data <- rnorm(100)
wilcox_test <- function(data, alpha){
  n <- length(alpha)
  a <- floor(alpha*n)+1
  b <- n-floor(alpha)
  wilcox.test(data, subset = data[a:b], conf.int = TRUE)
}

好的...使用 rnorm(100) 和 set.seed(1)

近乎...

set.seed(1)  # note set.seed() is what you want here, I think.
data <- rnorm(100)
wilcox_test_out <- wilcox.test(data, subset = data[a:b], conf.int = .95)
summary(wilcox_test_out)

# Note the CI's are in wilcox_test_out$conf.int for further use should you need them
wilcox_test_out$conf.int

暂无
暂无

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

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