显示与人口百分位数相关的分数的适当方式

Appropriate ways to show scores in relation to population percentile

我有一个包含 8 个变量和超过 300 个观察值(参与者)的数据集。这些观察结果随机分为 10 组。每个参与者执行相同的一组任务。

对于每个组,我想绘制一个图表来说明他们在总体百分位数中的平均分数的位置方面的表现。

我在谷歌上搜索了一下,找到了下图。这是一组参与者的图表,每个条代表一个任务。 绩效标签是通过将(每个任务的)总分分别分为 5 个百分位组(10%、20%、40%、20%、10%)而产生的。

有没有办法在 R、SPSS 或 Excel 中绘制它?

谢谢

在 R 中你可以这样做:

a=c(0.1,0.4,0.5,0.6,0.9)
# a containes the result per category in a vector

barplot(a, names.arg=c("Cat1", "Cat2", 
"Cat3","Cat4","Cat5"),horiz=TRUE,xlim=c(0,1),ylim=c(0,6.5))

# add the vertical lines
abline(v=c(0.25,0.5,0.75),col='red')

# add the text
text(0.1, y =6.3, labels = 'Low')
text(0.4, y =6.3, labels = 'Average')
text(0.6, y =6.3, labels = 'High')
text(0.85, y =6.3, labels = 'Very high')

输出将如下所示:

非常基本,但如果需要,您可以进一步自定义。

编辑:添加代码以计算不同类别的分位数。我假设您有一个包含 2 列的 R 数据框,其中 1 列包含结果名称 "col",另一列包含名为 category.

的类别

那么这段代码就可以工作了:

# df is the dataframe in which your data are stored
all_categories = unique(df$category)

N=length(all_categories)
results_category=rep(0,N)
# q is the percentile you have to compute 0.5 is the median
q_wanted=0.5

for (i in (1:N)){
  results_category[i] = quantile(x=df$col[df$category==all_categories[i]],prob=q_wanted)
}

barplot(results_category, 
names.arg=all_categories,horiz=TRUE,xlim=c(0,1),ylim=c(0,5))
abline(v=c(0.25,0.5,0.75),col='red')
text(0.1, y =4, labels = 'Low')
text(0.4, y =4, labels = 'Average')
text(0.6, y =4, labels = 'High')