我对某些科目进行了心理测试,我正在尝试创建一个多变量概率模型。
测试如下进行:
对于受试者1在11种不同条件下给予一定刺激,每种条件10次。答案(correct=1
,uncorrect=0
)已注册。
因此,对于主题1,我有以下结果'表:
# Subj 1
correct
cnt 1 0
1 0 10
2 0 10
3 1 9
4 5 5
5 7 3
6 10 0
7 10 0
8 10 0
9 9 1
10 10 0
11 10 0
这意味着Subj1在条件1和2下未正确回答10次,并且在条件10和11下正确回答10次。对于其他条件,响应从条件3增加到条件9。 我希望我很清楚。
我通常使用以下代码分析数据:
prob.glm <- glm(resp.mat1 ~ cnt, family = binomial(link = "probit"))
此处resp.mat1
是回复表,而cnt
是对比c(1,11)
。所以我能够使用predict()
函数绘制sigmoid曲线。主题-1的图表如下。
现在假设我对20个科目进行了相同的测试。我现在有20张桌子,就像第一张桌子一样。
我想要做的是比较子组,例如:male vs. female
; young vs. older
等等。但我想保持个体间的差异,所以简单地“添加”20个表将是错误的。
如何组织数据以使用glm()
功能?
我希望能够编写如下命令:
prob.glm <- glm(resp.matTOT ~ cnt + sex, family = binomial(link = "probit"))
然后绘制sex=M
和sex=F
的曲线。
我尝试使用rbind()
功能创建一个唯一的表格,然后为Subj (1 to 20)
,Sex
,Age
添加列。但它看起来是一个糟糕的解决方案,所以任何替代解决方案都将非常受欢迎。
答案 0 :(得分:1)
看起来你正在使用错误的功能。检查包glmer
中lme4
的第一个示例;它非常接近你想要的。 herd
应替换为主题编号,但请确保您执行类似
mydata$subject = as.factor(mydata$subject)
当您有数字主题编号时。
# Stolen from lme4
library(lattice)
library(
xyplot(incidence/size ~ period|herd, cbpp, type=c('g','p','l'),
layout=c(3,5), index.cond = function(x,y)max(y))
(gm1 <- glmer(cbind(incidence, size - incidence) ~ period + (1 | herd),
data = cbpp, family = binomial))
答案 1 :(得分:0)
所有内容的mlogit
库中都有一个多变量概率命令。您可以在此处查看所需数据结构的示例:
https://stats.stackexchange.com/questions/28776/multinomial-probit-for-varying-choice-set