顯示程式碼
format:
html:
theme: lumen
toc: true # 顯示章節目錄
toc-depth: 3 # 目錄顯示到第 3 層標題
code-fold: true # 程式碼預設可折疊
code-summary: "顯示程式碼" # 折疊按鈕的文字我們使用qmd或rmd是為了實現專業的線上出版與溝通。
2022起Quarto Markdown (qmd)與R Markdown (rmd)同時存在。都是Positron(前RStudio公司)的產品。rmd 繼續可用,但新功能集中到qmd。
長期來看多數專家認為 Quarto 會逐漸成為主流,但多數人不主張立刻把現有 Rmd 全面改寫,而是新案用 Quarto、舊案視需要慢慢轉。喜歡rmd或qmd那一個都行,都能完成工作,只是要留意兩者語法上有些微不同。
2024年後學習R的學生,若只需要R便可完成所有工作,可維持用rmd; 若有可能使用到其他資料科學語言(如Python)或界面(如VSCode),不妨直接從qmd開始。
特色比較:
Rmd特色:
單行{r, opt1=T, opt2=F}簡潔。
R多數專案多用此,來回切換qmd十分自然。
Qmd優勢:
基於Rmd開發,但用 #| (hash pipe) 可分多行寫,超長選項不必擠在單行; 新格式更整齊。
可全域直接在檔頭YAML設定,省去各別設定單一語法框的麻煩。
qmd與rmd的語法框選項標記 (chunk options)用於控制每個語法框的顯示效果。
若要突顯自己的發現,請考慮將自己整串的語法,依想要呈現的方式,重新分散到不同的語法框。讓次要的、瑣碎的結果隱藏起來。讀者便能更聚焦在正文及你研究發現最重要的結果圖表上。
以下是qmd的語法框選項標記重點提示:
「要執行程式碼但不顯示結果」用的是 output=false。
#| output: false「不要顯示程式碼」用 echo=F。
「不要執行程式碼」用 eval=F。
「把訊息或警告隱藏起來」用 message=F 及 warning=F。
「要執行但輸出結果通通都不顯示」才用(終極的) include = F。
把以下參數放入檔頭(又叫文件頭或 YAML區塊)。
注意這裡的的縮排要用空格來進行,不要用tab。
format:
html:
theme: lumen
toc: true # 顯示章節目錄
toc-depth: 3 # 目錄顯示到第 3 層標題
code-fold: true # 程式碼預設可折疊
code-summary: "顯示程式碼" # 折疊按鈕的文字常見內建主題風格包括
| 類型 | 主題名稱(填在 theme: 後面) |
|---|---|
| 預設 | default, pandoc, none |
| 淺色 | cerulean, cosmo, flatly, journal, litera, lumen, lux, materia, minty, morph, pulse, quartz, sandstone, simplex, sketchy, spacelab, united, vapor, yeti, zephyr |
| 深色 | cyborg, darkly, slate, solar, superhero |
在學界/課堂常見用法裡,qmd 內建的 HTML theme 大致有這三個特別常被採用:
flatly:藍色系、乾淨、正式感足,報告與課堂講義都很多人用。
cosmo:顏色稍微鮮明一點,但仍然偏正式,適合簡報式報告或教學投影片風格的 HTML。
lumen:很明亮、留白感多,適合教學講義與給學生看的說明文件。
我們使用由smilepoll.tw提供的開放資料BBQ.csv(在資料區可看到BBQ問卷檔及報表),學習如何整合本書之前的重點,進行變數描述、存檔、進行MCA探索式分析,以及二元勝算對數(確認式)分析實作。
# 在正式操作前,用本資料夾中的章節專案檔(.Rproj)點開專案再正式開始練習
# 請用此指令確認目前工作路徑是現在章節的資料夾
here::here() # suggestion: "chapter8/8.5_網路調查資料分析實作_BBQ"假設一:對烤肉的新鮮感不再便會降低明年烤肉的意願
假設二:覺得烤肉影響健康便會降低明年烤肉的意願
假設三:覺得烤肉花費造成負擔便會降低明年烤肉的意願
假設四:覺得烤肉麻煩便會降低明年烤肉的意願
假設五:覺得烤肉影響環境便會降低明年烤肉的意願
假設六:覺得不必要見面就能聯絡感情會降低明年烤肉的意願
假設七:認為烤肉不是聯絡感情的首選便會降低明年烤肉的意願
# 讀入資料檔並將變數名稱字串轉為變數標籤
library(readr)
bbq <- read_csv("BBQ.csv")
nrow(bbq) # 共650列
ncol(bbq) # 共58欄
# 取出變數名稱當作變數標籤
varlabels <- colnames(bbq) # 先把變數名稱存起來當標籤用
# 拿掉標籤之後的變數名稱重新命名為V1, V2, ...
colnames(bbq)[1:58] <- paste("V", 1:58, sep = "")
# 為變數名稱裝上標籤
sjlabelled::set_label(bbq) <- varlabels # 把剛剛存的標籤裝上去
# 批次清理無效值 better way?
bbq <- sjmisc::set_na(bbq, na = "NA")
invisible(varlabels) #列出每個變數的標籤library(sjmisc)
library(sjPlot)
invisible(names(bbq)) # 確認有58個變數
# 如果你是Mac使用者:可能會遇到在之後的圖片的標籤中文字變成方塊的狀況。這是你的電腦中R預設的語系,與RStudio預設的顯示語系不一致所造成的。請用下一行調整你目前顯示主題下的顯示字型(「蘋方繁中」為mac的中文字體):
sjPlot::set_theme(theme.font = "PingFang TC")
## 依變數:「明年會不會烤肉」
# (V44)說回到烤肉,請問您明年會不會想全家人一起烤肉? (0~10)
# table(bbq$V44)
bbq$V44r <- rec(bbq$V44, rec = "0:5=0[不會]; 6:10=1[會]", as.num = F)
frq(bbq$V44, out="viewer")| val | label | frq | raw.prc | valid.prc | cum.prc | |
|---|---|---|---|---|---|---|
| 0 | 33 | 5.08 | 5.08 | 5.08 | ||
| 1 | 20 | 3.08 | 3.08 | 8.15 | ||
| 2 | 23 | 3.54 | 3.54 | 11.69 | ||
| 3 | 45 | 6.92 | 6.92 | 18.62 | ||
| 4 | 49 | 7.54 | 7.54 | 26.15 | ||
| 5 | 136 | 20.92 | 20.92 | 47.08 | ||
| 6 | 109 | 16.77 | 16.77 | 63.85 | ||
| 7 | 85 | 13.08 | 13.08 | 76.92 | ||
| 8 | 56 | 8.62 | 8.62 | 85.54 | ||
| 9 | 33 | 5.08 | 5.08 | 90.62 | ||
| 10 | 61 | 9.38 | 9.38 | 100.00 | ||
| NA | NA | 0 | 0.00 | NA | NA | |
| total N=650 · valid N=650 · x̄=5.66 · σ=2.57 | ||||||
frq(bbq$V44r, out="v")| val | label | frq | raw.prc | valid.prc | cum.prc | |
|---|---|---|---|---|---|---|
| 0 | 不會 | 306 | 47.08 | 47.08 | 47.08 | |
| 1 | 會 | 344 | 52.92 | 52.92 | 100.00 | |
| NA | NA | 0 | 0.00 | NA | NA | |
| total N=650 · valid N=650 · x̄=0.53 · σ=0.50 | ||||||
plot_frq(bbq$V44r)## 自變數
# 假設一:「新鮮感」
# (V18)如果大家都烤肉,您會覺得「不好玩」嗎?*
# 跟別人做類似的活動,不好玩 1
# 跟別人做類似的活動也很ok啊 2
bbq$V18r <- rec(bbq$V18, rec = "1=1[不新鮮]; 2=0[沒有差]", as.num = F)
frq(bbq$V18r, out="v")| val | label | frq | raw.prc | valid.prc | cum.prc | |
|---|---|---|---|---|---|---|
| 0 | 沒有差 | 540 | 83.08 | 83.08 | 83.08 | |
| 1 | 不新鮮 | 110 | 16.92 | 16.92 | 100.00 | |
| NA | NA | 0 | 0.00 | NA | NA | |
| total N=650 · valid N=650 · x̄=0.17 · σ=0.38 | ||||||
# 假設二:「對健康影響的認知」
# (V20)您覺得戶外的烤肉對您的健康有多大影響?*
# 影響很大 1
# 影響不大 2
# 完全沒影響 3
# table(bbq$V20)
bbq$V20r <- rec(
bbq$V20,
rec = "1=1[有很影響]; 2:3=0[影響不大或沒影響]",
as.num = F
)
frq(bbq$V20r)無論您喜不喜歡烤肉,現在我們來談談對它的印象吧。 您覺得戶外的烤肉對您的健康有多大影響? (x) <categorical>
# total N=650 valid N=650 mean=0.36 sd=0.48
Value | Label | N | Raw % | Valid % | Cum. %
---------------------------------------------------------
0 | 影響不大或沒影響 | 414 | 63.69 | 63.69 | 63.69
1 | 有很影響 | 236 | 36.31 | 36.31 | 100.00
<NA> | <NA> | 0 | 0.00 | <NA> | <NA>
# 假設三:「金錢負擔」
# (V21)對您來說,烤肉費用的支出是不是一種負擔?*
# 是,的確是種負擔 1
# 還好 2
# 不會 3
# table(bbq$V21)
bbq$V21r <- rec(bbq$V21, rec = "1=1[是負擔]; 2:3=0[還好或不算負擔]", as.num = F)
frq(bbq$V21r)對您來說,烤肉費用的支出是不是一種負擔? (x) <categorical>
# total N=650 valid N=650 mean=0.34 sd=0.47
Value | Label | N | Raw % | Valid % | Cum. %
-------------------------------------------------------
0 | 還好或不算負擔 | 430 | 66.15 | 66.15 | 66.15
1 | 是負擔 | 220 | 33.85 | 33.85 | 100.00
<NA> | <NA> | 0 | 0.00 | <NA> | <NA>
# 假設四:「心力負擔」
# (V23)準備烤肉食材對您來說會不會很麻煩?*
# 會麻煩 1
# 不會麻煩 2
# table(bbq$V23)
bbq$V23r <- rec(bbq$V23, rec = "1=1[會麻煩]; 2:3=0[不會麻煩]", as.num = F)
frq(bbq$V23r) #準備烤肉食材對您來說會不會很麻煩? (x) <categorical>
# total N=650 valid N=650 mean=0.74 sd=0.44
Value | Label | N | Raw % | Valid % | Cum. %
-------------------------------------------------
0 | 不會麻煩 | 167 | 25.69 | 25.69 | 25.69
1 | 會麻煩 | 483 | 74.31 | 74.31 | 100.00
<NA> | <NA> | 0 | 0.00 | <NA> | <NA>
# 假設五:「對環境影響的認知」
# (V27)您在不在意您烤肉時造成的污染嗎?*
# 會在意,覺得多少影響了環境 1
# 還好 2
# 不會在意 3
# table(bbq$V27)
bbq$V27r <- rec(bbq$V27, rec = "1=1[會在意]; 2:3=0[還好/不會在意]", as.num = F)
frq(bbq$V27r)您在不在意您烤肉時造成的污染嗎? (x) <categorical>
# total N=650 valid N=650 mean=0.63 sd=0.48
Value | Label | N | Raw % | Valid % | Cum. %
------------------------------------------------------
0 | 還好/不會在意 | 240 | 36.92 | 36.92 | 36.92
1 | 會在意 | 410 | 63.08 | 63.08 | 100.00
<NA> | <NA> | 0 | 0.00 | <NA> | <NA>
# 假設六:「見面聯絡感情是必要的(必要性)」
# (V45) 平時用社群媒體(Line, Facebook等)與家人聯繫感情。您覺得夠不夠?*
# 很夠了。科技讓我與家人緊緊連在一起,年節不見面也不要緊。 1
# 還算夠。有了科技,家人不必一定要聚在一起。 2
# 不夠!見面較能聯絡感情,所以仍然要經常找時間團聚。 3
# 絕對不夠!我不太相信用社群媒體可以聯繫感情,一定要見到面才行。 4
# 我有其他想法:: * 90
# table(bbq$V45)
bbq$V45r <- rec(
bbq$V45,
rec = "1:2=0[不常見面不要緊]; 3,4=1[見面是必要的] ",
as.num = F
)
frq(bbq$V45r)平時用社群媒體(Line, Facebook等)與家人聯繫感情。您覺得夠不夠? (x) <categorical>
# total N=650 valid N=645 mean=0.64 sd=0.48
Value | Label | N | Raw % | Valid % | Cum. %
-------------------------------------------------------
0 | 不常見面不要緊 | 234 | 36.00 | 36.28 | 36.28
1 | 見面是必要的 | 411 | 63.23 | 63.72 | 100.00
<NA> | <NA> | 5 | 0.77 | <NA> | <NA>
# 假設七:「為聯絡感情烤肉是首選(重要性)」
# (V48) 大家圍著烤肉比其他活動要較為容易聯絡感情。*
# 同意。 1
# 不會/不見得。 2
# table(bbq$V48)
bbq$V48r <- rec(bbq$V48, rec = "1=1[同意]; 2=0[不見得] ", as.num = F)
frq(bbq$V48r)大家圍著烤肉比其他活動要較為容易聯絡感情。 (x) <categorical>
# total N=650 valid N=650 mean=0.47 sd=0.50
Value | Label | N | Raw % | Valid % | Cum. %
-----------------------------------------------
0 | 不見得 | 343 | 52.77 | 52.77 | 52.77
1 | 同意 | 307 | 47.23 | 47.23 | 100.00
<NA> | <NA> | 0 | 0.00 | <NA> | <NA>
## 控制變數
# 「今年中秋有與家人團聚」
# (V2) 今年的中秋節您有與家人團聚嗎?(延後到國慶連假也算)*
# 有 1
# 沒有 2
# table(bbq$V2)
bbq$V2r <- rec(bbq$V2, rec = "1=1[有]; 2=0[沒有] ", as.num = F)
frq(bbq$V2r)今年的中秋節您有與家人團聚嗎?(延後到國慶連假也算) (x) <categorical>
# total N=650 valid N=650 mean=0.83 sd=0.37
Value | Label | N | Raw % | Valid % | Cum. %
----------------------------------------------
0 | 沒有 | 109 | 16.77 | 16.77 | 16.77
1 | 有 | 541 | 83.23 | 83.23 | 100.00
<NA> | <NA> | 0 | 0.00 | <NA> | <NA>
# 「今年有參加家庭烤肉活動」
# (V3) 今年中秋節(含國慶連假)團圓時您有烤肉嗎?*
# 有 1
# 沒有 2
# table(bbq$V3)
bbq$V3r <- rec(bbq$V3, rec = "1=1[有]; 2=0[沒有(含沒有團聚)] ", as.num = F)
frq(bbq$V3r)今年中秋節(含國慶連假)團圓時您有烤肉嗎? (x) <categorical>
# total N=650 valid N=650 mean=0.50 sd=0.50
Value | Label | N | Raw % | Valid % | Cum. %
-----------------------------------------------------------
0 | 沒有(含沒有團聚) | 328 | 50.46 | 50.46 | 50.46
1 | 有 | 322 | 49.54 | 49.54 | 100.00
<NA> | <NA> | 0 | 0.00 | <NA> | <NA>
# 「在意對環境的危害」
# (V24)在烤肉活動中,請問下列哪一項是您最無法忍受的?*
# 空氣汙染 1
# 垃圾 2
# 噪音 3
# 隨處亂滴的醬汁 4
# 我覺得還好,沒那麼嚴重 5
# 我最受不了的是:: * 90
bbq$V24r <- rec(
bbq$V24,
rec = "1,2,3,4=1[有環境顧慮]; 5=0[都還好]=; 90=NA",
as.num = F
)
frq(bbq$V24r)在烤肉活動中,請問下列哪一項是您最無法忍受的? (x) <categorical>
# total N=650 valid N=634 mean=0.83 sd=0.38
Value | Label | N | Raw % | Valid % | Cum. %
---------------------------------------------------
0 | 都還好 | 108 | 16.62 | 17.03 | 17.03
1 | 有環境顧慮 | 526 | 80.92 | 82.97 | 100.00
<NA> | <NA> | 16 | 2.46 | <NA> | <NA>
# 「常用手機與網路聯絡感情」
# (V49)「請問您多常使用手機上的社群媒體(Line, FB等)APP與家人聯絡?」*
# 幾乎天天使用 1
# 偶爾使用 2
# 從來沒用(我用手機只打電話) 3
# 我不常使用手機 4
bbq$V49r <- rec(bbq$V49, rec = "1=1[很常用]; 2:4=0[偶爾/不常用]", as.num = F)
frq(bbq$V49r)「請問您多常使用手機上的社群媒體(Line, FB等)APP與家人聯絡?」 (x) <categorical>
# total N=650 valid N=650 mean=0.50 sd=0.50
Value | Label | N | Raw % | Valid % | Cum. %
----------------------------------------------------
0 | 偶爾/不常用 | 325 | 50 | 50 | 50
1 | 很常用 | 325 | 50 | 50 | 100
<NA> | <NA> | 0 | 0 | <NA> | <NA>
# 「聯絡家人時偏好語音(還是文字)」。
# (V50)請問您使用手機與家人聯絡時,比較喜歡使用文字簡訊(例如Line留言),還是使用講話(含視訊)?*
# 整體來說比較常用文字簡訊 1
# 整體來說比較常用語音講話(含視訊) 2
bbq$V50r <- rec(
bbq$V50,
rec = "1=0[偏好文字簡訊]; 2=1[偏好語音視訊]",
as.num = F
)
frq(bbq$V50r)請問您使用手機與家人聯絡時,比較喜歡使用文字簡訊(例如Line留言),還是使用講話(含視訊)? (x) <categorical>
# total N=650 valid N=650 mean=0.33 sd=0.47
Value | Label | N | Raw % | Valid % | Cum. %
-----------------------------------------------------
0 | 偏好文字簡訊 | 438 | 67.38 | 67.38 | 67.38
1 | 偏好語音視訊 | 212 | 32.62 | 32.62 | 100.00
<NA> | <NA> | 0 | 0.00 | <NA> | <NA>
#「時間負擔」
# (V37) 請問您覺得一天之內自己可以自由支配的時間(用來做自己想做的事)大約有多少?*
# 很多 1
# 還好 2
# 有點少 3
# 完全沒有 4
bbq$V37r <- rec(bbq$V37, rec = "1,2=0[足夠]; 3,4=1[不夠]", as.num = F)
frq(bbq$V37r)最後,我們來談談節慶與團聚。 請問您覺得一天之內自己可以自由支配的時間(用來做自己想做的事)大約有多少? (x) <categorical>
# total N=650 valid N=650 mean=0.32 sd=0.47
Value | Label | N | Raw % | Valid % | Cum. %
----------------------------------------------
0 | 足夠 | 445 | 68.46 | 68.46 | 68.46
1 | 不夠 | 205 | 31.54 | 31.54 | 100.00
<NA> | <NA> | 0 | 0.00 | <NA> | <NA>
## 儲存檔案
names(bbq) # 確認包含了上面新增的14個變數 [1] "V1" "V2" "V3" "V4" "V5" "V6" "V7" "V8" "V9" "V10"
[11] "V11" "V12" "V13" "V14" "V15" "V16" "V17" "V18" "V19" "V20"
[21] "V21" "V22" "V23" "V24" "V25" "V26" "V27" "V28" "V29" "V30"
[31] "V31" "V32" "V33" "V34" "V35" "V36" "V37" "V38" "V39" "V40"
[41] "V41" "V42" "V43" "V44" "V45" "V46" "V47" "V48" "V49" "V50"
[51] "V51" "V52" "V53" "V54" "V55" "V56" "V57" "V58" "V44r" "V18r"
[61] "V20r" "V21r" "V23r" "V27r" "V45r" "V48r" "V2r" "V3r" "V24r" "V49r"
[71] "V50r" "V37r"
save(bbq, file = "BBQ.rda")
rm(list = ls())假設一:對烤肉的新鮮感不再便會降低明年烤肉的意願
假設二:覺得烤肉影響健康便會降低明年烤肉的意願
假設三:覺得烤肉花費造成負擔便會降低明年烤肉的意願
假設四:覺得烤肉麻煩便會降低明年烤肉的意願
假設五:覺得烤肉影響環境便會降低明年烤肉的意願
假設六:覺得不必要見面就能聯絡感情會降低明年烤肉的意願
假設七:認為烤肉不是聯絡感情的首選便會降低明年烤肉的意願
library(car)
load("BBQ.rda")
## 模型一:包含所有解釋變數的原始模型
mod.1 <- glm(
V44r ~ V18r + V20r + V21r + V23r + V27r + V45r + V48r,
data = bbq,
family = binomial
)
summary(mod.1)
Call:
glm(formula = V44r ~ V18r + V20r + V21r + V23r + V27r + V45r +
V48r, family = binomial, data = bbq)
Coefficients:
Estimate Std. Error z value Pr(>|z|)
(Intercept) -0.103 0.261 -0.39 0.69368
V18r1 -0.932 0.259 -3.59 0.00033 ***
V20r1 -0.230 0.203 -1.13 0.25797
V21r1 -0.254 0.205 -1.24 0.21426
V23r1 -0.701 0.232 -3.01 0.00257 **
V27r1 -0.111 0.206 -0.54 0.59075
V45r1 0.517 0.192 2.70 0.00701 **
V48r1 1.803 0.187 9.64 < 2e-16 ***
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
(Dispersion parameter for binomial family taken to be 1)
Null deviance: 892.04 on 644 degrees of freedom
Residual deviance: 710.49 on 637 degrees of freedom
(5 observations deleted due to missingness)
AIC: 726.5
Number of Fisher Scoring iterations: 4
vif(mod.1)V18r V20r V21r V23r V27r V45r V48r
1.02 1.14 1.11 1.11 1.17 1.02 1.02
## 模型二:加入其他控制變數的完整模型
mod.2 <- update(mod.1, . ~ . + V2r + V3r + V24r + V49r + V50r + V37r)
summary(mod.2)
Call:
glm(formula = V44r ~ V18r + V20r + V21r + V23r + V27r + V45r +
V48r + V2r + V3r + V24r + V49r + V50r + V37r, family = binomial,
data = bbq)
Coefficients:
Estimate Std. Error z value Pr(>|z|)
(Intercept) -1.6128 0.4438 -3.63 0.00028 ***
V18r1 -0.7165 0.2914 -2.46 0.01392 *
V20r1 -0.4371 0.2260 -1.93 0.05308 .
V21r1 -0.1969 0.2288 -0.86 0.38938
V23r1 -0.6465 0.2616 -2.47 0.01348 *
V27r1 0.0261 0.2430 0.11 0.91455
V45r1 0.7346 0.2191 3.35 0.00080 ***
V48r1 1.4889 0.2062 7.22 5.2e-13 ***
V2r1 0.7186 0.2929 2.45 0.01415 *
V3r1 1.5821 0.2098 7.54 4.7e-14 ***
V24r1 -0.1383 0.2943 -0.47 0.63843
V49r1 0.4945 0.2100 2.36 0.01851 *
V50r1 -0.0502 0.2261 -0.22 0.82446
V37r1 -0.2536 0.2204 -1.15 0.24977
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
(Dispersion parameter for binomial family taken to be 1)
Null deviance: 870.03 on 628 degrees of freedom
Residual deviance: 600.50 on 615 degrees of freedom
(21 observations deleted due to missingness)
AIC: 628.5
Number of Fisher Scoring iterations: 4
vif(mod.2)V18r V20r V21r V23r V27r V45r V48r V2r V3r V24r V49r V50r V37r
1.04 1.15 1.15 1.12 1.33 1.08 1.02 1.05 1.07 1.18 1.08 1.09 1.03
## 模型三:留下有效的控制變數的最終模型
mod.3 <- update(mod.1, . ~ . + V3r + V49r)
summary(mod.3)
Call:
glm(formula = V44r ~ V18r + V20r + V21r + V23r + V27r + V45r +
V48r + V3r + V49r, family = binomial, data = bbq)
Coefficients:
Estimate Std. Error z value Pr(>|z|)
(Intercept) -1.2836 0.3200 -4.01 6.0e-05 ***
V18r1 -0.7424 0.2825 -2.63 0.00859 **
V20r1 -0.3987 0.2206 -1.81 0.07068 .
V21r1 -0.2475 0.2226 -1.11 0.26621
V23r1 -0.5814 0.2523 -2.30 0.02119 *
V27r1 -0.0259 0.2232 -0.12 0.90764
V45r1 0.7173 0.2113 3.39 0.00069 ***
V48r1 1.5509 0.2007 7.73 1.1e-14 ***
V3r1 1.6513 0.2025 8.16 3.5e-16 ***
V49r1 0.5223 0.2010 2.60 0.00938 **
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
(Dispersion parameter for binomial family taken to be 1)
Null deviance: 892.04 on 644 degrees of freedom
Residual deviance: 627.94 on 635 degrees of freedom
(5 observations deleted due to missingness)
AIC: 647.9
Number of Fisher Scoring iterations: 4
vif(mod.3)V18r V20r V21r V23r V27r V45r V48r V3r V49r
1.02 1.15 1.13 1.11 1.19 1.06 1.02 1.05 1.04
load("BBQ.rda")
library(dplyr)
library(FactoMineR)
library(factoextra)
bbqMCA <- select(
bbq,
V44r,
V18r,
V20r,
V21r,
V23r,
V27r,
V45r,
V48r,
V2r,
V3r,
V24r,
V49r,
V50r,
V37r
)
bbqMCA.nona <- na.omit(bbqMCA)
nrow(bbqMCA.nona) # 629[1] 629
names(bbqMCA.nona) [1] "V44r" "V18r" "V20r" "V21r" "V23r" "V27r" "V45r" "V48r" "V2r" "V3r"
[11] "V24r" "V49r" "V50r" "V37r"
res <- MCA(bbqMCA.nona, ncp = 5, graph = F)
fviz_screeplot(res, ncp = 10)# 變數關聯關係圖
plot(
res,
axes = c(1, 2),
new.plot = TRUE,
col.var = "red",
col.ind = "black",
col.ind.sup = "black",
col.quali.sup = "darkgreen",
col.quanti.sup = "blue",
label = c("var"),
cex = 0.8,
selectMod = "cos2",
invisible = c("ind", "quali.sup"),
autoLab = "yes",
title = ""
)# 初步假設:覺得自己時間充裕的人(V37r=0),愈可能傾向見面團聚取代使用手機(V45r=1);相反的,自覺一天內時間不足的人,反而傾向以手機來取代見面團聚。
## 用卡方檢定來進一步確認肉眼所預判潛在變數之間的相關性
# 做法一
library(gmodels)
CrossTable(
bbq$V37r,
bbq$V45r,
chisq = T, # 顯示卡方檢定結果
prop.chisq = F, # 不必顯示每個細格的卡方值貢獻程度
prop.t = F # 不必顯示每個細格次數所佔全體百分比
)
Cell Contents
|-------------------------|
| N |
| N / Row Total |
| N / Col Total |
|-------------------------|
Total Observations in Table: 645
| bbq$V45r
bbq$V37r | 0 | 1 | Row Total |
-------------|-----------|-----------|-----------|
0 | 173 | 269 | 442 |
| 0.391 | 0.609 | 0.685 |
| 0.739 | 0.655 | |
-------------|-----------|-----------|-----------|
1 | 61 | 142 | 203 |
| 0.300 | 0.700 | 0.315 |
| 0.261 | 0.345 | |
-------------|-----------|-----------|-----------|
Column Total | 234 | 411 | 645 |
| 0.363 | 0.637 | |
-------------|-----------|-----------|-----------|
Statistics for All Table Factors
Pearson's Chi-squared test
------------------------------------------------------------
Chi^2 = 4.97 d.f. = 1 p = 0.0257
Pearson's Chi-squared test with Yates' continuity correction
------------------------------------------------------------
Chi^2 = 4.59 d.f. = 1 p = 0.0322
# 做法二
library(sjPlot)
tab_xtab(
bbq$V37r,
bbq$V45r,
show.row.prc = TRUE, # 顯示列百分比
show.col.prc = TRUE # 顯示欄百分比
)| 最後,我們來談談節慶與團聚。 請問您覺得一天之內自己可以自由支配的時間(用來做自己想做的事)大約有多少? |
平時用社群媒體(Line, Facebook等)與家人聯繫感情。您覺得夠不夠? |
Total | |
|---|---|---|---|
| 不常見面不要緊 | 見面是必要的 | ||
| 足夠 | 173 39.1 % 73.9 % |
269 60.9 % 65.5 % |
442 100 % 68.5 % |
| 不夠 | 61 30 % 26.1 % |
142 70 % 34.5 % |
203 100 % 31.5 % |
| Total | 234 36.3 % 100 % |
411 63.7 % 100 % |
645 100 % 100 % |
| χ2=4.588 · df=1 · &phi=0.088 · p=0.032 | |||
## 與資料喝杯咖啡:拿資料來檢視自己對變數關係的判斷
mod.4 <- glm(V45r ~ V37r, data = bbq, family = binomial)
summary(mod.4)
Call:
glm(formula = V45r ~ V37r, family = binomial, data = bbq)
Coefficients:
Estimate Std. Error z value Pr(>|z|)
(Intercept) 0.4414 0.0975 4.53 5.9e-06 ***
V37r1 0.4035 0.1815 2.22 0.026 *
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
(Dispersion parameter for binomial family taken to be 1)
Null deviance: 844.96 on 644 degrees of freedom
Residual deviance: 839.90 on 643 degrees of freedom
(5 observations deleted due to missingness)
AIC: 843.9
Number of Fisher Scoring iterations: 4
Dyer, J. B. (2017). Political science and american political thought. Political Science and Politics, 50(3), 784–788. https://doi.org/10.1017/S1049096517000592
Everitt, J. (2021). Academic absences, disciplinary siloes and methodological prejudices within the political science discipline in Canada. Canadian Journal of Political Science-Revue Canadienne De Science Politique, 54(4), 749–768. https://doi.org/10.1017/S0008423921000883
Wilson, M. C. (2017). Trends in political science research and the progress of comparative politics. Ps-Political Science & Politics, 50(4), 979–984. https://doi.org/10.1017/S104909651700110X