分析李克特数据

Analysing likert data

我正在尝试为以下数据框计算 R 中的基本统计数据(均值、标准差、变量)(此 table 中的数字是响应频率):

Question Strongly disagree Disagree Don't know Agree Strongly agree
    A             1            1        15       4          25
    B             1            1        18       3          23
    C             0            0        19       1          26 

我如何计算上面提到的内容并将这些数据可视化?

在这种情况下获得汇总统计数据的唯一方法是做出强有力的假设,即响应之间的差异都是相同的(例如,"Strongly disagree" 和 "Disagree" 之间的差异是与 "Disagree" 和 "Don't know" 之间的区别相同)。如果您愿意做出该假设,那么您可以计算加权平均值。

tt <- read.table(header=TRUE,textConnection("
 Question Strongly_disagree Disagree Dont_know Agree Strongly_agree
 A             1            1        15       4          25
 B             1            1        18       3          23
 C             0            0        19       1          26"))

 tt2 <- tt[,-1]  ## scores only
 ss <- sweep(tt2,MARGIN=2,FUN="*",1:5) ## weight by numeric equivalent

平均值:计算分数的加权平均值

 (meanvals <- rowSums(ss)/rowSums(tt2))
 ## [1] 4.108696 4.000000 4.152174

这些对应的选择等于或略高于 "Agree"。

或者您可以使用 apply(tt2,1,weighted.mean,x=1:5)

标准偏差:

 devs <- outer(-meanvals,1:5,"+")
 sqrt(rowSums(devs^2*tt2)/rowSums(tt2))    

(您可能想除以 rowSums(tt2)-1 以获得样本标准偏差)。