使用 Rmisc 包中的 surveySE 汇总调查数据以在 ggplot 中生成误差线

问题描述 投票:0回答:1

我正在尝试对以下数据进行分组,以便我可以使用 Rmisc 包中的

summarySE
稍后为这些数据绘制误差线。我尝试过以各种方式分组,但我的尝试都没有达到我想要的效果。对于每个不同的问题,我想为不同意见的答案数量生成错误栏。

这里是

my_data
,简化但结构相同:

structure(list(question = c("Item 1", "Item 1", "Item 1", "Item 1", 
"Item 2", "Item 2", "Item 2", "Item 2", "Item 3", "Item 3", "Item 3", 
"Item 3", "Item 3", "Item 4", "Item 4", "Item 4", "Item 4", "Item 4"
), opinion = c("A", "D", "N", "SA", "A", "D", "N", "SA", "A", 
"D", "N", "SA", "SD", "A", "D", "N", "SA", "SD"), number = c(13L, 
17L, 17L, 2L, 23L, 10L, 11L, 5L, 19L, 15L, 6L, 5L, 4L, 24L, 13L, 
7L, 3L, 2L)), class = "data.frame", row.names = c(NA, -18L))

这是我正在尝试的代码:

summary.unique <- summarySE(my_data, measurevar="number", groupvars=c("question", "opinion"))

产生 NaN:s,而这段代码

summary.unique <- summarySE(my_data, measurevar="number", groupvars=c( "opinion"))

只是忽略问题栏。

r summary survey confidence-interval standard-deviation
1个回答
0
投票

您可以使用:

df$total = ave(df$number, df$question, FUN=sum)
df$proportion = df$number / df$total
cbind(df, mapply(x=df$number,y=df$total ,  \(x,y) binom.test(x,y)$conf.int) |> t())

    question opinion number total proportion          V1        V2
 1:   Item 1       A     13    49 0.26530612 0.149470729 0.4108171
 2:   Item 1       D     17    49 0.34693878 0.216724378 0.4963872
 3:   Item 1       N     17    49 0.34693878 0.216724378 0.4963872
 4:   Item 1      SA      2    49 0.04081633 0.004981842 0.1397872
 5:   Item 2       A     23    49 0.46938776 0.325338725 0.6172693
 6:   Item 2       D     10    49 0.20408163 0.102449385 0.3434300
 7:   Item 2       N     11    49 0.22448980 0.117743421 0.3662430
 8:   Item 2      SA      5    49 0.10204082 0.033971705 0.2222767
 9:   Item 3       A     19    49 0.38775510 0.251974483 0.5376145
10:   Item 3       D     15    49 0.30612245 0.182519448 0.4541524
11:   Item 3       N      6    49 0.12244898 0.046289031 0.2476930
12:   Item 3      SA      5    49 0.10204082 0.033971705 0.2222767
13:   Item 3      SD      4    49 0.08163265 0.022690881 0.1960142
14:   Item 4       A     24    49 0.48979592 0.344247423 0.6366217
15:   Item 4       D     13    49 0.26530612 0.149470729 0.4108171
16:   Item 4       N      7    49 0.14285714 0.059421506 0.2724215
17:   Item 4      SA      3    49 0.06122449 0.012808421 0.1686589
18:   Item 4      SD      2    49 0.04081633 0.004981842 0.1397872

V1
V2
是每行的 95% 置信上限和下限。

为了分解它,前两行简单地生成每个问题的总数和比例。第二个在数据框上使用

mapply
binom.test
应用于每一行,指定
number
x
total
n
binom.test
参数。提取置信区间,然后使用
t()
将输出转置为正确的形状。

© www.soinside.com 2019 - 2024. All rights reserved.