2

我对一些科目进行了心理测试,我正在尝试创建一个多元概率模型。

测试如下:

受试者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. femaleyoung 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。但它看起来我是一个糟糕的解决方案,所以任何替代解决方案都将不胜感激。

4

2 回答 2

1

看起来您使用了错误的功能来完成这项工作。检查glmerin package的第一个示例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))
于 2012-07-17T17:50:47.533 回答
0

mlogit在所有事物的库中有一个多元概率命令。您可以在此处查看所需数据结构的示例:

https://stats.stackexchange.com/questions/28776/multinomial-probit-for-varying-choice-set

于 2012-07-18T10:48:15.883 回答