问题概述
中国是一个多民族、多宗教的国家,不同民族和宗教信仰在社会文化和历史背景中扮演着重要的角色。随着社会的不断发展,了解民族与宗教信仰之间的关系变得越来越重要。本研究旨在通过分析中国社会综合调查(CGSS)2021年的数据,探讨不同民族的宗教信仰分布情况,以及民族与宗教信仰之间的相互影响和关联性。这将有助于更好地理解中国社会的多样性,为相关政策的制定提供参考。
文献综述
现有研究表明,民族和宗教信仰在社会文化和历史背景中有着复杂的关系。许多学者通过定量和定性的方法研究不同民族的宗教信仰模式,发现了许多有趣的现象。例如,汉族主要信仰佛教、道教和民间信仰,而回族则主要信仰伊斯兰教【牟钟鉴,2013】。研究还发现,不同民族的宗教信仰分布与其社会经济地位、文化传统和历史背景密切相关。然而,仍然存在一些不足之处,如样本量不足、数据覆盖面不广等。本研究将利用CGSS 2021年的数据,试图弥补这些不足,并进一步探讨民族与宗教信仰之间的关系。
模型构建或方法
数据预处理:读取CGSS 2021年的数据,并选择相关变量进行处理和转换,包括民族和宗教信仰。
描述性统计分析:通过可视化方法展示不同民族的宗教信仰分布情况,包括生成民族和宗教信仰的饼图和比例图表。
交叉分析:生成民族与宗教信仰的交叉表,并使用卡方检验分析两者之间的关联性。如果交叉表中有0值,则使用Fisher检验。
回归分析:构建Logistic回归模型,分析不同民族对不信仰宗教、佛教和基督教的影响,计算回归系数及其odds ratio和置信区间。
细分分析:
宗教信仰内部的民族组成分析:分析排名前三的宗教信仰(不信仰宗教、佛教、基督教)内部的民族组成,并生成相应的饼图。
民族内部的宗教信仰分析:分析排名前三的民族(汉族、回族、壮族)的宗教信仰分布,并生成相应的饼图。
数据分析
options(digits = 4)
set.seed(1234)
# 加载所需包
required_packages <- c("haven", "dplyr", "ggplot2", "knitr", "rmarkdown")
for (pkg in required_packages) {
if (!require(pkg, character.only = TRUE)) {
install.packages(pkg, dependencies = TRUE)
library(pkg, character.only = TRUE)
}
}
# 读取数据
file_path <- "D:\\下载\\期末作业内容2024\\期末作业内容2024\\CGSS2021.sav"
data <- read_sav(file_path)
# 提取A4和A5列
data_subset <- data %>% select(A4, A5)
# 映射民族
ethnicity_map <- c("汉", "蒙", "满", "回", "藏", "壮", "维", "其他")
data_subset$Ethnicity <- factor(data_subset$A4, levels = 1:8, labels = ethnicity_map)
# 映射宗教信仰
religion_map <- c("不信仰宗教", "佛教", "道教", "民间信仰", "回教/伊斯兰教", "天主教", "基督教", "东正教", "其他基督教", "犹太教", "印度教", "其他")
data_subset$Religion <- factor(data_subset$A5, levels = c(1, 11:21), labels = religion_map)
# 生成交叉表
cross_table <- table(data_subset$Ethnicity, data_subset$Religion)
# 显示交叉表
cross_table_df <- as.data.frame.matrix(cross_table)
kable(cross_table_df, caption = "民族与宗教信仰的交叉表")
# 进行统计检验
if (any(cross_table == 0)) {
# 使用Fisher检验,模拟p值
fisher_test <- fisher.test(cross_table, simulate.p.value = TRUE)
print(fisher_test)
} else {
# 使用卡方检验
chi_square_test <- chisq.test(cross_table)
print(chi_square_test)
}
##
## Fisher's Exact Test for Count Data with simulated p-value (based on
## 2000 replicates)
##
#
#
#
# 设置阈值
threshold <- 0.05
# 生成民族与宗教信仰的比例图表
ggplot(data_subset, aes(x = Ethnicity, fill = Religion)) +
geom_bar(position = "fill") +
geom_text(
aes(label = ifelse((..count../tapply(..count.., ..x.., sum)[..x..]) > threshold,
scales::percent(..count../tapply(..count.., ..x.., sum)[..x..]), "")),
position = position_fill(vjust = 0.5),
stat = "count"
) +
labs(title = "民族与宗教信仰的比例关系", x = "民族", y = "比例") +
theme_minimal() +
theme(axis.text.x = element_text(angle = 45, hjust = 1))
# 生成民族分布饼图
ethnicity_pie <- data_subset %>%
count(Ethnicity) %>%
mutate(percentage = n / sum(n)) %>%
ggplot(aes(x = "", y = percentage, fill = Ethnicity)) +
geom_bar(stat = "identity", width = 1) +
coord_polar(theta = "y") +
geom_text(aes(label = ifelse(percentage > threshold, scales::percent(percentage), "")),
position = position_stack(vjust = 0.5)) +
labs(title = "民族分布饼图", x = "", y = "") +
theme_void()
print(ethnicity_pie)
# 生成宗教信仰分布饼图
religion_pie <- data_subset %>%
count(Religion) %>%
mutate(percentage = n / sum(n)) %>%
ggplot(aes(x = "", y = percentage, fill = Religion)) +
geom_bar(stat = "identity", width = 1) +
coord_polar(theta = "y") +
geom_text(aes(label = ifelse(percentage > threshold, scales::percent(percentage), "")),
position = position_stack(vjust = 0.5)) +
labs(title = "宗教信仰分布饼图", x = "", y = "") +
theme_void()
print(religion_pie)
# Logistic回归 - 不信仰宗教
data_subset$NoReligion <- ifelse(data_subset$Religion == "不信仰宗教", 1, 0)
logistic_model_no_religion <- glm(NoReligion ~ Ethnicity, data = data_subset, family = binomial)
summary(logistic_model_no_religion)
##
## Call:
#
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) 2.7583 0.0486 56.74 <2e-16 ***
## Ethnicity蒙 -1.4366 0.5648 -2.54 0.011 *
## Ethnicity满 0.9553 1.0133 0.94 0.346
## Ethnicity回 -4.3037 0.2102 -20.47 <2e-16 ***
## Ethnicity藏 -1.1489 1.0965 -1.05 0.295
## Ethnicity壮 2.1975 1.0046 2.19 0.029 *
## Ethnicity其他 -0.3160 0.2505 -1.26 0.207
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 4340.5 on 8147 degrees of freedom
## Residual deviance: 3735.6 on 8141 degrees of freedom
## AIC: 3750
##
## Number of Fisher Scoring iterations: 7
# Logistic回归 - 佛教
data_subset$Buddhism <- ifelse(data_subset$Religion == "佛教", 1, 0)
logistic_model_buddhism <- glm(Buddhism ~ Ethnicity, data = data_subset, family = binomial)
summary(logistic_model_buddhism)
##
## Call:
#
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -3.3136 0.0625 -52.99 < 2e-16 ***
## Ethnicity蒙 1.9918 0.5662 3.52 0.00043 ***
## Ethnicity满 -14.2525 610.4519 -0.02 0.98137
## Ethnicity回 -14.2525 307.9882 -0.05 0.96309
## Ethnicity藏 1.7041 1.0972 1.55 0.12039
## Ethnicity壮 -1.6423 1.0055 -1.63 0.10240
## Ethnicity其他 0.6008 0.2830 2.12 0.03375 *
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 2471.1 on 8147 degrees of freedom
## Residual deviance: 2437.5 on 8141 degrees of freedom
## AIC: 2451
##
## Number of Fisher Scoring iterations: 16
# Logistic回归 - 基督教
data_subset$Christianity <- ifelse(data_subset$Religion == "基督教", 1, 0)
logistic_model_christianity <- glm(Christianity ~ Ethnicity, data = data_subset, family = binomial)
summary(logistic_model_christianity)
##
## Call:
#
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -4.1340 0.0924 -44.74 <2e-16 ***
## Ethnicity蒙 -14.4320 1496.3959 -0.01 0.99
## Ethnicity满 -14.4320 1006.4650 -0.01 0.99
## Ethnicity回 -14.4320 507.7867 -0.03 0.98
## Ethnicity藏 -14.4320 2662.8561 -0.01 1.00
## Ethnicity壮 -14.4320 545.4504 -0.03 0.98
## Ethnicity其他 -1.2776 1.0065 -1.27 0.20
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 1250.6 on 8147 degrees of freedom
## Residual deviance: 1236.6 on 8141 degrees of freedom
## AIC: 1251
##
## Number of Fisher Scoring iterations: 17
# 提取回归系数并计算odds ratio
coefficients_no_religion <- exp(coef(logistic_model_no_religion))
coefficients_buddhism <- exp(coef(logistic_model_buddhism))
coefficients_christianity <- exp(coef(logistic_model_christianity))
confint_no_religion <- exp(confint(logistic_model_no_religion))
confint_buddhism <- exp(confint(logistic_model_buddhism))
confint_christianity <- exp(confint(logistic_model_christianity))
# 显示odds ratio及其置信区间
odds_ratios_no_religion <- data.frame(
Estimate = coefficients_no_religion,
Lower_CI = confint_no_religion[, 1],
Upper_CI = confint_no_religion[, 2]
)
odds_ratios_buddhism <- data.frame(
Estimate = coefficients_buddhism,
Lower_CI = confint_buddhism[, 1],
Upper_CI = confint_buddhism[, 2]
)
odds_ratios_christianity <- data.frame(
Estimate = coefficients_christianity,
Lower_CI = confint_christianity[, 1],
Upper_CI = confint_christianity[, 2]
)
kable(odds_ratios_no_religion, caption = "Logistic回归中民族对不信仰宗教的影响 (odds ratio)")
Logistic回归中民族对不信仰宗教的影响 (odds ratio)
Estimate Lower_CI Upper_CI
(Intercept) 15.7733 14.3587 17.3737
Ethnicity蒙 0.2377 0.0859 0.8366
Ethnicity满 2.5993 0.5644 46.1560
Ethnicity回 0.0135 0.0088 0.0201
Ethnicity藏 0.3170 0.0510 6.0801
Ethnicity壮 9.0025 2.0138 158.5606
Ethnicity其他 0.7291 0.4591 1.2328
kable(odds_ratios_buddhism, caption = "Logistic回归中民族对信仰佛教的影响 (odds ratio)")
Logistic回归中民族对信仰佛教的影响 (odds ratio)
Estimate Lower_CI Upper_CI
(Intercept) 0.0364 0.0321 4.100e-02
Ethnicity蒙 7.3288 2.0783 2.035e+01
Ethnicity满 0.0000 0.0000 2.948e+05
Ethnicity回 0.0000 0.0000 0.000e+00
Ethnicity藏 5.4966 0.2864 3.424e+01
Ethnicity壮 0.1935 0.0110 8.675e-01
Ethnicity其他 1.8235 1.0011 3.061e+00
kable(odds_ratios_christianity, caption = "Logistic回归中民族对信仰基督教的影响 (odds ratio)")
Logistic回归中民族对信仰基督教的影响 (odds ratio)
Estimate Lower_CI Upper_CI
(Intercept) 0.0160 0.0133 1.910e-02
Ethnicity蒙 0.0000 NA 1.897e+32
Ethnicity满 0.0000 0.0000 8.465e+12
Ethnicity回 0.0000 0.0000 8.488e+00
Ethnicity藏 0.0000 NA 4.280e+104
Ethnicity壮 0.0000 0.0000 2.901e+01
Ethnicity其他 0.2787 0.0158 1.254e+00
# 分析排名前三的宗教信仰内部的民族组成
top_religions <- c("不信仰宗教", "佛教", "基督教")
for (religion in top_religions) {
subset_data <- data_subset %>% filter(Religion == religion)
# 生成民族组成饼图
ethnicity_pie_religion <- subset_data %>%
count(Ethnicity) %>%
mutate(percentage = n / sum(n)) %>%
ggplot(aes(x = "", y = percentage, fill = Ethnicity)) +
geom_bar(stat = "identity", width = 1) +
coord_polar(theta = "y") +
geom_text(aes(label = ifelse(percentage > threshold, scales::percent(percentage), "")),
position = position_stack(vjust = 0.5)) +
labs(title = paste(religion, "的民族组成分布"), x = "", y = "") +
theme_void()
print(ethnicity_pie_religion)
}
# 分析排名前三的民族的宗教信仰
top_ethnicities <- c("汉", "回", "壮")
for (ethnicity in top_ethnicities) {
subset_data <- data_subset %>% filter(Ethnicity == ethnicity)
# 生成宗教信仰分布饼图
religion_pie_ethnicity <- subset_data %>%
count(Religion) %>%
mutate(percentage = n / sum(n)) %>%
ggplot(aes(x = "", y = percentage, fill = Religion)) +
geom_bar(stat = "identity", width = 1) +
coord_polar(theta = "y") +
geom_text(aes(label = ifelse(percentage > threshold, scales::percent(percentage), "")),
position = position_stack(vjust = 0.5)) +
labs(title = paste(ethnicity, "族的宗教信仰分布"), x = "", y = "") +
theme_void()
print(religion_pie_ethnicity)
}
小结
在对CGSS 2021年数据的分析中,我们发现民族和宗教信仰之间存在显著的关联。具体来说,不同民族在宗教信仰的分布上有明显差异。汉族主要信仰佛教、道教和民间信仰,而回族主要信仰伊斯兰教。通过卡方检验,我们验证了这种关联的显著性。此外,通过Logistic回归分析,我们进一步探讨了不同民族对不信仰宗教、佛教和基督教的影响,得出了不同民族对这些宗教信仰的影响程度。
这些发现有助于我们更好地理解中国不同民族的宗教信仰状况,为相关政策制定提供参考。例如,在宗教管理和民族政策制定过程中,可以考虑到不同民族在宗教信仰上的差异,以促进社会的和谐与稳定。
本研究仍存在一些局限性,如样本代表性问题和变量选择的限制。由于CGSS数据的覆盖面有限,我们的结论可能不能完全代表整个中国社会的情况。此外,本研究仅考虑了民族和宗教信仰两个变量,未来的研究可以加入更多的社会经济和文化变量,以获得更全面的理解。
未来的研究方向可以包括:1) 对不同地区的民族和宗教信仰进行更细致的分析,以发现区域差异;2) 探讨民族和宗教信仰与其他社会经济变量之间的关系,如收入、教育和职业等;3) 使用更多的时间序列数据,分析民族和宗教信仰的动态变化趋势。
参考文献
牟钟鉴 (2013). 宗教在民族问题中的地位和作用. 中国宗教学术网.