【发布时间】:2019-04-07 15:27:48
【问题描述】:
我有以下数据,
Data = data.frame(Participant = rep(sprintf("part%03d", 1:100), each=100),
Group = rep(c(0,1), each=5*1e3),
Evidence = rnorm(1e4),
CorrectOrNot = c(rbinom(5*1e3, size=1, prob=.3),
rbinom(5*1e3, size=1, prob=.6)))
其中“参与者”是每个参与者的索引,“组”是每个参与者被分配到的条件,“证据”是对每个参与者的刺激“强度”,“CorrectOrNot”是每个刺激答案的正确性每个参与者。
所以我对每个参与者进行了逻辑回归,关于证据和正确答案概率之间的关系。
plot(1, type="n", xlab="Evidence", ylab="probCorrect",
xlim=c(-3, 3), ylim=c(0, 1))
for (i in 1:100)
{
part = sprintf("part%03d", i)
test = Data[Data$Participant==part,]
fit = glm(CorrectOrNot ~ Evidence, test, family=binomial)
newDat = data.frame(Evidence=seq(min(test$Evidence),max(test$Evidence),len=100))
newDat$pc = predict(fit, newdata=newDat, type="response")
lines(pc ~ Evidence, newDat, col=ifelse(test$Group[1]==0, "green", "red"), lwd=2)
}
legend(-3, 1, legend=c("Group 0", "Group 1"),
col=c("green", "red"), lty=1:2, cex=0.6)
为了可视化生成的曲线,我编写了上面的代码,结果看起来很混乱。所以我想将这些线“平均”成每组的两条代表线,它们周围有一些阴影代表每组 95% 的“范围”。
任何帮助,包括使用 ggplot2 的帮助,将不胜感激。
【问题讨论】: