簡體   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