首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何引导关于主体内信息?

如何引导关于主体内信息?
EN

Stack Overflow用户
提问于 2013-07-04 22:33:54
回答 1查看 1.4K关注 0票数 15

这是我第一次在这个论坛上发帖,我想从一开始就说我不是一个熟练的程序员。因此,如果问题或代码不清楚,请让我知道!

我正在尝试通过自举获得交互(这是我的测试统计数据)的95%置信区间(CI)。我使用的是"boot“包。我的问题是,对于每个重采样,我希望在受试者中进行随机化,以便不同受试者的观察结果不会混合。下面是生成与我的类似的数据帧的代码。如您所见,我有两个主题内因素("Num“和"Gram”,我对两者之间的交互很感兴趣):

代码语言:javascript
复制
Subject = rep(c("S1","S2","S3","S4"),4)
Num     = rep(c("singular","plural"),8) 
Gram    = rep(c("gram","gram","ungram","ungram"),4)
RT      = c(657,775,678,895,887,235,645,916,930,768,890,1016,590,978,450,920)
data    = data.frame(Subject,Num,Gram,RT) 

这是我用来获得经验相互作用值的代码:

代码语言:javascript
复制
summary(lm(RT ~ Num*Gram, data=data))

如你所见,我的两个因子之间的交互作用是-348。我想要获得这个统计数据的bootstrap置信区间,我可以使用"boot“包生成它:

代码语言:javascript
复制
# You need the following packages
install.packages("car") 
install.packages("MASS")
install.packages("boot")
library("car")
library("MASS")
library("boot")

#Function to create the statistic to be boostrapped
boot.huber <- function(data, indices) {
data <- data[indices, ] #select obs. in bootstrap sample
mod <- lm(RT ~ Num*Gram, data=data)
coefficients(mod)       #return coefficient vector
}

#Generate bootstrap estimate
data.boot <- boot(data, boot.huber, 1999)

#Get confidence interval
boot.ci(data.boot, index=4, type=c("norm", "perc", "bca"),conf=0.95) #4 gets the CI for the interaction

我的问题是,我认为重采样应该在不混合单个对象观察的情况下生成:也就是说,为了生成新的重采样,来自主题1 (S1)的观察应该在主题1中进行混洗,而不是将它们与来自主题2的观察混合,依此类推。我不知道"boot“是如何做重采样的(我读了文档,但不理解函数是如何做的)

有人知道我如何确保"boot“使用的重采样过程尊重主题级别信息吗?

非常感谢你的帮助/建议!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-07-04 22:58:30

只需修改对boot()的调用,如下所示:

代码语言:javascript
复制
data.boot <- boot(data, boot.huber, 1999, strata=data$Subject)

?boot提供了对strata=参数的描述,它完全符合您的要求:

层:指定用于多样本问题的层的整数向量或因子。这可以为任何模拟指定,但当‘sim=“参数”时被忽略。当为非参数引导提供了‘strata’时,将在指定的层内进行模拟。

补充说明:

要确认它是否按您希望的方式工作,可以调用debugonce(boot),运行上面的调用,逐步执行调试器,直到分配了对象i (其行包含用于对data的行重采样以创建每个引导重采样的索引),然后查看它。

代码语言:javascript
复制
debugonce(boot)
data.boot <- boot(data, boot.huber, 1999, strata=data$Subject)
# Browse[2]>
## [Press return 34 times]
# Browse[2]> head(i)
#      [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12] [,13] [,14]
# [1,]    9   10   11   16    9   14   15   16    9     2    15    16     1    10
# [2,]    9   14    7   12    5    6   15    4   13     6    11    16    13     6
# [3,]    5   10   15   16    9    6    3    4    1     2    15    12     5     6
# [4,]    5   10   11    4    9    6   15   16    9    14    11    16     5     2
# [5,]    5   10    3    4    1   10   15   16    9     6     3     8    13    14
# [6,]   13   10    3   12    5   10    3    4    5    14     7    16     5    14
#      [,15] [,16]
# [1,]     7     8
# [2,]    11    16
# [3,]     3    16
# [4,]     3     8
# [5,]     7     8
# [6,]     7    12

(您可以随时输入Q以离开调试器。)

票数 12
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17472924

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档