ggplot学习笔记(五)

我们编程找出寿命增长不稳定的国家。 这部分内容与作图关系不大,可以跳过。 对每个国家做线性回归, 以期望寿命为因变量, 以年份为自变量, 找出残差方差很大的,以及直线斜率为负的国家。

library(tidyverse)extract_lmr<- function(lmr){summ= summary(lmr)  tibble(sigma = summ$sigma,rate = lmr$coefficients[2]  )}lmres <- gapminder %>%select(country, year, lifeExp) %>%  group_by(country) %>%  nest(data = c(year, lifeExp)) %>%mutate(lmr = map(data,~ lm(lifeExp~ year,data = .x))) %>%mutate(info= map(lmr, extract_lmr)) %>%select(-data, -lmr) %>%unnest(info) %>%  arrange(desc(sigma))summary(lmres)

这里的代码我的理解是定义一个函数extract_lmr,使用summary函数获得描述性统计量,将sigma和系数并表。之后从gapminder里选取country,year,lifeExp的数据,用country分组,生成每个组的子数据框,用map函数将回归建模的函数作用到data里的每个元素, 用mutate保存到列表类型的lmr列中,用mutate为数据框计算新变量, 返回含有新变量以及原变量的新数据框。之后调用定义的extract_lmr,获得sigma和系数。使用select扣除data和lmr列,用unnest将每个组提取的回归结果转换为普通的数据框列,用desc对sigma降序排序,最后获取lmres的描述性统计量。以上如有不对还请多多指正。

##        country        sigma            rate        ##  Afghanistan:  1  Min.  :0.2118  Min.  :-0.09302  ##  Albania    :  1  1st Qu.:0.7111  1st Qu.: 0.20832  ##  Algeria    :  1  Median :1.2843  Median : 0.32145  ##  Angola    :  1  Mean  :1.6587  Mean  : 0.32590  ##  Argentina  :  1  3rd Qu.:1.9272  3rd Qu.: 0.44948  ##  Australia  :  1   Max.   :7.2054   Max.   : 0.77218  ##  (Other)    :136

head(lmres, 10)

## # A tibble: 10 x 3## # Groups:  country [142]##    country      sigma    rate##              ##  1 Zimbabwe      7.21 -0.0930##  2 Swaziland    6.64  0.0951##  3 Rwanda        6.56 -0.0458##  4 Botswana      6.11  0.0607##  5 Lesotho      5.93  0.0956##  6 Cambodia      5.63  0.396 ##  7 Namibia      4.96  0.231 ##  8 South Africa  4.74  0.169 ##  9 Zambia        4.53 -0.0604## 10 Kenya        4.38  0.207

这些排名靠前的国家都是期望寿命增长不稳定的。

你可能感兴趣的:(ggplot学习笔记(五))