在效应大小CI估计中找到非中心性参数

时间:2016-11-09 00:43:56

标签: r

我试图在效果大小周围找到置信区间。为此,我需要找到与 t 分布相关的非中心性参数,相对于相应的 t 统计量,概率为0.025和0.975(参见here for更多细节)。

我的问题是找到正确的非中心性参数的最有效方法是什么?我目前的解决方案是蛮力方法(实际上是作者推荐的)。例如

# test data
d <- c(1.73, 1.06, 2.03, 1.40, 0.95, 1.13, 1.41, 1.73, 1.63, 1.56)

# t-test of difference from 1
t_test <- t.test(d, rep(1, length(d)))

# calculate probability of the t stat with many ncps
prob <- mapply(pt, t_test$statistic, t_test$parameter, seq(-15, 15, length = 1e4))

probs <- data.frame(ncp = seq(-15, 15, length = 1e4), prob = prob)

probs$upper <- 0.025 - probs[ ,2]
probs$lower <- 0.975 - probs[ ,2]

# find ncp for upper bound
probs[which.min(abs(probs$upper)), 1]
## [1] 7.007201

# find ncp for lower bound
probs[which.min(abs(probs$lower)), 1]

## [1] 1.471647

这些是正确的,但似乎应该有更有效的方法。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

这对我来说看起来像是统计上的胡言乱语,就像做后期权力分析的无用任务一样。但我认为可以轻松地将这两个计算设置为优化调用,尽管这个练习的实用性最小:

> optim( par =c( x=1), 
         function( ncp) abs(0.025-pt(t_test$statistic, t_test$parameter, ncp) ))
$par
       x 
7.007642 

$value
[1] 2.925137e-08

$counts
function gradient 
      56       NA 

$convergence
[1] 0

$message
NULL

Warning message:
In optim(par = c(x = 1), 
         function(ncp) abs(0.025 - pt(t_test$statistic,  :
  one-dimensional optimization by Nelder-Mead is unreliable:
use "Brent" or optimize() directly

> optim( par =c( x=1), 
         function( ncp) abs(0.975-pt(t_test$statistic, t_test$parameter, ncp) ))
$par
       x 
1.472336 

$value
[1] 1.113777e-10

$counts
function gradient 
      56       NA 

$convergence
[1] 0

$message
NULL