如何绘制二进制数据的学习曲线?

时间:2020-03-02 11:39:16

标签: r

我想绘制简单的学习曲线。我的数据如下:

id trial type choice
1  1     A     0
1  2     A     1
2  1     B     1
2  2     B     0

structure(list(id = c(2L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 3L, 
4L, 4L, 4L, 4L, 4L, 6L, 6L, 6L, 6L, 6L), trial = c(1L, 2L, 3L, 
4L, 5L, 1L, 2L, 3L, 4L, 5L, 1L, 2L, 3L, 4L, 5L, 1L, 2L, 3L, 4L, 
5L), choice = c(0L, 1L, 1L, 1L, 1L, 0L, 1L, 1L, 1L, 1L, 0L, 0L, 
0L, 0L, 1L, 0L, 0L, 0L, 1L, 1L), type = structure(c(1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 
3L), .Label = c("A", "A3", "B"), class = "factor")), row.names = c(1L, 
2L, 3L, 4L, 5L, 31L, 32L, 33L, 34L, 35L, 61L, 62L, 63L, 64L, 
65L, 91L, 92L, 93L, 94L, 95L), class = "data.frame")

ID,Trial和Type是整数,而Choice是一个因素。我想说明不同小组在每次审判中所做的选择。我如何想象图(向量choice中的1被认为是正确的):

How I imagine the graph 曲线的平滑度是夸张的。

我还想知道如何通过耦合组来进行计算。例如,将试验1到10中A组的所有选择相加。

谢谢您的帮助!

1 个答案:

答案 0 :(得分:0)

基本上,您想先汇总数据,然后再绘制数据。例如,如果您的数据存储在名为dplyr

的data.frame中,则可以使用ggplot2dd轻松完成此操作
library(dplyr)
library(ggplot2)
dd %>%
  group_by(type, trial) %>% 
  summarize(correct=mean(choice)) %>% 
  ggplot() + 
  geom_line(aes(trial, correct, color=type))

对于每种类型和试验,我们都计算选择的平均值,以获得正确回答的人的百分比。然后,我们为每个试验绘制该值,并用按类型涂上颜色的线。