总和生育率趋势和对婚姻生育率看法的变化:在 R 中可视化

总生育率趋势是预测社会未来的一个重要因素,社会舆论和人们对婚内生育态度的变化是确定政策方向和了解文化趋势的关键。

在这篇文章中,我们将使用 R 的 ggplot2拼布 使用软件包跟踪总和生育率趋势和 改变对婚内生育的看法并分析两者之间的相关性。下面介绍的示例使用了基于真实世界数据的虚构数据,直观地展示了趋势和相关性。

生成有关总生育率趋势和婚姻生育观念变化的数据

本分析基于 2018 年至 2024 年总和生育率的趋势数据以及社会对婚育的看法变化。只需生成数据并将其可视化,即可分析趋势(数据可在 国家统计局).

R 可视化代码

# 加载所需的库
library(ggplot2)
library(dplyr)
library(tidyr)
library(patchwork)
library(ggrepel)

生成 # 数据:总和生育率
tfr_data <- data.frame(
    年份 = 2018:2024、
    总和生育率 = c(0.977, 0.918, 0.837, 0.808, 0.778, 0.720, 0.701)
)

生成 # 数据:婚姻生育观念的变化
opinion_data <- data.frame(
    Year = c(2018, 2020, 2022, 2024)、
    非常同意 = c(25.4,25.5,21.6,23.4)、
    有点同意 = c(44.1, 42.6, 43.8, 44.9)、
    有点不同意 = c(21.9,22.1,23.9,22.7)、
    非常不同意 = c(8.6, 9.8, 10.8, 9.0)
)

转换为 # 长表
opinion_long %
    pivot_longer(
        cols = starts_with("Strongly") | starts_with("Somewhat")、
        names_to = "意见"、
        values_to = "百分比
    )

创建 # 合并数据
merged_data <- left_join(opinion_long, tfr_data, by = "Year")

为 # 相关性分析准备数据
correlation_data %
    select(-Year) %>%
    mutate(TFR = tfr_data$TFR[match(opinion_data$Year, tfr_data$Year)])

计算 # 相关系数
cor_matrix <- cor(correlation_data, use = "complete.obs")
cor_data <- as.data.frame(cor_matrix["TFR", ])
cor_data$Variable <- rownames(cor_data)
colnames(cor_data)[1] <- "TFR"
cor_data %
    filter(Variable != "TFR") %>%
    arrange(desc(abs(TFR)))

