作者phil5566 (5566)
看板Statistics
标题[问题] 信赖区间和覆盖率的问题?
时间Tue Feb 21 02:10:23 2017
假设我们要估计参数θ,找到一个估计量θ^,
并且用bootstrap的方式找出stand error
接着建立95%信赖区间C.I.,重复产生100组样本,
并且算出100个θ^的值,建立100组C.I.,发现
100组里却只有80多组有包含θ(因为是模拟所以θ已知),
请问会造成这种现像的可能原因有哪些?
我自己想来想去只想到估计量θ^可能是有偏的估计量,
不知还有没有其他因素,请教版上大大,谢谢
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 36.224.17.7
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Statistics/M.1487614226.A.7DB.html
1F:推 andrew43: 可否请你把抽样和建立CI的过程说明清楚一点?我认真看 02/21 11:20
2F:→ andrew43: 了几次还是不能确定你怎麽做的。 02/21 11:20
3F:→ phil5566: 首先先用模拟的方式产生一组我有兴趣研究的样本,用这组 02/21 13:52
4F:→ phil5566: 样本求出θ^,因为θ^很复杂,所以没办法用手算求出Var,只 02/21 13:54
5F:→ phil5566: 好用bootstrap的方式求stand error代替,假设bootstrap 02/21 13:57
6F:→ phil5566: 1000次,再每bootstrap一次下也可求出θ^,假设叫θb^,共 02/21 14:00
7F:→ phil5566: 有1000个θb^,这1000个θb^的s.d.,即bootstrap下的 02/21 14:02
8F:→ phil5566: stand error,接这建立C.I.,我建立C.I.的方式有四种, 02/21 14:12
9F:→ phil5566: 以下用R的语法说明较快,先说明一些代号,th0=θ^, 02/21 14:17
10F:→ phil5566: th=那1000组的θb^,alpha<-c(0.025,0.975), 02/21 14:20
11F:→ phil5566: 1.normalC.I.:th0 + qnorm(alpha) * sd(th) 02/21 14:23
12F:→ phil5566: 2.basic C.I.:2*th0-quantile(th,rev(alpha),type=1) 02/21 14:25
13F:→ phil5566: 3.percentile C.I.:quantile(th, alpha, type=6) 02/21 14:27
14F:→ phil5566: 刚刚忘了说我bootstrap的方式是采抽後放回的抽样方式 02/21 14:30
15F:→ phil5566: 第4种 BCa C.I.最麻烦,zalpha <- qnorm(alpha) 02/21 14:48
16F:→ phil5566: z0<- qnorm(sum(th0 < th) / length(th)) 02/21 14:49
17F:→ phil5566: L<- mean(th.jack) - th.jack 02/21 14:49
18F:→ phil5566: a <- sum(L^3)/(6 * sum(L^2)^1.5) 02/21 14:49
19F:→ phil5566: adj.alpha <- pnorm(z0 + (z0+zalpha)/(1-a*(z0+zalpha) 02/21 14:50
20F:→ phil5566: )) 02/21 14:50
21F:→ phil5566: quantile(th, adj.alpha, type=6)--->BCa C.I. 02/21 14:50
22F:→ phil5566: 这里面的th.jack就是把我产生的那组资料 02/21 14:53
23F:→ phil5566: 假设叫T(n笔data),逐一的剔掉一笔data後,在剩余的data下 02/21 14:58
24F:→ phil5566: 所算出的估计量,假设叫θj^,所以从第一笔开始剔除到最後 02/21 15:00
25F:→ phil5566: 一笔,会得到n笔的θj^,这n笔θj^就叫作th.jack 02/21 15:02
26F:→ phil5566: 更正:是在剩余的data下所算出的"估计值",不是"估计量" 02/21 15:04
27F:→ phil5566: --------------------------------------------------- 02/21 15:05
28F:→ phil5566: 以上是产生一组data下所算出的4种C.I.,那我重复产生100 02/21 15:06
29F:→ phil5566: 组data下可算出100组4种C.I.,在分别去计算4种C.I.有没有 02/21 15:08
30F:→ phil5566: 包含我所设定的参数θ的比率,即为文中的覆盖率 02/21 15:10
31F:→ phil5566: 我比较疑惑的是我的4种C.I.都是建立在95%信心水准下 02/21 15:13
32F:→ phil5566: 照理说做100组应该要有95组左右的C.I都会包到设定的参数 02/21 15:15
33F:→ phil5566: 怎麽会掉到80多组?所以我想是不是估计量是有偏的,所以 02/21 15:16
34F:→ phil5566: 覆盖率才会有落差? 02/21 15:17
35F:→ phil5566: 不好意思~我说了一大堆~我也不知道有没有讲到重点,实际 02/21 15:28
36F:→ phil5566: 上我的θ是一个向量,不过就只是每个分量的元素都做和我 02/21 15:30
37F:→ phil5566: 上面所说的一样的事而已 02/21 15:31
38F:→ phil5566: 附上原始的codehttp://pastebin.com/jgUBxtvj 02/21 15:32
39F:→ andrew43: 我猜你boot.CI有问题:哪要那麽多额外的参数? 02/21 17:03
40F:→ andrew43: 一般来说只要一组n个数字,顶多再要求alpha=0.95就好了 02/21 17:04
41F:→ andrew43: 不管你要哪种CI,就只要这二个参数啊。为什麽要额外输入 02/21 17:05
42F:→ andrew43: th0 th stat 这些东西? 02/21 17:05
43F:→ phil5566: 推文里前3种C.I.只要用到th0和th,th就是您说的一组数字 02/21 17:41
44F:→ phil5566: x就是输入产生的data,而stat是算th.jack会用到的,简单来 02/21 17:45
45F:→ andrew43: 我想的求boot 95% CI就只要一个参数,就是资料本身,还 02/21 17:46
46F:→ phil5566: x和stat是算BCa C.I.会用到的东西所以我要输入 02/21 17:46
47F:→ andrew43: 是没搞懂额外参数的作用是什麽… 02/21 17:46
48F:→ andrew43: oh谢谢。 02/21 17:47
49F:→ phil5566: boot.CI回传的会是4种C.I.的值,我把4种C.I.的算法都写 02/21 17:48
50F:→ phil5566: 在一boot.CI这个函数了 02/21 17:49