# 社會調查師量化認證範例試題 #########
# Data: 台灣社會變遷基本調查計畫 2011 第六期第二次:健康組

library(magrittr)
setwd("~/Desktop/社會調查師量化認證")
par(family = "PingFangTC-Regular") 


# 一、  請針對此一調查樣本的基本人口特徵進行描述統計分析 #########
# (a) #######
# 請利用統計軟體讀取所提供的 ASCII 型式資料檔(附檔名可能為.DAT, .CSV, 或.TXT)
# 或 Excel 檔案(附檔名為. XLSX),並根據附件的編碼簿更改變項 名稱
# (如:將變項 v1 更改為 gender),並加上相應的變項標籤(如:變項 gender 的標籤為“性別”)
# 以及數值標籤(如:變項 gender 中數值 1 之標籤為“男性”、 數值 2 之標籤為“女性”) 

# import data #####
# .sav
library(haven)
df <- read_sav(file = "tscs112.sav")

# .dta
df <-  haven::read_dta(file = "tscs112.dta", encoding = "BIG-5")

# label #####
library(labelled)
df$gender <- labelled(df$gender, 
                      c(男性 = 1, 女性 = 2, 不知道 = 97, 拒答 = 98, 跳答或不適用 = 99), 
                      label = "性別")

df$性別 <- factor(df$gender, 
                    levels = c(1, 2), 
                    labels = c("男性", "女性"))


# (b) #######
# 請自行建立年齡變項[年齡=調查年(year_m)-出生年(birth_y)],
# 並描 述全體樣本與男女兩性(gender)各自的年齡分布狀況


# age variable #######
df$age <- with(df,
               year - (birth_y + 1911))


# 表一:年齡的基本描述統計值-全體樣本與按性別分 #######
library(dplyr)
## Warning: package 'dplyr' was built under R version 4.0.5
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
df %>% summarise(性別 = "全體", 
                 N = n(), 
                 平均數 = mean(age), 
                 標準差 = sd(age), 
                 最小值 = min(age),
                 最大值 = max(age)) %>% 
  rbind(df %>% 
          group_by(性別) %>% 
          summarise(N = n(), 
                    平均數 = mean(age), 
                    標準差 = sd(age), 
                    最小值 = min(age), 
                    最大值 = max(age))) %>% 
  mutate_if(is.numeric, round, 1) %>% 
  write.table(row.names = FALSE, quote = FALSE)
## 性別 N 平均數 標準差 最小值 最大值
## 全體 2199 47.2 17.8 19 93
## 男性 1086 46.8 18.1 19 93
## 女性 1113 47.6 17.5 19 93
# 圖一:全體樣本的年齡分布-直方圖 ########
hist(df$age, 
     xlim = c(0, 100), ylim = c(0, 0.025), 
     freq = FALSE, xlab = "年齡", ylab = NULL, 
     main = "圖一:全體樣本的年齡分布-直方圖")

# add normal distribution curve #######
x <- 0:100
curve(dnorm(x, mean(df$age), sd(df$age)), type = "l", add = TRUE)

# 圖二:年齡分布的盒形圖-依性別分 #######
boxplot(age ~ 性別, data = df, ylim = c(0, 100), ylab = "年齡", 
        main = "圖二:年齡分布的盒形圖-依性別分")

# (c) ########
# 請依兩種方式描述全體調查樣本的教育(g14)程度
# (1) #######
# 學歷[1-3=小學或以下;4-5=國(初)中;6-15=高中(職)或專科;
# 16-19= 大學;20-21=碩/博士;22 或 97 或 98=遺漏值] 

