最近在做的一件事情需要查询各类项目,意外发现国家社科基金和国家自然科学基金这些项目数据都是公开的,于是就想弄下来分析一下。另外强烈吐槽 教育部人文社会科学研究规划基金,项目数据居然是不公开的!
由于网站数据结构化程度很高,利用 R 语言的 XML 包中的 readHTMLTable
函数,只需很少的代码就可以得到整齐的数据。在获取数据的过程中,唯一需要的参数就是网页中的页面总数。
打开 国家自然科学基金数据库,查找总页数的方法就是把浏览器地址栏的最后一个参数调到足够大,比如调到 100000, http://www.nsfcms.org/index.php?r=search/index&Projects_page=100000,然后就看到最后一页是 1606 页。
library(XML)
# 查看网站上的总页数,2016-11-19 日时有 1606 页
Page <- 1606
URL <- as.vector(paste0("http://www.nsfcms.org/index.php?r=search/index&Projects_page=",
1:Page))
Natural <- data.frame()
i <- 1
for (i in 1:Page){
D1 <- as.data.frame(readHTMLTable(URL[i]))
Natural <- rbind(Natural, D1)
print(i)
i <- i + 1
}
names(Natural) <- c("项目批准号", "项目类别", "项目名称", "依托单位",
"负责人", "金额", "起止年月","总评")
# 保存时最好以抓取日期命名
write.csv(Natural, "natural-2016-11-19.csv", row.names = F)
首先看自然科学基金的情况。在此之前需要清洗数据,主要是对起止年月进行拆分,并转换为日期。
library(readr)
library(stringr)
library(lubridate)
library(ggplot2)
library(ggthemes)
library(knitr)
library(dplyr)
Natural <- read_csv("natural-2016-11-19.csv")
# 对字符串进行拆分
Period <- str_split(Natural$起止年月,"-", simplify = T)
# R 无法处理没有日期的数据,因此加上日期
Begin <- paste0(Period[,1], ".01")
Begin <- as.Date.character(Begin,"%Y.%m.%d")
End <- paste0(Period[,2], ".01")
End <- as.Date(End, "%Y.%m.%d")
Interval <- round((End - Begin) / (365/12)) + 1
Natural <- cbind(Natural, Begin, End, Interval)
第一步当然是看自然基金的趋势,从项目总投入和项目数量两个方面来看。一般一个项目跨度是三到四年,经费发放也不是一步到位,因此按照起始年份计算年度投入是有误差的,不过应该不影响对趋势的判断。
从项目数量上看,2000 年之前一直在低位,2000 年刚刚超过两百;2006 年有一个较大幅度的增长,随后几年在 500 的水平上小幅增长;从 2009 年开始,自然科学基金资助项目数量开始激增,增长幅度最大的 2012 年增长了 42%!到了2013年之后,在 1600 左右徘徊。
ggplot(Natural, aes(year(Begin))) +
geom_bar(aes(fill = 项目类别)) +
labs(
title = "国家自然科学基金年度项目数量(按起始年份)",
subtitle= "按照项目类别标示",
x = "年份",
y = "项目数量"
) +
scale_x_continuous(breaks = seq(1992, 2017, by = 1)) +
theme_pander() +
scale_fill_pander() +
theme_grey(base_family = "STKaiti") +
theme(axis.text.x = element_text(angle = 60, vjust = 0.5))
从投入金额上看,从 1992 年微不足道的 275 万元增长到 2000 年 2380 万元,年均增长率 31%;2006 年的增长率 57%,达到近亿元;2000 年到 2008 年的年均增长率是 20%;2009 年到 2013 年 年的近乎翻倍的增长,增长率分别是 38%、28%、39%、78%、32%,年均增长率 37%。2016 年的投入有所减少,是因为数据收集时间是在 11 月,有一部分项目的启动时间是 12月份。
ggplot(Natural, aes(year(Begin))) +
geom_bar(aes(weight = 金额, fill = 项目类别)) +
labs(
title = "国家自然科学基金年度项目总额(按起始年份)",
subtitle= "按照项目类别标示",
x = "年份",
y = "项目总额"
) +
scale_x_continuous(breaks = seq(1992, 2017, by = 1)) +
theme_pander() +
scale_fill_pander() +
theme_grey(base_family = "STKaiti") +
theme(axis.text.x = element_text(angle = 60, vjust = 0.5))
青年项目和面上项目占总数量的近 90%, 从历史趋势上看,二者此消彼长,面上项目呈现减少的趋势,青年项目相应增长。
ggplot(Natural, aes(year(Begin))) +
geom_bar(aes(fill = 项目类别), position = "fill") +
labs(
title = "国家自然科学基金年度项目类型数量占比(按起始年份)",
x = "年份",
y = "比例"
) +
scale_x_continuous(breaks = seq(1992, 2017, by = 1)) +
theme_pander() +
scale_fill_pander() +
theme_grey(base_family = "STKaiti") +
theme(axis.text.x = element_text(angle = 60, vjust = 0.5))
历年所有项目中,面上项目和青年科学基金项目占据绝大多数,面上项目数量占到项目总数的 53.2%,项目资金占总投入的 54.8%;青年科学基金项目数量占到 33.2%,资金占 18.2%。而重点项目数量上只有 1.9%,但在金额上占到了 10.2%。不同类型项目的资助金额也不同,最高的是创新研究群体科学基金,平均达 484 万元,面上项目和青年科学基金项目分别平均为 34 万和 18 万。
Type <- summarise(group_by(Natural, 项目类别),
项目总金额 = sum(金额),
项目金额占比 = sum(金额) / sum(Natural$金额) * 100,
项目数量 = length(金额),
项目数量占比 = length(金额) / length(Natural$项目名称) * 100,
项目平均金额 = mean(金额))
Type <- Type[with(Type, order(-项目总金额)), ]
kable(Type, align = "c", digits = 1)
项目类别 | 项目总金额 | 项目金额占比 | 项目数量 | 项目数量占比 | 项目平均金额 |
---|---|---|---|---|---|
面上项目 | 288654.5 | 54.8 | 8536 | 53.2 | 33.8 |
青年科学基金项目 | 96100.8 | 18.2 | 5331 | 33.2 | 18.0 |
重点项目 | 53581.3 | 10.2 | 303 | 1.9 | 176.8 |
地区科学基金项目 | 27782.3 | 5.3 | 948 | 5.9 | 29.3 |
国家杰出青年科学基金 | 12990.0 | 2.5 | 104 | 0.6 | 124.9 |
创新研究群体科学基金 | 12580.0 | 2.4 | 26 | 0.2 | 483.8 |
重大研究计划 | 10605.0 | 2.0 | 104 | 0.6 | 102.0 |
优秀青年科学基金 | 8040.0 | 1.5 | 72 | 0.4 | 111.7 |
重点国际(地区)合作研究项目 | 7785.0 | 1.5 | 42 | 0.3 | 185.4 |
应急项目 | 4679.5 | 0.9 | 499 | 3.1 | 9.4 |
海外及港澳学者合作研究基金 | 2550.0 | 0.5 | 71 | 0.4 | 35.9 |
青年-面上连续资助项目 | 1355.1 | 0.3 | 24 | 0.1 | 56.5 |
首先做了一个交叉表,发现除了地区科学基金项目、青年项目和面上项目,其他项目均无需评估的……
Type_rate <- as.array(table(Natural$项目类别, Natural$总评))
Type_rate <- round(prop.table(Type_rate, margin = 1) * 100, digits = 1)
kable(Type_rate)
中 | 优 | 尚未评估 | 差 | 延期 | 延期补评 | 无需评估 | 特优 | 良 | |
---|---|---|---|---|---|---|---|---|---|
优秀青年科学基金 | 0.0 | 0.0 | 0.0 | 0.0 | 0 | 0 | 100 | 0.0 | 0.0 |
创新研究群体科学基金 | 0.0 | 0.0 | 0.0 | 0.0 | 0 | 0 | 100 | 0.0 | 0.0 |
国家杰出青年科学基金 | 0.0 | 0.0 | 0.0 | 0.0 | 0 | 0 | 100 | 0.0 | 0.0 |
地区科学基金项目 | 2.0 | 3.8 | 78.2 | 0.2 | 0 | 0 | 0 | 0.0 | 15.8 |
应急项目 | 0.0 | 0.0 | 0.0 | 0.0 | 0 | 0 | 100 | 0.0 | 0.0 |
海外及港澳学者合作研究基金 | 0.0 | 0.0 | 0.0 | 0.0 | 0 | 0 | 100 | 0.0 | 0.0 |
重大研究计划 | 0.0 | 0.0 | 0.0 | 0.0 | 0 | 0 | 100 | 0.0 | 0.0 |
重点国际(地区)合作研究项目 | 0.0 | 0.0 | 0.0 | 0.0 | 0 | 0 | 100 | 0.0 | 0.0 |
重点项目 | 0.0 | 0.0 | 0.0 | 0.0 | 0 | 0 | 100 | 0.0 | 0.0 |
青年-面上连续资助项目 | 0.0 | 0.0 | 0.0 | 0.0 | 0 | 0 | 100 | 0.0 | 0.0 |
青年科学基金项目 | 1.1 | 10.2 | 74.1 | 0.2 | 0 | 0 | 0 | 0.8 | 13.6 |
面上项目 | 2.0 | 15.7 | 56.0 | 0.2 | 0 | 0 | 0 | 1.0 | 24.9 |
再看历年估结果,1999 年和 2012 年的项目中很大比例尚未评估,看来 1999 年以前的项目评估结果还没有纳入数据库。在 1999 年到 2011 年中,大概有一半的项目评价是良,优的比例总体是在上升,特优也略微在上升。
ggplot(Natural, aes(year(Begin))) +
geom_bar(aes(fill = 总评), position = "fill") +
labs(
title = "国家自然科学基金年度项目评估情况(按起始年份)",
subtitle= "按项目数量计算",
x = "年份",
y = "项目数量"
) +
scale_x_continuous(breaks = seq(1992, 2017, by = 1)) +
theme_pander() +
scale_fill_pander() +
theme_grey(base_family = "STKaiti") +
theme(axis.text.x = element_text(angle = 60, vjust = 0.5))
从 1998 年到 2011 年,14 年中共有 32 次差评,平均每年有 2.3 个项目获得差评,一共有 23 个单位获得差评,超过一次的单位如下:
Bad <- as.data.frame(table(Natural[Natural$总评 == "差", 4]))
kable(Bad[Bad$Freq > 1, ], align = "c")
Var1 | Freq | |
---|---|---|
11 | 农业部农村经济研究中心 | 2 |
12 | 北京大学 | 2 |
14 | 华中科技大学 | 2 |
20 | 浙江大学 | 3 |
21 | 清华大学 | 5 |
获得项目资金累计前五十的单位如下,排名第一的清华遥遥领先,比第二名北大多 2/3 左右。但是,26 年中,清华的自然科学基金只有 2.5 个亿,只能说明真正的科研资源大头并不是通过自然科学基金向下发放的。自然科学基金作为唯一一个公开披露(也有可能是我没找到别的信息)项目资金的科学基金,这充分说明国家科研资源投入的无序性与不公开性。
Rank50 <- summarise(group_by(Natural, 依托单位),
累计金额 = sum(金额),
项目数量 = length(金额),
项目平均金额 = mean(金额))
Rank50 <- Rank50[with(Rank50, order(-累计金额)), ]
kable(head(Rank50,50), align = "c", row.names = T)
依托单位 | 累计金额 | 项目数量 | 项目平均金额 | |
---|---|---|---|---|
1 | 清华大学 | 25059.50 | 621 | 40.35346 |
2 | 北京大学 | 15692.05 | 373 | 42.06984 |
3 | 上海交通大学 | 14770.05 | 382 | 38.66505 |
4 | 中国人民大学 | 13652.05 | 381 | 35.83215 |
5 | 复旦大学 | 13555.90 | 406 | 33.38892 |
6 | 华中科技大学 | 12383.78 | 337 | 36.74712 |
7 | 浙江大学 | 12341.17 | 389 | 31.72537 |
8 | 武汉大学 | 10622.20 | 359 | 29.58830 |
9 | 南京大学 | 10325.35 | 288 | 35.85191 |
10 | 中山大学 | 10289.60 | 280 | 36.74857 |
11 | 大连理工大学 | 9480.70 | 244 | 38.85533 |
12 | 西安交通大学 | 9395.00 | 313 | 30.01597 |
13 | 厦门大学 | 8931.30 | 287 | 31.11951 |
14 | 北京航空航天大学 | 8797.00 | 245 | 35.90612 |
15 | 上海财经大学 | 8212.15 | 261 | 31.46418 |
16 | 天津大学 | 7749.60 | 239 | 32.42510 |
17 | 南开大学 | 7688.20 | 253 | 30.38814 |
18 | 哈尔滨工业大学 | 7242.90 | 210 | 34.49000 |
19 | 同济大学 | 7176.05 | 213 | 33.69038 |
20 | 东北大学 | 7015.50 | 165 | 42.51818 |
21 | 北京理工大学 | 6840.40 | 155 | 44.13161 |
22 | 中国科学技术大学 | 6467.00 | 131 | 49.36641 |
23 | 北京交通大学 | 6258.50 | 125 | 50.06800 |
24 | 中南大学 | 6122.00 | 132 | 46.37879 |
25 | 西南财经大学 | 5948.76 | 186 | 31.98258 |
26 | 湖南大学 | 5611.44 | 146 | 38.43452 |
27 | 合肥工业大学 | 5604.70 | 130 | 43.11308 |
28 | 对外经济贸易大学 | 5295.30 | 170 | 31.14882 |
29 | 华南理工大学 | 4719.32 | 125 | 37.75456 |
30 | 东北财经大学 | 4713.10 | 162 | 29.09321 |
31 | 中央财经大学 | 4711.50 | 175 | 26.92286 |
32 | 南京农业大学 | 4489.90 | 141 | 31.84326 |
33 | 东南大学 | 4347.90 | 146 | 29.78014 |
34 | 中国科学院数学与系统科学研究院 | 4177.30 | 79 | 52.87722 |
35 | 四川大学 | 4145.82 | 120 | 34.54850 |
36 | 电子科技大学 | 4066.00 | 117 | 34.75214 |
37 | 暨南大学 | 4052.90 | 133 | 30.47293 |
38 | 江西财经大学 | 4040.56 | 131 | 30.84397 |
39 | 中国人民解放军国防科学技术大学 | 3835.90 | 88 | 43.58977 |
40 | 中国科学院地理科学与资源研究所 | 3727.60 | 58 | 64.26897 |
41 | 重庆大学 | 3662.50 | 126 | 29.06746 |
42 | 北京师范大学 | 3483.24 | 83 | 41.96675 |
43 | 中国科学院科技政策与管理科学研究所 | 3424.60 | 99 | 34.59192 |
44 | 山东大学 | 3076.50 | 85 | 36.19412 |
45 | 浙江工商大学 | 3027.90 | 107 | 28.29813 |
46 | 中南财经政法大学 | 2977.70 | 111 | 26.82613 |
47 | 西南交通大学 | 2904.60 | 106 | 27.40189 |
48 | 华东理工大学 | 2764.20 | 75 | 36.85600 |
49 | 南京财经大学 | 2762.90 | 86 | 32.12674 |
50 | 吉林大学 | 2740.10 | 84 | 32.62024 |
将每年项目金额前十的单位进行统计,得到历年前十排行榜。去掉只进过一次前十的单位,26 年中进入前十的次数统计情况如下:
Rank <- list()
j = 1
for(i in 1992:2017){
D <- Natural[year(Natural$Begin) == i,]
Rank[[j]] <- names(head(sort(tapply(D$金额, D$依托单位, sum), decreasing = T),10))
i <- i + 1
j <- j + 1
}
Rank <- as.data.frame(Rank)
names(Rank) <- 1992:2017
Rank_count <- table(unlist(Rank))
Rank_count_t <- as.data.frame(sort(Rank_count[Rank_count >1], decreasing = T))
names(Rank_count_t) <- c("依托单位", "进入前十次数")
kable(Rank_count_t, align = "c", row.names = T)
依托单位 | 进入前十次数 | |
---|---|---|
1 | 清华大学 | 26 |
2 | 浙江大学 | 23 |
3 | 上海交通大学 | 18 |
4 | 复旦大学 | 17 |
5 | 北京大学 | 17 |
6 | 中国人民大学 | 15 |
7 | 西安交通大学 | 13 |
8 | 华中科技大学 | 13 |
9 | 武汉大学 | 12 |
10 | 北京航空航天大学 | 11 |
11 | 天津大学 | 9 |
12 | 大连理工大学 | 9 |
13 | 中山大学 | 7 |
14 | 南京大学 | 7 |
15 | 华中理工大学 | 6 |
16 | 厦门大学 | 5 |
17 | 中国科学院数学与系统科学研究院 | 4 |
18 | 中国科学技术大学 | 3 |
19 | 南开大学 | 3 |
20 | 东北大学 | 3 |
21 | 中国科学院科技政策与管理科学研究所 | 2 |
22 | 合肥工业大学 | 2 |
23 | 华南理工大学 | 2 |
24 | 中国科学院地理科学与资源研究所 | 2 |
25 | 同济大学 | 2 |
对所有研究项目的名称进行分词,因为信息量太少,无法做主题模型,出现次数最多的 100 个词语如下:
library(jiebaR)
W <- worker()
Title <- W[Natural$项目名称]
head(sort(table(unlist(Title)), decreasing = T), 100)
##
## 的 研究 与 基于 机制 及 下 企业 影响 理论
## 13156 12797 7024 4143 2297 2264 2045 2041 1863 1774
## 和 中国 及其 模型 对 行为 方法 管理 视角 中
## 1767 1564 1532 1514 1512 1505 1432 1293 1237 1200
## 机理 网络 优化 实证 创新 政策 应用 分析 我国 风险
## 1062 1047 1024 1003 979 960 953 930 882 865
## 环境 经济 决策 策略 模式 系统 动态 发展 组织 供应链
## 860 844 827 788 785 728 723 721 674 655
## 效应 市场 技术 社会 知识 信息 绩效 评价 多 服务
## 640 626 623 609 608 605 595 535 528 519
## 治理 问题 以 产业 关系 结构 选择 演化 战略 设计
## 506 495 471 469 469 463 460 452 450 429
## 作用 制度 投资 控制 区域 协同 路径 协调 建模 为例
## 428 418 412 399 398 389 378 374 373 372
## 面向 产品 因素 数据 评估 过程 复杂 资源 定价 不
## 370 369 363 360 359 358 354 351 350 342
## 资本 在 价值 形成 效率 城市 消费者 生产 质量 政府
## 342 341 326 326 324 316 316 313 311 309
## 构建 体系 金融 农业 农村 能力 对策 公司 团队 创业
## 307 302 291 279 279 276 269 264 259 256
与企业相关的研究远远高于社会、市场和政府。
国家自然科学基金项目资金在 2008 年以后迅速增长,于 2013 年达到现在到水平,并维持在每年约 7 亿元的水平上。
青年项目和面上项目是主要形式,二者此消彼长,占总数近 90%。
除地区科学基金项目、青年项目和面上项目外,其他类型项目均无需评估,无需评估项目占总资金的 21.7%;而在需要评估的前三类中,尚未评估的占 3/4 左右。
从 中国科技统计 网站上能够获取到的最新数据是 2013 年的,高校 2013 年从政府获得的经费是 516.9 亿元,而当年的自然科学基金约在 7 亿元左右。完整高效披露信息的比例极小。
虽然自然科学基金在整个科研经费体系中比例很小,但是从中可以看出依托单位获取国家科研资金的能力。