# 可视化相关性
correlation_plot = 0, -0.5, 1.5)、
        大小 = 4
    ) + (vjust
    labs(
        title = "Correlation Analysis: TFR vs Opinion Categories"、
        x = "意见类别"、
        y = "相关系数"
    ) + labs(
    coord_flip() +
    theme_minimal() +
    主题(
        axis.text = element_text(size = 10)、
        axis.title = element_text(size = 12, face = "bold")、
        plot.title = element_text(size = 14, face = "bold")、
        legend.position = "none" (
    )

创建 # 散点矩阵
scatter_matrix <- ggplot(merged_data, aes(x = TFR, y = Percentage)) +
    geom_point(aes(color = Opinion), size = 3, alpha = 0.6) +
    geom_smooth(aes(color = Opinion), method = "lm", se = FALSE, linetype = "dashed") +
    scale_colour_manual(
        values = c(
            "强烈同意" = "#1F78B4"、
            "有点同意" = "#33A02C"、
            "有点不同意" = "#FB9A99"、
            "强烈不同意" = "#E31A1C" )
        )
    )
    labs(
        title = "总和生育率与意见类别的关系"、
        x = "总和生育率"、
        y = "百分比(%)"。
    ) + +
    theme_minimal() +
    theme(
        legend.position = "bottom"、
        plot.title = element_text(size = 14, face = "bold")、
        axis.title = element_text(size = 12, face = "bold")
    )

打印 # 可视化效果
print(correlation_plot)
print(scatter_matrix)

分析与洞察

합계출산율 추이와 결혼 출산 인식 변화 상관계수 이미지
(总和生育率趋势与婚姻生育观念变化之间的相关系数图像)

1. 总生育率与社会认知之间的相关性分析

  • 与正面意见的相关性(同意):
    • "非常同意 "与总和生育率的相关系数最高(0.644),表明对婚姻和生育的积极看法与较高的生育率密切相关。
    • 有点同意 "的相关系数为-0.314,表明积极但有点保留的意见对总生育率的影响相对较小。
  • 与不同意的相关性:
    • "有点不同意 "和 "非常不同意 "的相关系数分别为-0.589 和-0.388,表明负面意见传播得越多,越有助于降低总生育率。
    • 值得注意的是,"有点不同意 "的相关系数最高,表明部分不同意可能比强烈不同意对生育率下降的影响更大。
출산합계율과 결혼 출산 인식 변화 데이터 간의 산점도
(总和生育率与婚姻生育观念数据变化之间的散点图)

2. 通过相关性分析社会意识与总和生育率之间的关系

  • 使用 相关图突出显示了 "非常同意 "与总生育率之间强烈的正相关性。
  • 散点矩阵图该图清楚地显示了总和生育率与不同意见类别之间的分布和关系,其模式是,更积极的意见倾向于提高总和生育率,而更消极的意见加强了降低生育率的趋势。

结论和政策建议

출산율 문제 해결 요약 그림

1. 需要多管齐下解决生育率下降问题

  • 生育率下降是一个多层次的问题,不是简单的经济支持就能解决的。 改变社会观念政策支持并行。
  • 主要政策方向:
    • 稳定住房:减轻住房费用负担,创造稳定的家庭环境。
    • 扩大儿童保育支持:加强公共儿童保育系统并补贴儿童保育费用。
    • 支持工作与家庭的平衡:改善育儿假,防止妇女中断职业生涯。

2. 努力提高正面看法

  • 传播有关婚姻和生育的正面信息 活动社会言论应予以加强。
  • 我们需要宣传生育和婚姻的积极意义,尤其是在年轻人中间,并创造一个尊重选择的环境。

3. 减少负面评论

  • 需要采取激进的方法来分析和解决导致人们对结婚生子犹豫不决的社会、经济和文化因素。
  • 确保生育和婚姻被视为带来个人成长和成就的过程,而不是个人的牺牲。

4 制定以数据为导向的政策

  • 相关分析表明,社会观念的变化正在对生育率产生真正的影响。
  • 对数据进行持续监测并据此制定政策,将大大有助于稳定未来的生育率。

通过上述分析和可视化展示,我们可以更清楚地了解人们对婚姻和生育态度的变化是如何影响生育率的。在此基础上,我们希望社会辩论和政策制定能够更加深入和有效。

# 代码说明

加载所需的程序库

library(ggplot2)
library(dplyr)
library(tidyr)
library(patchwork)
library(ggrepel)
  • ggplot2:R 用于数据可视化的旗舰图形软件包。
  • dplyr:使数据操作和转换变得简单的软件包。
  • 蓟马:用于将数据转换或清理为长格式。
  • 拼布用于将多个图形合并为一个布局。
  • ggrepel用于在图形中添加非重叠标签。

数据生成:总和生育率

tfr_data <- data.frame(
    年份 = 2018:2024、
    总生育率 = c(0.977, 0.918, 0.837, 0.808, 0.778, 0.720, 0.701)
)
  • 年份:从 2018 年到 2024 年。
  • TFR总和生育率:为当年的总和生育率数据生成一个虚拟值。

数据生成:不断变化的婚姻和生育观念

opinion_data <- data.frame(
    年份 = c(2018,2020,2022,2024)、
    Strongly_Agree = c(25.4, 25.5, 21.6, 23.4)、
    有点同意 = c(44.1, 42.6, 43.8, 44.9)、
    有点不同意 = c(21.9,22.1,23.9,22.7)、
    非常不同意 = c(8.6, 9.8, 10.8, 9.0)
)
  • 年份:衡量意见变化的年份。
  • 有四个评论类别 (强烈同意, 有点同意, 有点不同意, 强烈反对) 生成比率 (%) 数据。

转换为长格式

opinion_long %
    pivot_longer(
        cols = starts_with("Strongly") | starts_with("Somewhat")、
        names_to = "意见"、
        values_to = "百分比
    )
  • pivot_longer():将数据转换为 "长格式",以便使用 意见 栏中的评论类别、 百分比 将每条评论的百分比保存在一栏中。
    • cols = starts_with("Strongly") | starts_with("Somewhat"):如果列名为 强烈建议有点指定以开头的列为转换目标。
    • names_to = "意见":将评论类别设置为 意见 保存到列中。
    • values_to = "百分比"将每个类别的百分比值设置为 百分比 保存到列中。

创建合并数据

merged_data <- left_join(opinion_long, tfr_data, by = "Year")
  • 左连接:两个数据帧 (意见长tfr_data)到 年份根据:
  • 因此,每一年的意见百分比(%)和意见数量(%)都会有所变化。百分比)和总和生育率 (TFR)的数据帧。

为相关分析准备数据

correlation_data %
    select(-Year) %>%
    mutate(TFR = tfr_data$TFR[match(opinion_data$Year, tfr_data$Year)])
  1. 选择(-年份): 年份 创建排除列的数据框。
  2. mutate(TFR = ...): TFR 添加一栏。 比赛使用 意见数据tfr_data通过匹配 TFR 获取值。

计算相关系数

cor_matrix <- cor(correlation_data, use = "complete.obs")
cor_data <- as.data.frame(cor_matrix["TFR", ])
cor_data$Variable <- rownames(cor_data)
colnames(cor_data)[1] <- "TFR"
cor_data %
    filter(Variable != "TFR") %>%
    arrange(desc(abs(TFR)))
  1. cor():计算相关系数矩阵。 use = "complete.obs"计算时不包括缺失值。
  2. cor_matrix["TFR", ]: TFR只提取与其他列之间的相关系数。
  3. filter(Variable != "TFR"): TFR和自身相关系数(TFR)。
  4. arrange(desc(abs(TFR)))相关系数:按绝对值降序排列相关系数。

可视化相关性

correlation_plot = 0, -0.5, 1.5)、
        大小 = 4
    ) + (vjust
    labs(
        title = "Correlation Analysis: TFR vs Opinion Categories"、
        x = "意见类别"、
        y = "相关系数"
    ) + labs(
    coord_flip() +
    theme_minimal()
  1. aes(x = reorder(Variable, abs(TFR)), y = TFR):按绝对值对相关性进行排序,并将其放在图表轴上。
  2. geom_bar()创建条形图。
  3. scale_fill_gradient2()根据相关系数值转换颜色(绿色代表正相关,红色代表负相关)。
  4. geom_text()相关系数:将相关系数作为文本添加到图表中。
  5. coord_flip():翻转 x 轴和 y 轴,绘制水平条形图。

创建散点图矩阵

scatter_matrix <- ggplot(merged_data, aes(x = TFR, y = Percentage)) +
    geom_point(aes(color = Opinion), size = 3, alpha = 0.6) +
    geom_smooth(aes(color = Opinion), method = "lm", se = FALSE, linetype = "dashed") +
    geom_text_repel(
        aes(
            label = paste0("(", round(TFR, 3), ", ", round(Percentage, 1), ")")、
            color = Opinion
        ),
        size = 3、
        box.padding = 0.5、
        point.padding = 0.3、
        force = 2、
        max.overlaps = Inf、
        show.legend = FALSE
    ) +
    labs(
        title = "总和生育率与意见类别的关系"、
        x = "总和生育率"、
        y = "百分比(%)"。
    ) + +
    theme_minimal()
  1. geom_point()生成每个意见的点阵图。
  2. geom_smooth()线性回归线:为每个评论类别添加一条线性回归线。
  3. geom_text_repel()文字标签:为每个点添加一个不重叠的文字标签。文字应包含 TFR百分比 显示数值。
  4. 手动缩放颜色( )颜色:为不同的评论类别指定不同的颜色。

输出

print(correlation_plot)
打印(散点图)
  • 分别输出相关条形图和散点图,直观地分析数据。

类似文章