民意與政治行為:作業二

大學生政黨認同的形成與內在政治效能感的變化

Author

柯宇鴻

研究問題與資料來源

本研究關注大學生內在政治效能感之變化,初步預期「政黨認同的形成」、「同儕討論」以及「選舉新聞關注度」會對其產生影響,本作業先整理分析所需變數並提出關聯假設,尚未檢驗假設。

本研究使用中央研究院學術調查研究資料庫(SRDA)釋出的「我國大學生政治社會化的定群追蹤研究」,計畫主持人為陳陸輝,調查執行單位為國立政治大學選舉研究中心。研究對象是 2011 年入學的大學生,本作業使用第一年與第四年的資料。

第一年調查期間為 2012 年 3 月 26 日至 5 月 11 日,觀察值數量(N)為 1,754;第四年為 2015 年 3 月 23 日至 6 月 10 日,觀察值數量(N)為 1,094。以受訪者編號配對後,共有 1,094 人。

變數之間的預期關聯

本研究以 2012 年為「中立及看情形」的學生為對象,比較其至 2015 年是否形成主要政黨認同,以及同一期間內在政治效能感的變化。另加入2012年「同儕政治討論程度」及「選舉新聞關注程度」,比較2012至2015的政治效能感變化,以下皆為待檢驗的假設,並非分析結果。

假設一:政黨認同形成與內在政治效能感變化

相較於持續為「中立及看情形」的學生,我預期形成主要政黨認同者較容易出現內在政治效能感提升。可能的原因是,政黨會提供理解政治資訊的架構,使學生更有理解政治事物的自信,此外,政黨通常也注重支持者的政治參與及政治動員,學生在政黨認同形成期間可能會參與政治活動,進而提升內在政治效能感,但兩次測量無法確定這兩種變化的先後順序。

假設二:同儕政治討論與內在政治效能感變化

相較於 2012 年「從不」或「很少」與同儕討論政治的學生,我預期「有時」或「時常」討論者,較容易在後續出現內在政治效能感提升,因為政治討論可以提供政治資訊,並使討論者有表達與釐清看法的機會。

假設三:選舉新聞關注與內在政治效能感變化

相較於 2012 年「完全不關心」或「不太關心」選舉新聞的學生,我預期「有點關心」或「非常關心」者,較容易在後續出現內在政治效能感提升。關注選舉新聞可能讓學生更熟悉政治人物、政黨立場與公共議題,進而增加理解政治的自信。這項預期仍需後續分析檢驗。

讀入與檢查原始資料

先讀入 2012 年與 2015 年的資料,確認人數、受訪者編號和答案分布。兩個資料檔放在專案的 data 資料夾。

library(foreign)

# 從上一層讀入原始資料
year2012 <- read.spss(
  "../year2012.sav",
  reencode = "big5",
  to.data.frame = TRUE,
  use.value.labels = FALSE
)
re-encoding from big5
year2015 <- read.spss(
  "../year2015.sav",
  reencode = "big5",
  to.data.frame = TRUE,
  use.value.labels = FALSE
)
re-encoding from big5
# 在專案資料夾內另存 R 資料副本
save(year2012, file = "year2012.rda")
save(year2015, file = "year2015.rda")


# 檢查觀察值數量
nrow(year2012)
[1] 1754
nrow(year2015)
[1] 1094
# 配對前確認編號欄位存在、沒有遺失或重複
"id" %in% names(year2012)
[1] TRUE
"id" %in% names(year2015)
[1] TRUE
sum(is.na(year2012$id))
[1] 0
sum(is.na(year2015$id))
[1] 0
sum(duplicated(year2012$id))
[1] 0
sum(duplicated(year2015$id))
[1] 0
length(intersect(year2012$id, year2015$id))
[1] 1094
# 確認所需變數存在
c("partyid", "j02", "c01", "q01") %in% names(year2012)
[1] TRUE TRUE TRUE TRUE
c("partyid", "j02") %in% names(year2015)
[1] TRUE TRUE
# 清理前的答案分布
table(year2012$partyid, useNA = "ifany")

  1   2   3   4   5   6 
674 345  13   5 684  33 
table(year2015$partyid, useNA = "ifany")

  1   2   3   4   5   6 
219 296   7   6 546  20 
table(year2012$j02, useNA = "ifany")

  1   2   3   4 
154 686 726 188 
table(year2015$j02, useNA = "ifany")

  1   2   3   4 
143 514 358  79 
table(year2012$c01, useNA = "ifany")

  1   2   3   4 
660 818 250  26 
table(year2012$q01, useNA = "ifany")

  1   2   3   4 
103 457 976 218 

讀入時先保留答案的數字代碼,下面再加上答案文字。

變數清理與編碼

