一、题目
全球自杀趋势与分析
1.1 题目意义
当今社会全球自杀现象较为普遍,研究这一现象非常具有实际意义
1.2 设计要求
数据分析与挖掘要求
(1)按照后续分析需求,对数据进行预处理。
(2)描述性统计:选择合适的方法对数据进行统计分析。包括对数值型和类别型属性的统计,并对分析结果进行图形化的展示。
(3)推断性统计:选择合适的假设检验方法,分析属性间的相关性、两组数据间是否具有显著性差异,并得出结论。
(4)数据挖掘
分别利用分类、聚类以及时间序列方法挖掘蕴含在数据中的模式。
注意,对聚类结果分析聚簇特征,必要时可画图分析。
对分类结果计算准确性。
使用时间序列分析方法可判断数据是否存在趋势、周期性等特征,或对数据进行预测。
(5)附加题:除了上述要求,自由选择方法,分析数据特征或挖掘蕴涵模式,并展示结果,如地理热图等。
二、相关包及所用到的函数的介绍
tidyverse是一组处理与可视化R包的集合,其中ggplot2与dplyr最广为人知。
Ggalt包用于数据可视化,添加额外的坐标轴,geoms等
countrycode包中的countrycode函数可以将国家名和国家编码转换为需要的类型
rworldmap就是用来表现全球尺度数据可视化的R包。
gridExtra包常用于控制图形的复杂布局和绘制文本表
broom:用于将统计模型的结果整理成数据框形式
三、系统主要模块介绍
1.数据清理
2.统计全球自杀趋势
3.统计欧洲自杀趋势
4.按性别划分统计自杀趋势
5.按年龄划分统计自杀趋势
6.按国家来进行统计自杀趋势
7.画出相关地理热图
8.探究线性趋势
9.统计欧洲的自杀率性别差异
10统计不同国家的性别差异与自杀率的关联
11.统计欧洲的年龄差异与自杀率的关联
12探究富裕国家的自杀率是否更高
13.建立多元回归模型
14.线性拟和
15.探究年代与年龄与哪一年自杀率的关联
16探究自杀率的整体趋势
17探究男女自杀率随时间推移的影响
18探究2010年以后男性自杀人口比例
19.探究年龄率与自杀率
的关系
20探究男女比率与自杀率的关联
三、系统详细设计
1.导入需要用到的包
library(tidyverse)
library(ggalt)
library(countrycode)
library(rworldmap)
#快速国家级热图
library(gridExtra)
library(broom)
2数据导入与清洗
data
<- read_csv(“d:/master.csv”)
data
<- data %>%
select(-c(HDI for year
, suicides/100k pop
)) %>%
rename(gdp_for_year = gdp_for_year ($)
, #重命名
gdp_per_capita = `gdp_per_capita ($)`,
country_year = `country-year`) %>%
as.data.frame()
data
<- data %>%
filter(year != 2016) %>% # 过滤了2016年的数据
select(-country_year)
#选取不包括数据不超过3年的国家:
minimum_years
<- data %>%
group_by(country) %>%
summarize(rows = n(),
years = rows / 12) %>%
arrange(years)
data
<- data %>%
filter(!(country %in%
head(minimum_years$country, 7)))
整理数据帧
data a g e < − g s u b ( " y e a r s " , " " , d a t a age <- gsub(" years", "", data age<−gsub("years","",dataage)
data s e x < − i f e l s e ( d a t a sex <- ifelse(data sex<−ifelse(datasex == “male”, “Male”,
“Female”)
#获取欧洲数据:
data$continent
<- countrycode(sourcevar = data[, “country”],
origin =
“country.name”,
destination =
“continent”)
象征性因素
data_nominal
<- c(‘country’, ‘sex’, ‘continent’)
data[data_nominal]
<- lapply(data[data_nominal], function(x){factor(x)})
对年龄排序
data a g e < − f a c t o r ( d a t a age <- factor(data age<−factor(dataage,
ordered = T,
levels = c("5-14",
“15-24”,
“25-34”,
“35-54”,
“55-74”,
"75+"))
按年代排序
data g e n e r a t i o n < − f a c t o r ( d a t a generation <- factor(data generation<−factor(datageneration,
ordered = T,
levels = c("G.I.
Generation",
"Silent",
“Boomers”,
"Generation
X",
“Millenials”,
"Generation
Z"))
data
<- as_tibble(data)
#计算这段时间内的全球自杀率:
global_average
<- (sum(as.numeric(data s u i c i d e s n o ) ) / s u m ( a s . n u m e r i c ( d a t a suicides_no)) / sum(as.numeric(data suicidesno))/sum(as.numeric(da