df$學歷 <- df$g14 %>% 
  as.numeric() %>% 
  car::recode("1:3  = '小學或以下'; 4:5 = '國(初)中'; 6:15 = '高中(職)或專科'; 
              16:19 = '大學'; 20:21 = '碩/博士'; 22 = NA; 97:99 = NA") %>% 
  factor(levels = c("小學或以下", "國(初)中", "高中(職)或專科", "大學", "碩/博士"))

# 表二:學歷的次數分布與百分比統計 ########
df %>% 
  group_by(學歷) %>% 
  summarise(人數 = n()) %>% 
  na.omit %>% 
  mutate(百分比 = 人數/sum(人數)*100, 
         累積百分比 = cumsum(百分比)) %>% 
  mutate_if(is.numeric, round, 1) %>% 
  write.table(row.names = FALSE, quote = FALSE)
## 學歷 人數 百分比 累積百分比
## 小學或以下 473 21.6 21.6
## 國(初)中 258 11.8 33.3
## 高中(職)或專科 845 38.5 71.9
## 大學 502 22.9 94.8
## 碩/博士 114 5.2 100
# 學歷遺漏值  #######
sum(!is.na(df$學歷))
## [1] 2192
sum(is.na(df$學歷))
## [1] 7
# 圖三:學歷分布的柱狀圖 ######
df %>% 
  group_by(學歷) %>% 
  summarise(N = n()) %>% 
  na.omit %$% 
  barplot(N ~ 學歷, ylab = "次數", 
          main = "圖三:學歷分布的柱狀圖")

# (2) #######
# 就學年數[1-2=0 年;3=6 年;4-5=9 年;6-15=12 年;16-19=16 年;
#      20=18 年;21=22 年;22 或 97 或 98=遺漏值 

df$就學年數 <- car::recode(df$g14, 
                        "1:2=0; 3=6; 4:5=9; 6:15=12; 16:19=16; 
                        20=18; 12=22; c(22, 97, 98)=NA") %>% 
  as.numeric 

# 表三:就學年數的基本描述統計值 ########
df[, "就學年數"] %>% 
  na.omit %>% 
  summarise(N = n(), 
            平均數 = mean(就學年數), 
            標準差 = sd(就學年數), 
            最小值 = min(就學年數), 
            最大值 = max(就學年數)) %>% 
  mutate_if(is.numeric, round, 1) %>% 
  write.table(row.names = FALSE, quote = FALSE)
## N 平均數 標準差 最小值 最大值
## 2192 11.2 4.6 0 21
# 圖四:就學年數分布的盒形圖 #######
boxplot(df$就學年數, 
        ylim = c(0, 22), 
        xlab = "就讀年數", 
        main = "圖四:就學年數分布的盒形圖")


# 二、 請選擇合適的統計方法分析調查資料以回答下列問題: ########
# (a) ########
# 假設兩位同樣嚴重的病人都需要接受相同的心臟手術,有年糼子女者是否應 優先接受手術(c8)?
# 這個問題沒有標準答案,基本上見仁見智。
# 但一個合理 的推測是,自身是否有子女(h16)將會影響對於上述問題的回答,
# 請檢驗此一 假設是否受到調查資料支持。 
# 提示:c8-請將 97 與 98 定義為遺漏值,其餘答項皆保留;
# h16-請將 97 與 98 定義為遺漏值,其餘答項請簡化為「無子女」與「有子女」

df$接受手術優先性之考量 <- df$c8 %>% 
  as.numeric %>% 
  car::recode("1 = '有年幼子女的病人'; 2 = '沒有年幼子女的病人';
              3 = '不應該用是否有年幼子女來決定誰先接受手術';
              94 = '無法選擇'; 97:99 = NA") %>% 
  factor(levels = c('有年幼子女的病人', '沒有年幼子女的病人', '不應該用是否有年幼子女來決定誰先接受手術', '無法選擇'))

df$有無子女 <- df$h16 %>% as.numeric %>% 
  car::recode("0 = '無子女'; 1:21 = '有子女'; 97:99 = NA") %>% 
  factor(levels = c("無子女", "有子女"))

# 表四:「有無子女」與「接受手術優先性之考量」的交叉表 #######
table(df$接受手術優先性之考量, df$有無子女)
##                                           
##                                            無子女 有子女
##   有年幼子女的病人                            373    946
##   沒有年幼子女的病人                            5     24
##   不應該用是否有年幼子女來決定誰先接受手術    284    491
##   無法選擇                                     13     27
tb4 <- xtabs(~ 接受手術優先性之考量 + 有無子女, data = df)
tb4 %>%  write.table(quote = FALSE)
## 無子女 有子女
## 有年幼子女的病人 373 946
## 沒有年幼子女的病人 5 24
## 不應該用是否有年幼子女來決定誰先接受手術 284 491
## 無法選擇 13 27
tb4 %>% chisq.test() 
## 
##  Pearson's Chi-squared test
## 
## data:  .
## X-squared = 18.609, df = 3, p-value = 0.0003293
# 表四:「有無子女」與「接受手術優先性之考量」的交叉表 (SPSS) #######
library(gmodels)
CrossTable(df$有無子女, df$接受手術優先性之考量, 
           expected = F,fisher = F,
           prop.c = F,prop.t = F,prop.chisq = T, chisq = TRUE)
## 
##  
##    Cell Contents
## |-------------------------|
## |                       N |
## | Chi-square contribution |
## |           N / Row Total |
## |-------------------------|
## 
##  
## Total Observations in Table:  2163 
## 
##  
##              | df$接受手術優先性之考量 
##  df$有無子女 |                         有年幼子女的病人 |                       沒有年幼子女的病人 | 不應該用是否有年幼子女來決定誰先接受手術 |                                 無法選擇 |            Row Total | 
## -------------|----------------------|----------------------|----------------------|----------------------|----------------------|
##       無子女 |                  373 |                    5 |                  284 |                   13 |                  675 | 
##              |                3.623 |                1.812 |                7.345 |                0.021 |                      | 
##              |                0.553 |                0.007 |                0.421 |                0.019 |                0.312 | 
## -------------|----------------------|----------------------|----------------------|----------------------|----------------------|
##       有子女 |                  946 |                   24 |                  491 |                   27 |                 1488 | 
##              |                1.643 |                0.822 |                3.332 |                0.010 |                      | 
##              |                0.636 |                0.016 |                0.330 |                0.018 |                0.688 | 
## -------------|----------------------|----------------------|----------------------|----------------------|----------------------|
## Column Total |                 1319 |                   29 |                  775 |                   40 |                 2163 | 
## -------------|----------------------|----------------------|----------------------|----------------------|----------------------|
## 
##  
## Statistics for All Table Factors
## 
## 
## Pearson's Chi-squared test 
## ------------------------------------------------------------
## Chi^2 =  18.60927     d.f. =  3     p =  0.0003292669 
## 
## 
## 
#(b) #######
#研究指出,在面臨壓力時,女性比較容易出現內在化(internalizing)症狀, 
# 也就是呈現出較多的負面情緒;男性則比較容易出現外在化(externalizing) 症狀,
# 也就是呈現出較多的行為問題。
# 請檢驗調查資料是否支持女性(gender) 比男性更可能出現心理憂困(psychological distress)之假設。
# 提示:請將d22a-d22f共六題相加計算出心理憂困的量表分數後再進行分析。
# 建立量表分數時,務必要確認六題都答者才能計算其量表分數,並讓分數愈
# 高代表「心理憂困」愈嚴重,最後再評估此一量表分數的信度(reliability)。


df$d22a %<>%  car::recode("94:99 = NA")
df$d22b %<>%  car::recode("94:99 = NA")  
df$d22c %<>%  car::recode("94:99 = NA")
df$d22d %<>%  car::recode("94:99 = NA")
df$d22e %<>%  car::recode("94:99 = NA")
df$d22f %<>%  car::recode("1 = 5; 2 = 4; 3 = 3; 4 = 2; 5 = 1; 94:99 = NA")
df <-  df %>% 
  mutate(心理困憂 = d22a + d22b + d22c + d22d + d22e + d22f)

# 信度分析:心理困憂 ########
library(psych)

df %>% 
  dplyr::select(starts_with("d22")) %>% 
  alpha()
## 
## Reliability analysis   
## Call: alpha(x = .)
## 
##   raw_alpha std.alpha G6(smc) average_r S/N    ase mean   sd median_r
##       0.84      0.85    0.84      0.49 5.7 0.0052  1.9 0.74     0.46
## 
##     95% confidence boundaries 
##          lower alpha upper
## Feldt     0.83  0.84  0.85
## Duhachek  0.83  0.84  0.85
## 
##  Reliability if an item is dropped:
##      raw_alpha std.alpha G6(smc) average_r S/N alpha se var.r med.r
## d22a      0.87      0.87    0.85      0.57 6.7   0.0044 0.012  0.59
## d22b      0.80      0.81    0.80      0.46 4.3   0.0069 0.028  0.44
## d22c      0.80      0.81    0.79      0.46 4.2   0.0068 0.022  0.44
## d22d      0.80      0.81    0.80      0.46 4.3   0.0067 0.024  0.45
## d22e      0.79      0.80    0.79      0.45 4.0   0.0071 0.022  0.44
## d22f      0.84      0.85    0.84      0.53 5.5   0.0056 0.028  0.59
## 
##  Item statistics 
##         n raw.r std.r r.cor r.drop mean   sd
## d22a 2198  0.60  0.57  0.42   0.39  2.1 1.13
## d22b 2195  0.82  0.82  0.78   0.72  2.0 1.02
## d22c 2193  0.81  0.82  0.79   0.72  1.7 0.92
## d22d 2188  0.80  0.81  0.78   0.70  1.7 0.92
## d22e 2196  0.85  0.85  0.84   0.76  1.8 0.95
## d22f 2190  0.67  0.67  0.56   0.52  2.2 0.97
## 
## Non missing response frequency for each item
##         1    2    3    4    5 miss
## d22a 0.43 0.20 0.25 0.09 0.03 0.00
## d22b 0.42 0.24 0.27 0.07 0.01 0.00
## d22c 0.59 0.21 0.16 0.03 0.01 0.00
## d22d 0.58 0.22 0.16 0.04 0.01 0.01
## d22e 0.51 0.25 0.19 0.04 0.01 0.00
## d22f 0.27 0.41 0.22 0.08 0.02 0.00
# std.alpha = 0.85

# 表五:心理憂困量表分數之基本描述統計值與信度係數 ########
df[, "心理困憂"] %>% 
  na.omit() %>% 
  summarise(N = n(), 
            平均數 = mean(心理困憂), 
            標準差 = sd(心理困憂), 
            最小值 = min(心理困憂), 
            最大值 = max(心理困憂)) %>% 
  mutate_if(is.numeric, round, 3) %>% 
  mutate(alpha = 0.85) %>% 
  write.table(row.names = FALSE, quote = FALSE)
## N 平均數 標準差 最小值 最大值 alpha
## 2180 11.361 4.436 6 30 0.85
# 心理困憂遺漏值 ######
sum(is.na(df$心理困憂))
## [1] 19
# 表六:心理憂困量表分數之樣本平均值(按性別分)與 t 檢定之結果摘要 #########
df[, c("性別", "心理困憂")] %>% 
  na.omit() %>% 
  group_by(性別) %>% 
  summarise(N = n(), 
            平均數 = mean(心理困憂), 
            標準差 = sd(心理困憂)) %>% 
  mutate_if(is.numeric, round, 3) %>% 
  write.table(row.names = FALSE, quote = FALSE)
## 性別 N 平均數 標準差
## 男性 1081 10.724 4.195
## 女性 1099 11.986 4.578
# t test #######
t.test(心理困憂 ~ 性別, data = df)
## 
##  Welch Two Sample t-test
## 
## data:  心理困憂 by 性別
## t = -6.7126, df = 2167.2, p-value = 2.433e-11
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
##  -1.630716 -0.893328
## sample estimates:
## mean in group 男性 mean in group 女性 
##           10.72433           11.98635
# (c) ########
#「健康梯度」的概念指出,個人的主觀社會地位愈高,心理健康愈好,反之 亦然。
# 其次,根據「壓力過程理論」可以推測,主觀社會地位(g1)較低者, 自我控制感(g2)也會較低,
# 因此心理健康較差;反之,主觀社會地位較高者, 自我控制感也會較高,因此心理健康較好。
# 若以心理憂困量表分數測量心理 健康,請在控制年齡與性別之後,
# 檢驗上述假設是否受到調查資料支持。
# 提示:針對主觀社會地位與自我控制感,請將 94 或 97 或 98 定義為遺漏值,
# 並讓分數愈高代表主觀社會地位愈高、自我控制感也愈強。


df$主觀社會地位 <- car::recode(df$g1, "94:99 = NA")
df$自我控制感 <- car::recode(df$g2, "84:99 = NA")

# 表七:分析變項的基本描述統計值與相關係數矩陣 #####
# 基本描述統計值 #######
df2c <- df[, c("age", "gender", "主觀社會地位", "自我控制感", "心理困憂")] %>% 
  na.omit()

df2c %>% 
  summarise_all(mean) %>% 
  rbind(
    df2c %>% 
      na.omit() %>% 
      summarise_all(sd) 
  ) %>% 
  t %>% 
  data.frame %>% 
  mutate_if(is.numeric, round, 3) %>% 
  write.table(col.names = c("平均數", "標準差"), quote = FALSE)
## 平均數 標準差
## age 46.462 17.5
## gender 1.498 0.5
## 主觀社會地位 4.956 1.577
## 自我控制感 6.84 2.096
## 心理困憂 11.35 4.413
# 相關係數矩陣 #######
df2c %>% 
  cor %>% 
  round(3) %>% 
  write.table(quote = FALSE)
## age gender 主觀社會地位 自我控制感 心理困憂
## age 1 0.004 -0.041 0.051 -0.069
## gender 0.004 1 0.065 0.052 0.141
## 主觀社會地位 -0.041 0.065 1 0.297 -0.144
## 自我控制感 0.051 0.052 0.297 1 -0.243
## 心理困憂 -0.069 0.141 -0.144 -0.243 1
# Regression ##########
m1 <- lm(自我控制感 ~ age + gender + 主觀社會地位, data = df2c)
m2 <- lm(心理困憂 ~ age + gender + 主觀社會地位, data = df2c)
m3 <- lm(心理困憂 ~ age + gender + 主觀社會地位 + 自我控制感, data = df2c)

# 表八:檢驗中介假設的三步驟多元迴歸分析之結果摘要 #########
library(stargazer)
## Warning: package 'stargazer' was built under R version 4.0.5
## 
## Please cite as:
##  Hlavac, Marek (2022). stargazer: Well-Formatted Regression and Summary Statistics Tables.
##  R package version 5.2.3. https://CRAN.R-project.org/package=stargazer
stargazer(m1, m2, m3, type = "html", 
          title = "表八:檢驗中介假設的三步驟多元迴歸分析之結果摘要",
          out = "表八:檢驗中介假設的三步驟多元迴歸分析之結果摘要.doc")
## 
## <table style="text-align:center"><caption><strong>表八:檢驗中介假設的三步驟多元迴歸分析之結果摘要</strong></caption>
## <tr><td colspan="4" style="border-bottom: 1px solid black"></td></tr><tr><td style="text-align:left"></td><td colspan="3"><em>Dependent variable:</em></td></tr>
## <tr><td></td><td colspan="3" style="border-bottom: 1px solid black"></td></tr>
## <tr><td style="text-align:left"></td><td>自我控制感</td><td colspan="2">心理困憂</td></tr>
## <tr><td style="text-align:left"></td><td>(1)</td><td>(2)</td><td>(3)</td></tr>
## <tr><td colspan="4" style="border-bottom: 1px solid black"></td></tr><tr><td style="text-align:left">age</td><td>0.008<sup>***</sup></td><td>-0.019<sup>***</sup></td><td>-0.016<sup>***</sup></td></tr>
## <tr><td style="text-align:left"></td><td>(0.002)</td><td>(0.005)</td><td>(0.005)</td></tr>
## <tr><td style="text-align:left"></td><td></td><td></td><td></td></tr>
## <tr><td style="text-align:left">gender</td><td>0.137</td><td>1.336<sup>***</sup></td><td>1.400<sup>***</sup></td></tr>
## <tr><td style="text-align:left"></td><td>(0.087)</td><td>(0.188)</td><td>(0.183)</td></tr>
## <tr><td style="text-align:left"></td><td></td><td></td><td></td></tr>
## <tr><td style="text-align:left">主觀社會地位</td><td>0.395<sup>***</sup></td><td>-0.440<sup>***</sup></td><td>-0.256<sup>***</sup></td></tr>
## <tr><td style="text-align:left"></td><td>(0.028)</td><td>(0.060)</td><td>(0.061)</td></tr>
## <tr><td style="text-align:left"></td><td></td><td></td><td></td></tr>
## <tr><td style="text-align:left">自我控制感</td><td></td><td></td><td>-0.465<sup>***</sup></td></tr>
## <tr><td style="text-align:left"></td><td></td><td></td><td>(0.046)</td></tr>
## <tr><td style="text-align:left"></td><td></td><td></td><td></td></tr>
## <tr><td style="text-align:left">Constant</td><td>4.328<sup>***</sup></td><td>12.427<sup>***</sup></td><td>14.439<sup>***</sup></td></tr>
## <tr><td style="text-align:left"></td><td>(0.223)</td><td>(0.481)</td><td>(0.510)</td></tr>
## <tr><td style="text-align:left"></td><td></td><td></td><td></td></tr>
## <tr><td colspan="4" style="border-bottom: 1px solid black"></td></tr><tr><td style="text-align:left">Observations</td><td>2,116</td><td>2,116</td><td>2,116</td></tr>
## <tr><td style="text-align:left">R<sup>2</sup></td><td>0.093</td><td>0.049</td><td>0.094</td></tr>
## <tr><td style="text-align:left">Adjusted R<sup>2</sup></td><td>0.092</td><td>0.048</td><td>0.092</td></tr>
## <tr><td style="text-align:left">Residual Std. Error</td><td>1.997 (df = 2112)</td><td>4.306 (df = 2112)</td><td>4.206 (df = 2111)</td></tr>
## <tr><td style="text-align:left">F Statistic</td><td>72.345<sup>***</sup> (df = 3; 2112)</td><td>36.508<sup>***</sup> (df = 3; 2112)</td><td>54.454<sup>***</sup> (df = 4; 2111)</td></tr>
## <tr><td colspan="4" style="border-bottom: 1px solid black"></td></tr><tr><td style="text-align:left"><em>Note:</em></td><td colspan="3" style="text-align:right"><sup>*</sup>p<0.1; <sup>**</sup>p<0.05; <sup>***</sup>p<0.01</td></tr>
## </table>
# (d) ######
# 根據過往理論與相關研究,帶有「宿命論觀點」(fatalism)的個人,思考比較 負面,
# 覺得自己在社會上的地位很難改變,因此心理憂困的程度更容易受到 當前主觀社會地位的影響;
# 反之,「宿命論觀點」傾向較低的個人,思考較為 正面,
# 對自己未來社會地位的提升更具信心,因此心理憂困的程度比較不容 易受到當前主觀社會地位的影響。
# 請在控制年齡與性別之後,檢驗上述假設 是否受到調查資料支持。
# 提示:請將 g22a-g22b 共二題相加計算出「宿命論觀點」的量表分數後再進行分析。
# 建立量表分數時,務必要確認兩題都答者才能計算其量表分數,
# 並讓分數愈高代表「宿命論觀點」的傾向愈強,最後再評估此一量表分數的信度(reliability)。


df$g22aa <- car::recode(df$g22a, "1=5; 2=4; 3=3; 4=2; 5=1; 97:99=NA") 
df$g22bb <- car::recode(df$g22b, "1=5; 2=4; 3=3; 4=2; 5=1; 97:99=NA") 
df %<>% mutate(宿命論觀點 = g22aa + g22bb)

df_2d <- df[, c("心理困憂", "age", "性別", "主觀社會地位", "宿命論觀點")] %>% 
  mutate_if(is.numeric, scale) 

# Regression ######
m1 <- lm(心理困憂 ~ age + 性別 + 主觀社會地位 + 宿命論觀點, data = df_2d)
summary(m1)
## 
## Call:
## lm(formula = 心理困憂 ~ age + 性別 + 主觀社會地位 + 
##     宿命論觀點, data = df_2d)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -1.9826 -0.7382 -0.1582  0.5623  3.7071 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  -0.14618    0.02901  -5.039 5.08e-07 ***
## age          -0.15904    0.02193  -7.251 5.78e-13 ***
## 性別女性      0.28511    0.04121   6.918 6.08e-12 ***
## 主觀社會地位 -0.09797    0.02145  -4.566 5.25e-06 ***
## 宿命論觀點    0.26216    0.02247  11.666  < 2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.9407 on 2090 degrees of freedom
##   (104 observations deleted due to missingness)
## Multiple R-squared:  0.1081, Adjusted R-squared:  0.1064 
## F-statistic: 63.35 on 4 and 2090 DF,  p-value: < 2.2e-16
m2 <- lm(心理困憂 ~ age + 性別 + 主觀社會地位*宿命論觀點, data = df_2d)
summary(m2)
## 
## Call:
## lm(formula = 心理困憂 ~ age + 性別 + 主觀社會地位 * 
##     宿命論觀點, data = df_2d)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -2.1560 -0.7264 -0.1516  0.5781  3.8069 
## 
## Coefficients:
##                         Estimate Std. Error t value Pr(>|t|)    
## (Intercept)             -0.16169    0.02936  -5.507 4.10e-08 ***
## age                     -0.15829    0.02189  -7.232 6.65e-13 ***
## 性別女性                 0.28458    0.04113   6.920 6.00e-12 ***
## 主觀社會地位            -0.09266    0.02147  -4.315 1.67e-05 ***
## 宿命論觀點               0.25029    0.02274  11.008  < 2e-16 ***
## 主觀社會地位:宿命論觀點 -0.06101    0.01930  -3.161  0.00159 ** 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.9387 on 2089 degrees of freedom
##   (104 observations deleted due to missingness)
## Multiple R-squared:  0.1124, Adjusted R-squared:  0.1102 
## F-statistic: 52.89 on 5 and 2089 DF,  p-value: < 2.2e-16
# 表九:檢驗調節假設的二步驟多元迴歸分析之結果摘要 ########
stargazer(m1, m2, type = "html", 
          title = "表九:檢驗調節假設的二步驟多元迴歸分析之結果摘要",
          out = "表九:檢驗調節假設的二步驟多元迴歸分析之結果摘要.doc")
## 
## <table style="text-align:center"><caption><strong>表九:檢驗調節假設的二步驟多元迴歸分析之結果摘要</strong></caption>
## <tr><td colspan="3" style="border-bottom: 1px solid black"></td></tr><tr><td style="text-align:left"></td><td colspan="2"><em>Dependent variable:</em></td></tr>
## <tr><td></td><td colspan="2" style="border-bottom: 1px solid black"></td></tr>
## <tr><td style="text-align:left"></td><td colspan="2">心理困憂</td></tr>
## <tr><td style="text-align:left"></td><td>(1)</td><td>(2)</td></tr>
## <tr><td colspan="3" style="border-bottom: 1px solid black"></td></tr><tr><td style="text-align:left">age</td><td>-0.159<sup>***</sup></td><td>-0.158<sup>***</sup></td></tr>
## <tr><td style="text-align:left"></td><td>(0.022)</td><td>(0.022)</td></tr>
## <tr><td style="text-align:left"></td><td></td><td></td></tr>
## <tr><td style="text-align:left">性別女性</td><td>0.285<sup>***</sup></td><td>0.285<sup>***</sup></td></tr>
## <tr><td style="text-align:left"></td><td>(0.041)</td><td>(0.041)</td></tr>
## <tr><td style="text-align:left"></td><td></td><td></td></tr>
## <tr><td style="text-align:left">主觀社會地位</td><td>-0.098<sup>***</sup></td><td>-0.093<sup>***</sup></td></tr>
## <tr><td style="text-align:left"></td><td>(0.021)</td><td>(0.021)</td></tr>
## <tr><td style="text-align:left"></td><td></td><td></td></tr>
## <tr><td style="text-align:left">宿命論觀點</td><td>0.262<sup>***</sup></td><td>0.250<sup>***</sup></td></tr>
## <tr><td style="text-align:left"></td><td>(0.022)</td><td>(0.023)</td></tr>
## <tr><td style="text-align:left"></td><td></td><td></td></tr>
## <tr><td style="text-align:left">主觀社會地位:宿命論觀點</td><td></td><td>-0.061<sup>***</sup></td></tr>
## <tr><td style="text-align:left"></td><td></td><td>(0.019)</td></tr>
## <tr><td style="text-align:left"></td><td></td><td></td></tr>
## <tr><td style="text-align:left">Constant</td><td>-0.146<sup>***</sup></td><td>-0.162<sup>***</sup></td></tr>
## <tr><td style="text-align:left"></td><td>(0.029)</td><td>(0.029)</td></tr>
## <tr><td style="text-align:left"></td><td></td><td></td></tr>
## <tr><td colspan="3" style="border-bottom: 1px solid black"></td></tr><tr><td style="text-align:left">Observations</td><td>2,095</td><td>2,095</td></tr>
## <tr><td style="text-align:left">R<sup>2</sup></td><td>0.108</td><td>0.112</td></tr>
## <tr><td style="text-align:left">Adjusted R<sup>2</sup></td><td>0.106</td><td>0.110</td></tr>
## <tr><td style="text-align:left">Residual Std. Error</td><td>0.941 (df = 2090)</td><td>0.939 (df = 2089)</td></tr>
## <tr><td style="text-align:left">F Statistic</td><td>63.346<sup>***</sup> (df = 4; 2090)</td><td>52.894<sup>***</sup> (df = 5; 2089)</td></tr>
## <tr><td colspan="3" style="border-bottom: 1px solid black"></td></tr><tr><td style="text-align:left"><em>Note:</em></td><td colspan="2" style="text-align:right"><sup>*</sup>p<0.1; <sup>**</sup>p<0.05; <sup>***</sup>p<0.01</td></tr>
## </table>
# 圖七:主觀社會地位與宿命論在預測心理憂困時的交互作用效果 ######
with(df,
     interaction.plot(主觀社會地位, 宿命論觀點, 心理困憂))