先複製一份資料,保留原始資料不變。檢查後發現,兩年的 j02、第一年的 c01 和 q01 都只有 1 至 4 的有效答案。

2012年同儕政治討論與選舉新聞關注

c01 問「您與同學或朋友會談論政治方面的問題嗎?」;q01 問「在選舉期間,請問您會不會關心選舉的新聞?」。兩題保留四個答案類別,設定為 factor。

clean2012 <- year2012
clean2015 <- year2015

# c01:1 從不、2 很少、3 有時、4 時常
clean2012$peer_discussion <- factor(
  clean2012$c01,
  levels = c(1, 2, 3, 4),
  labels = c("從不", "很少", "有時", "時常")
)

# q01:1 完全不關心、2 不太關心、3 有點關心、4 非常關心
clean2012$election_news <- factor(
  clean2012$q01,
  levels = c(1, 2, 3, 4),
  labels = c("完全不關心", "不太關心", "有點關心", "非常關心")
)

knitr::kable(
  as.data.frame(table(clean2012$peer_discussion, useNA = "ifany")),
  col.names = c("討論頻率", "人數"),
  align = c("l", "r"),
  caption = "2012 年同儕政治討論"
)
2012 年同儕政治討論
討論頻率 人數
從不 660
很少 818
有時 250
時常 26
knitr::kable(
  as.data.frame(table(clean2012$election_news, useNA = "ifany")),
  col.names = c("關注程度", "人數"),
  align = c("l", "r"),
  caption = "2012 年選舉新聞關注"
)
2012 年選舉新聞關注
關注程度 人數
完全不關心 103
不太關心 457
有點關心 976
非常關心 218

政黨認同

使用整理後的 partyid,保留六個類別,並轉為 factor。第 6 類包含「無反應及其他政黨」,不能直接當成中立。

# 1 國民黨、2 民進黨、3 親民黨、4 台聯
# 5 中立及看情形、6 無反應及其他政黨
clean2012$party_id <- factor(
  clean2012$partyid,
  levels = c(1, 2, 3, 4, 5, 6),
  labels = c("國民黨", "民進黨", "親民黨", "台聯",
             "中立及看情形", "無反應及其他政黨")
)

clean2015$party_id <- factor(
  clean2015$partyid,
  levels = c(1, 2, 3, 4, 5, 6),
  labels = c("國民黨", "民進黨", "親民黨", "台聯",
             "中立及看情形", "無反應及其他政黨")
)

knitr::kable(
  as.data.frame(table(clean2012$party_id, useNA = "ifany")),
  col.names = c("政黨認同", "人數"),
  align = c("l", "r"),
  caption = "2012 年政黨認同"
)
2012 年政黨認同
政黨認同 人數
國民黨 674
民進黨 345
親民黨 13
台聯 5
中立及看情形 684
無反應及其他政黨 33
knitr::kable(
  as.data.frame(table(clean2015$party_id, useNA = "ifany")),
  col.names = c("政黨認同", "人數"),
  align = c("l", "r"),
  caption = "2015 年政黨認同"
)
2015 年政黨認同
政黨認同 人數
國民黨 219
民進黨 296
親民黨 7
台聯 6
中立及看情形 546
無反應及其他政黨 20

內在政治效能感

j02 問「像我這樣的人,是很難了解政治的事情」,答案為 1「非常不同意」、2「不太同意」、3「有點同意」、4「非常同意」。對有效答案以「5 減去原始分數」反向計分,高分代表較高的內在政治效能感。

原始答案仍保留,另外建立分數來計算兩年的變化。這題反映的是理解政治的自信,不代表實際政治知識;用分數相減也只是初步觀察變化的方式。

clean2012$internal_score <- ifelse(
  clean2012$j02 %in% c(1, 2, 3, 4),
  5 - clean2012$j02,
  NA
)

clean2015$internal_score <- ifelse(
  clean2015$j02 %in% c(1, 2, 3, 4),
  5 - clean2015$j02,
  NA
)

# 2012 年:建立原始答案與反向分數的核對表
check2012 <- table(
  原始答案 = clean2012$j02,
  反向分數 = clean2012$internal_score,
  useNA = "ifany"
)

knitr::kable(
  as.data.frame.matrix(check2012),
  row.names = TRUE,
  col.names = c("反向1分", "反向2分", "反向3分", "反向4分"),
  caption = "2012 年反向計分核對(左欄為原始答案)"
)
2012 年反向計分核對(左欄為原始答案)
反向1分 反向2分 反向3分 反向4分
1 0 0 0 154
2 0 0 686 0
3 0 726 0 0
4 188 0 0 0
# 2015 年:建立原始答案與反向分數的核對表
check2015 <- table(
  原始答案 = clean2015$j02,
  反向分數 = clean2015$internal_score,
  useNA = "ifany"
)

