本次样例使用数据来自:http://www.stat.ubc.ca/~rickw/gapminderDataFiveYear.txt
数据内容为以5年为间隔的世界经济数据统计,数据项包含国家,年份,人口,所在大洲,寿命期望,人均GDP
X <- read.delim("http://www.stat.ubc.ca/~rickw/gapminderDataFiveYear.txt")
#显示数据基本元素
str(X)
## 'data.frame': 1704 obs. of 6 variables:
## $ country : Factor w/ 142 levels "Afghanistan",..: 1 1 1 1 1 1 1 1 1 1 ...
## $ year : int 1952 1957 1962 1967 1972 1977 1982 1987 1992 1997 ...
## $ pop : num 8425333 9240934 10267083 11537966 13079460 ...
## $ continent: Factor w/ 5 levels "Africa","Americas",..: 3 3 3 3 3 3 3 3 3 3 ...
## $ lifeExp : num 28.8 30.3 32 34 36.1 ...
## $ gdpPercap: num 779 821 853 836 740 ...
#原始数据的散点图
qplot(gdpPercap, lifeExp, data=X)
#观察到数据的分布,我们利用log函数改变图形分布
qplot(gdpPercap, lifeExp, data=X, log = "x", color = year)
#make it more colorful
qplot(gdpPercap, lifeExp, data=X, log = "x", color = factor(year))
#利用气泡图显示人口多少(很容易找到我国...)
qplot(gdpPercap, lifeExp, data=X, log = "x", color = year, size = pop)
#利用形状区分各洲数据(非洲人民苦难多——寿命偏低啊)
qplot(gdpPercap, lifeExp, data=X, log = "x", color = year, shape = continent)
#利用光滑曲线显示预期寿命与人均GDP的关系(氪金续命...)
qplot(gdpPercap, lifeExp, data=X, log = "x", alpha=I(0.5), geom=c("point", "smooth"))
#利用线性回归来进一步计算寿命与gdp的拟合关系
ggplot(X,aes(x = log(X$gdpPercap),y=X$lifeExp)) + geom_point(shape=19) +
xlab("gdpPercap") + ylab("lifeExp") + geom_smooth(method = lm)
#将同一年份寿命预期连线,可以发现随时间推移,平均寿命的增长
qplot(gdpPercap, lifeExp, data=X, log = "x", alpha=I(0.5), color=year, geom=c("point", "path"))
#进一步地,可以利用箱线图进行分析寿命变化
X$year.fac <- factor(X$year)
qplot(year.fac, lifeExp, data=X, color=I("red"), geom="boxplot")
#那么图中1992的离群点到底发生了什么....
strangeExp=min(X$lifeExp[X$year==1992])
example=X[X$lifeExp==23.599,]
head(example)
## country year pop continent lifeExp gdpPercap year.fac
## 1293 Rwanda 1992 7290203 Africa 23.599 737.0686 1992
#我们发现这个国家是卢旺达,唔,让我想起来一部叫《卢旺达大饭店》的电影,而这个离群数据的统计时间是1992-1997,基本符合猜测。
#此外我们还可以根据年份绘出散点图
qplot(year.fac, lifeExp, data=X, color=I("red"), geom="jitter")
#下面我们还可以根据大陆来观察寿命分布(非酋vs欧皇的寿命比拼)
qplot(lifeExp,data=X, geom="histogram", fill=continent)
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
#相关地,我们还可以展示出密度曲线的结果
qplot(lifeExp,data=X, alpha=I(0.5), geom="density", color=continent)
#进一步,我们们可以将密度曲线格局各个大洲分开显示
qplot(lifeExp,data=X, geom="density", facets=continent~.)
#最后,我们可以绘制显示多维数据的统计图
qplot(lifeExp,data=X, geom="histogram", facets=year~continent)
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.