概率矩阵在随机抽样中的作用及prob[a,b]抽样逻辑疑问
概率矩阵在抽样中的作用与
prob[a, b]的解析 一、概率矩阵的作用
你的prob是个2×2的概率对照表:行对应a的取值(1或2),列对应b的取值(1或2),每个格子里的数就是当a和b取对应值时,伯努利抽样的成功概率。用矩阵存这些概率比写一堆ifelse要简洁得多,尤其是状态变多的时候,改矩阵就行,不用调整逻辑代码。
二、prob[a, b]的关键逻辑(R的特殊索引规则)
你误以为会生成8×8矩阵,是因为没搞懂R里的向量式索引:当你用两个长度相同的向量去索引矩阵的行和列时,不是取子矩阵,而是按位置一一配对取元素,最后得到和索引向量一样长的向量:
a是8个1/2的向量,b也是8个1/2的向量- 第1个观测用
a[1]行、b[1]列的概率,第2个用a[2]行、b[2]列的概率……以此类推 - 最终
prob[a,b]就是8个概率值,正好对应你要的8个观测的抽样概率。
三、结合你的代码实例拆解
举个具体例子,假设抽样后a = c(1,2,1,2,1,1,2,2),b = c(1,2,2,1,1,2,1,2),那prob[a,b]就是依次取:
prob[1,1], prob[2,2], prob[1,2], prob[2,1], prob[1,1], prob[1,2], prob[2,1], prob[2,2] # 结果就是:0.1, 0.8, 0.1, 0.5, 0.1, 0.1, 0.5, 0.8
之后rbern(N, prob = prob[a,b])就用这8个概率分别生成8个伯努利样本,完全匹配你要的8个观测,根本不会出现8×8的矩阵。
内容的提问来源于stack exchange,提问作者Necronet
相关产品推荐
相关产品推荐