knitr::kable(
  as.data.frame.matrix(check2015),
  row.names = TRUE,
  col.names = c("反向1分", "反向2分", "反向3分", "反向4分"),
  caption = "2015 年反向計分核對(左欄為原始答案)"
)
2015 年反向計分核對(左欄為原始答案)
反向1分 反向2分 反向3分 反向4分
1 0 0 0 143
2 0 0 514 0
3 0 358 0 0
4 79 0 0 0

跨年配對與建立變化指標

每位受訪者占一列,以 id 配對,不能按照原本列順序直接拼接。

data2012 <- clean2012[
  , c("id", "party_id", "internal_score",
      "peer_discussion", "election_news")
]
names(data2012) <- c(
  "id", "party_2012", "internal_2012",
  "peer_discussion_2012", "election_news_2012"
)

data2015 <- clean2015[, c("id", "party_id", "internal_score")]
names(data2015) <- c("id", "party_2015", "internal_2015")

panel <- merge(data2012, data2015, by = "id", all = FALSE)
nrow(panel)
[1] 1094
sum(duplicated(panel$id))
[1] 0
# 效能感變化:正值提升、0 不變、負值下降
panel$internal_change <- panel$internal_2015 - panel$internal_2012
knitr::kable(
  as.data.frame(table(panel$internal_change, useNA = "ifany")),
  col.names = c("效能感變化分數", "人數"),
  align = c("r", "r"),
  caption = "全部配對者的內在政治效能感變化"
)
全部配對者的內在政治效能感變化
效能感變化分數 人數
-3 3
-2 21
-1 183
0 527
1 301
2 57
3 2
sum(is.na(panel$internal_change))
[1] 0
# 建立本研究要比較的兩群人
panel$party_change <- NA_character_
main_parties <- c("國民黨", "民進黨", "親民黨", "台聯")

panel$party_change[
  panel$party_2012 == "中立及看情形" &
    panel$party_2015 %in% main_parties
] <- "形成主要政黨認同"

panel$party_change[
  panel$party_2012 == "中立及看情形" &
    panel$party_2015 == "中立及看情形"
] <- "持續中立及看情形"

panel$party_change <- factor(
  panel$party_change,
  levels = c("持續中立及看情形", "形成主要政黨認同")
)

knitr::kable(
  as.data.frame(table(panel$party_change, useNA = "ifany")),
  col.names = c("認同變化分類", "人數"),
  align = c("l", "r"),
  caption = "全部配對者的分組情形"
)
全部配對者的分組情形
認同變化分類 人數
持續中立及看情形 311
形成主要政黨認同 113
NA 670
nrow(panel)
[1] 1094
# 另建研究用資料,panel 仍保留所有配對者
analysis_data <- panel[!is.na(panel$party_change), ]
nrow(analysis_data)
[1] 424
knitr::kable(
  as.data.frame(table(analysis_data$party_change, useNA = "ifany")),
  col.names = c("認同變化分類", "人數"),
  align = c("l", "r"),
  caption = "研究用資料的分組人數"
)
研究用資料的分組人數
認同變化分類 人數
持續中立及看情形 311
形成主要政黨認同 113
# 計算四個主要變數的遺失值數量
missing_count <- colSums(is.na(analysis_data[
  , c("party_change", "internal_change",
      "peer_discussion_2012", "election_news_2012")
]))

# 整理成表格
missing_table <- data.frame(
  變數 = c("政黨認同變化", "內在政治效能感變化",
           "2012年同儕政治討論", "2012年選舉新聞關注"),
  遺失值筆數 = as.numeric(missing_count)
)

knitr::kable(
  missing_table,
  align = c("l", "r"),
  caption = "研究用資料的遺失值檢查"
)
研究用資料的遺失值檢查
變數 遺失值筆數
政黨認同變化 0
內在政治效能感變化 0
2012年同儕政治討論 0
2012年選舉新聞關注 0

party_change 中的 NA 表示不屬於本次兩個比較群體,不一定是受訪者漏答;例如第一年就具有主要政黨認同者,也不在比較群體內。「形成」是由中立及看情形轉為主要政黨認同的操作定義,包含較弱的政黨傾向,不等於證明人生首次建立認同或認同已穩定。

資料引用

  • 陳陸輝(2018)。我國大學生政治社會化的定群追蹤研究(I)(E10053_1)【原始數據】。中央研究院學術調查研究資料庫。doi:10.6141/TW-SRDA-E10053_1-1。
  • 陳陸輝(2018)。我國大學生政治社會化的定群追蹤研究(IV)(E10053_4)【原始數據】。中央研究院學術調查研究資料庫。doi:10.6141/TW-SRDA-E10053_4-1。