R語言(1) — 問卷分析

mz bai
7 min readNov 2, 2020

--

問卷分析可說是一門學問,小至單純計算題目填答分數的人數多寡大至統計模型的建立與理論驗證。在電子問卷興起後,收集問卷的成本更是比紙本方式低廉許多,應用範圍包含公司做市場調查或HR分析如何更好找到適合的職員以及理論研究的基本工具。

以下是問卷分析的流程,我們會從第三點開始討論。資料是從 psych package 的五大人格量表作為展示,是一份 five point Likert scale 為主的問卷,舉凡題目為 "非常不同意"、"不同意"、"普通"、"同意"、"非常同意"皆屬於此類量表。

  1. 研究方向
  2. 問卷設計
  3. 資料收集
  4. 敘述性統計
  5. 因素分析
  6. 信效度建立
  7. 結構方程式

敘述性統計

統計最基本也最為人所知的莫過於敘述性統計,計算樣本的多寡和比例,比較不同的受試者來自什麼樣的族群為主,常見如性別、年齡的描述。常見的視覺化方法以長條圖、圓餅圖、盒鬚圖為主。

bfi %>% mutate(gender=recode(.$gender,'1'='男','2'='女')) %>% 
group_by(gender) %>% count() %>%
ggplot(.,aes(x="", y=n,fill=gender))+ geom_bar(stat='identity',color='white')+
coord_polar("y", start = 0)+
theme_void()+
ggtitle('性別比例')+
labs(fill='性別')+
theme(plot.title = element_text(hjust = 0.5))
男:女 大約是 1:2
bfi %>% as_tibble() %>% mutate(gender=recode(.$gender,'1'='男','2'='女')) %>%
lattice::histogram(~age|gender,
data=.,
main='不同性別的年齡分布',
xlab='年齡',
ylab='比例')
男性族群年齡略低於女性族群

因素分析

項目與因素

item and factor

在繼續往更多的統計分析探討之前,先講一下項目與因素的概念,因素是態度、情緒、意願等不易測量的事物,項目則是問卷上的問題,主要目的為量化這些因素,而我們相信每個項目都是由因素所生成。

探索與驗證

Exploratory Factor Analysis(EFA) vs Confirmatory Factor Analysis(CFA)

可是如果因素不易測量,怎麼知道項目測量的是對應的因素呢?

這就要由許多實證研究做為支持,並依據問卷的功能和應用判斷。既然因素才是我們主要想知道的事情,這裡介紹常用的兩種因素分析方法,探索式和驗證式。

探索式主要用於尚不清楚有哪些因素的情況下,作為了解資料的多變數方法。一般我選擇 kaiser’s rule (eigenvalue > 1)作為判斷有多少個因素的標準,下圖是 Scree plot 。

res = FactoMineR::PCA(bfi[1:25],graph=FALSE)
factoextra::fviz_screeplot(res)
判斷折點可以知道可能有多少個因素

通常我們會選擇前兩個維度來呈現EFA的結果,稱為 biplot,看得出來第一象限的人較為外向、開放、可親近,第二象限的人偏於神經質,第三象限的人較有責任感。心理系的可能會猜到這裡畫的是五大人格量表。

factoextra::fviz_pca_biplot(res,label = "var",repel=TRUE)
factoextra::fviz_contrib(res,choice="var",axes = 1)
factoextra::fviz_contrib(res,choice="var",axes = 2)

另外也可分解出對項目各因素的貢獻量,有助於推測項目是否與欲測量因素有關,也就是說,問卷的題目設計的好不好,是不是真的測量著對應的因素。

第一維主要由Extraversion和Agreeableness組成
第二為主要由Neuroticism組成

驗證式則是基於特定的理論要來檢驗因素之間的效度為主的工具,用於檢驗是否問卷真如預期般測量各個因素。

fit1 <- cfa('
N=~N1+N2+N3+N4+N5
A=~A1+A2+A3+A4+A5
O=~O1+O2+O3+O4+O5
E=~E1+E2+E3+E4+E5
C=~C1+C2+C3+C4+C5

',data=bfi)
semPlot::semPaths(fit1, 'std', fade=T, residuals=F,layout='spring')
一階CFA

信效度建立

Cronbach’s alpha & Fornell and Larcker criterion

信度: 以相同的工具多次測量相同的對象後,都會得到相近的結果,代表測量結果極為穩定,不會輕易改變,極為可信(variance)。

效度: 測量結果與欲測量的屬性真實值應極為相近,測量非常有效(bias)。

信度

Cronbach’s alpha 計算的是每個問卷裡回答是否足夠一致,不會一題回答得分散,另外一題回答得集中,回答者的回答是可信的。

semTools::reliability(fit1)

效度

Fornell and Larcker criterion 分別為收斂效度(variance)和區別效度(bias),

  • 收斂效度:standardized factor loadings > 0.5 ,composite reliability > 0.7,Averaged Variance Extracted > 0.5
  • 區別效度:是否 AVE > correlation²

AVE 和 CR 可由前述 CFA 所計算之 standardized factor loadings 求得。standardized factor loadings 是每個項目對因素的貢獻標準化後的值,CR是偏誤(bias)較低版本的 cronbach’s alpha。

結構方程式

Structural equation model(SEM) vs Partial Least Square(PLS)

當要建立能描述因素間關係的模型時便可用上結構方程式,因為它能迴歸潛在變數間的關係,而偏最小平方法剛好也是能路徑關係的模型。有一說是,SEM 適合證明理論,PLS則適合預測。

推薦使用 lavaan 做SEM,cSEM做PLS。

結語

本篇文章介紹的內容主要是整合本人處理問卷以降的經驗,希望對也有在做問卷分析的人有所幫助,也讓更多人接觸到R語言。

--

--

mz bai
mz bai

Written by mz bai

Math is math, math is universal Code is code, code is horrifying unique.

No responses yet