假设两个不同的评估者正在评估行为问题。他们使用相同的量表(从0到50),并且两个评估者所评估的孩子都相同。在社会科学中,这种方法很普遍,并且有一些有用的统计数据,例如相关系数和类内相关。
此外,我想到的一个图形是散点图,在x轴上,我将考虑第一评级者并在y轴上绘制行为问题得分,我将做同样的事情第二个评分者。
gplot2创建了惊人的图,但是,一些简单的例程和操作变得非常困难。
请参见下面的代码和r基本图。我想知道ggplot是否也可以创建此图。
set.seed(123)
ds <- data.frame(behavior_problems = rnorm(100,30,2), evaluator=sample(1:2))
plot(ds$behavior_problems[ds$evaluator == '1'] ,
y = ds$behavior_problems[ds$evaluator == '2'])
==我必须进行编辑以阐明为什么散点图会提供信息==
答案 0 :(得分:1)
我认为这里的关键问题是建立数据帧的方式。尚不清楚每个人都得到一对分数,每个评估者一个。因此,第一件事就是为每个人添加一个ID:在示例数据中添加50个ID。
library(tidyverse)
ds %>%
mutate(id = rep(1:50, each = 2)
现在,我们可以使用tidyr::spread
为每个评估者创建一列。但是列名的数字并不是一个好主意,因此我们将其重命名为e1
和e2
。
ds %>%
mutate(id = rep(1:50, each = 2)) %>%
spread(evaluator, behavior_problems) %>%
rename(e1 = `1`, e2 = `2`)
现在我们有可以提供给ggplot
的列名:
ds %>%
mutate(id = rep(1:50, each = 2)) %>%
spread(evaluator, behavior_problems) %>%
rename(e1 = `1`, e2 = `2`) %>%
ggplot(aes(e1, e2)) +
geom_point()
如果这似乎是“漫长的路要走”,那是因为ggplot2
处理“长”数据(在扩展前)比“宽”(在扩展后)效果更好。为了说明这一点,这是可视化个人分数差异的另一种方法,我认为效果很好:
ds %>%
mutate(id = rep(1:50, each = 2),
evaluator = factor(evaluator)) %>%
ggplot(aes(id, behavior_problems)) +
geom_point(aes(color = evaluator)) +
geom_line(aes(group = id))