分析Likert数据

时间:2017-05-02 16:35:30

标签: r statistics standard-deviation

我试图计算后续数据帧的R(mean,sd,var)的基本统计数据(此表中的数字是响应的频率):

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 

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

1 个答案:

答案 0 :(得分:1)

在这种情况下获得汇总统计数据的唯一方法是强烈假设答案之间的差异是完全相同的(例如,“强烈不同意”和“不同意”之间的差异与之间的差异相同“不同意”和“不知道”)。如果你愿意做出这个假设,那么你可以计算加权平均值。

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

这些选择对应于“同意”等于或稍微积极的选择。

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

标准偏差:

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

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