library(AER )
library(scales)
library(ggplot2)
library(tidyverse)
library(DT)
library(graphics)
library(corrplot)
library(gridExtra)
library(WDI)
library(rvest)
library(dplyr)
nn<- WDIsearch('Agriculture ')
m<- WDI(indicator = 'SPI.D4.1.5.AGSVY')
m<- na.omit(m)
SPI.D4.1.5.AGSVY cho biết số điểm về một cuộc khảo sát nông nghiệp trong vòng 16 năm từ 2004 đến 2019 ở một số nước.
WDI(indicator = 'SPI.D4.1.5.AGSVY', country = 'VNM')
## country iso2c iso3c year SPI.D4.1.5.AGSVY
## 1 Vietnam VNM 2019 0
## 2 Vietnam VNM 2018 0
## 3 Vietnam VNM 2017 0
## 4 Vietnam VNM 2016 0
## 5 Vietnam VNM 2015 0
## 6 Vietnam VNM 2014 0
## 7 Vietnam VNM 2013 0
## 8 Vietnam VNM 2012 0
## 9 Vietnam VNM 2011 0
## 10 Vietnam VNM 2010 0
## 11 Vietnam VNM 2009 0
## 12 Vietnam VNM 2008 0
## 13 Vietnam VNM 2007 0
## 14 Vietnam VNM 2006 0
## 15 Vietnam VNM 2005 0
## 16 Vietnam VNM 2004 0
điểm số trong khảo sát nông nghiệp của Việt Nam trong 16 năm đều bằng 0.
length(unique(m$country))
## [1] 190
table(m$SPI.D4.1.5.AGSVY)
##
## 0 0.33 0.67 1
## 2087 227 141 585
có 4 mức điểm gồm : 0,0.33,0.67,1; trong cuộc khảo sát gồm 190 quốc gia trong đó 0 điểm chiếm số lượng nhiều nhất và 1 điểm có số lượng nhiều thứ hai
d<- filter(m,SPI.D4.1.5.AGSVY == 0.67)
length(unique(d$country))
## [1] 48
ta khảo sát tập d có 141 giá trị có điểm số khảo sát bằng 0.67 trong đó có 48 nằm trong tập d này.
table(d$country)
##
## Argentina Austria Bolivia Brazil
## 4 1 5 1
## Bulgaria Burkina Faso Colombia Croatia
## 2 1 4 3
## Czech Republic Finland France Gambia, The
## 2 4 2 10
## Guatemala Honduras Hungary Iceland
## 1 1 2 4
## India Italy Kuwait Latvia
## 4 2 1 2
## Lesotho Lithuania Mali Malta
## 2 6 1 2
## Mexico Mozambique Niger Nigeria
## 3 10 6 2
## North Macedonia Peru Philippines Poland
## 4 1 1 6
## Portugal Romania Rwanda Saudi Arabia
## 1 6 2 2
## Senegal Slovak Republic Slovenia South Africa
## 1 2 2 1
## Spain Sweden Tanzania Turkey
## 1 4 2 1
## United Kingdom West Bank and Gaza Zambia Zimbabwe
## 2 10 2 2
filter(m,country=='Mali')
## country iso2c iso3c year SPI.D4.1.5.AGSVY
## 1 Mali MLI 2019 1.00
## 2 Mali MLI 2018 1.00
## 3 Mali MLI 2017 1.00
## 4 Mali MLI 2016 1.00
## 5 Mali MLI 2015 1.00
## 6 Mali MLI 2014 1.00
## 7 Mali MLI 2013 1.00
## 8 Mali MLI 2012 1.00
## 9 Mali MLI 2011 1.00
## 10 Mali MLI 2010 1.00
## 11 Mali MLI 2009 1.00
## 12 Mali MLI 2008 1.00
## 13 Mali MLI 2007 0.67
## 14 Mali MLI 2006 0.33
## 15 Mali MLI 2005 0.33
## 16 Mali MLI 2004 0.00
các quốc gia có trong tập điểm khảo sát 0.67 có số năm đạt mức điểm này chủ yếu từ 1- 6 năm . ta lọc điểm khảo sát của Mali và thấy được điểm của quốc gia này tăng dân theo năm từ 0-1.
e<-filter(m,SPI.D4.1.5.AGSVY == 0)
table(e$country)
##
## Afghanistan Albania
## 16 14
## Algeria Andorra
## 16 16
## Angola Antigua and Barbuda
## 16 16
## Armenia Azerbaijan
## 4 16
## Bahamas, The Bahrain
## 16 16
## Bangladesh Barbados
## 5 16
## Belarus Belgium
## 16 9
## Belize Benin
## 16 16
## Bhutan Bolivia
## 16 4
## Bosnia and Herzegovina Botswana
## 16 16
## Brazil Brunei Darussalam
## 9 16
## Burundi Cabo Verde
## 7 16
## Cambodia Cameroon
## 16 16
## Central African Republic Chad
## 16 16
## Chile China
## 16 16
## Comoros Congo, Dem. Rep.
## 16 16
## Congo, Rep. Costa Rica
## 16 16
## Cote d'Ivoire Croatia
## 12 1
## Djibouti Dominica
## 16 16
## Dominican Republic Ecuador
## 16 16
## Egypt, Arab Rep. El Salvador
## 16 16
## Equatorial Guinea Eritrea
## 16 16
## Eswatini Fiji
## 16 16
## Finland Gabon
## 9 16
## Gambia, The Georgia
## 4 8
## Ghana Grenada
## 16 16
## Guatemala Guinea
## 9 16
## Guinea-Bissau Guyana
## 16 16
## Haiti Honduras
## 16 2
## Iceland Indonesia
## 9 16
## Iran, Islamic Rep. Iraq
## 16 16
## Israel Jamaica
## 16 16
## Japan Jordan
## 16 16
## Kazakhstan Kenya
## 16 16
## Kiribati Kosovo
## 16 11
## Kyrgyz Republic Lao PDR
## 16 16
## Lebanon Lesotho
## 16 5
## Liberia Libya
## 16 16
## Lithuania Luxembourg
## 1 16
## Madagascar Malawi
## 16 16
## Malaysia Maldives
## 16 16
## Mali Marshall Islands
## 1 16
## Mauritania Mauritius
## 16 5
## Mexico Micronesia, Fed. Sts.
## 8 16
## Moldova Mongolia
## 16 16
## Montenegro Morocco
## 12 16
## Mozambique Myanmar
## 4 16
## Namibia Nauru
## 16 16
## Nepal Netherlands
## 16 16
## Nicaragua Niger
## 16 7
## Nigeria North Macedonia
## 1 9
## Oman Pakistan
## 16 16
## Palau Panama
## 16 16
## Papua New Guinea Paraguay
## 16 16
## Peru Philippines
## 10 4
## Poland Qatar
## 1 16
## Romania Russian Federation
## 1 16
## Samoa Sao Tome and Principe
## 16 16
## Saudi Arabia Senegal
## 13 1
## Serbia Seychelles
## 14 16
## Sierra Leone Singapore
## 16 16
## Solomon Islands Somalia
## 16 16
## South Africa South Sudan
## 4 16
## Sri Lanka St. Kitts and Nevis
## 12 16
## St. Lucia St. Vincent and the Grenadines
## 16 16
## Sudan Suriname
## 16 16
## Sweden Syrian Arab Republic
## 9 16
## Tajikistan Tanzania
## 16 5
## Thailand Timor-Leste
## 4 16
## Togo Tonga
## 16 16
## Trinidad and Tobago Tunisia
## 16 5
## Turkey Turkmenistan
## 2 16
## Tuvalu Uganda
## 16 16
## Ukraine United Arab Emirates
## 16 16
## Uruguay Uzbekistan
## 16 16
## Vanuatu Venezuela, RB
## 16 16
## Vietnam Yemen, Rep.
## 16 16
## Zimbabwe
## 8
với tập e là tập các giá trị có điểm khảo sát được bằng 0, ta thấy hầu hết các quốc gia có trong nhóm điểm này đều duy trì mức điểm trong 16 năm, không có sự thay đổi điểm như tập 0.67 đã khảo sát trước đó.
n<- WDI(indicator = 'AG.PRD.AGRI.XD')
n<- na.omit(n)
Chỉ số FAO về sản xuất nông nghiệp cho thấy mức độ tương đối của tổng sản lượng nông nghiệp trong mỗi năm so với giai đoạn cơ sở 1999-2001. Chúng dựa trên tổng số lượng các mặt hàng nông sản được tính theo trọng số giá sau khi đã trừ đi các lượng sử dụng làm hạt giống và thức ăn với cách tính tương tự. Tổng kết quả thu được đại diện cho tất cả mục đích sản xuất, ngoại trừ làm hạt giống và thức ăn.
length(unique(n$country))
## [1] 59
summary(n$AG.PRD.AGRI.XD)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 13.42 47.93 68.92 70.40 91.61 192.72
filter(n,AG.PRD.AGRI.XD==192.72|AG.PRD.AGRI.XD==13.42)
## country iso2c iso3c year AG.PRD.AGRI.XD
## 1 Djibouti DJI 1961 13.42
## 2 Seychelles SYC 1968 192.72
có 59 quốc gia trong bảng khảo sát, trong đó quốc gia có tổng sản lượng cao nhất là Seychelles (1968) với 192.72% so với thời kỳ gốc là 1999-2001 và quốc gia có sản lượng nhỏ nhất là Djibouti (1961) với tổng sản lượng 13.42% so với thời kỳ gốc.
filter(n,country=='Seychelles')
## country iso2c iso3c year AG.PRD.AGRI.XD
## 1 Seychelles SYC 2011 83.66
## 2 Seychelles SYC 2010 76.70
## 3 Seychelles SYC 2009 81.21
## 4 Seychelles SYC 2008 89.56
## 5 Seychelles SYC 2007 94.52
## 6 Seychelles SYC 2006 93.17
## 7 Seychelles SYC 2005 96.30
## 8 Seychelles SYC 2004 110.52
## 9 Seychelles SYC 2003 126.62
## 10 Seychelles SYC 2002 133.74
## 11 Seychelles SYC 2001 148.14
## 12 Seychelles SYC 2000 146.75
## 13 Seychelles SYC 1999 146.58
## 14 Seychelles SYC 1998 146.70
## 15 Seychelles SYC 1997 159.40
## 16 Seychelles SYC 1996 145.35
## 17 Seychelles SYC 1995 151.62
## 18 Seychelles SYC 1994 132.63
## 19 Seychelles SYC 1993 116.44
## 20 Seychelles SYC 1992 110.96
## 21 Seychelles SYC 1991 121.29
## 22 Seychelles SYC 1990 118.22
## 23 Seychelles SYC 1989 118.99
## 24 Seychelles SYC 1988 108.24
## 25 Seychelles SYC 1987 117.74
## 26 Seychelles SYC 1986 144.11
## 27 Seychelles SYC 1985 136.29
## 28 Seychelles SYC 1984 120.54
## 29 Seychelles SYC 1983 141.93
## 30 Seychelles SYC 1982 124.99
## 31 Seychelles SYC 1981 129.50
## 32 Seychelles SYC 1980 129.53
## 33 Seychelles SYC 1979 121.72
## 34 Seychelles SYC 1978 109.10
## 35 Seychelles SYC 1977 115.48
## 36 Seychelles SYC 1976 124.20
## 37 Seychelles SYC 1975 124.34
## 38 Seychelles SYC 1974 133.28
## 39 Seychelles SYC 1973 136.42
## 40 Seychelles SYC 1972 144.82
## 41 Seychelles SYC 1971 120.20
## 42 Seychelles SYC 1970 129.83
## 43 Seychelles SYC 1969 135.54
## 44 Seychelles SYC 1968 192.72
## 45 Seychelles SYC 1967 179.83
## 46 Seychelles SYC 1966 151.67
## 47 Seychelles SYC 1965 131.63
## 48 Seychelles SYC 1964 147.40
## 49 Seychelles SYC 1963 122.59
## 50 Seychelles SYC 1962 131.23
## 51 Seychelles SYC 1961 122.81
ở đất nước có tổng sản lượng năm lớn nhất Seychelles ta thấy sản lượng nông sản giảm dần từ sau thời kì gốc đến năm gần nhất khảo sát được là 2011 sản lượng lúc này chỉ còn khoảng 83.66% so vời thời kỳ gốc và chỉ khoảng bằng 0.4 lần so với lúc sản lượng lớn nhất năm 1968.
filter(n,country=='Djibouti')
## country iso2c iso3c year AG.PRD.AGRI.XD
## 1 Djibouti DJI 2011 113.57
## 2 Djibouti DJI 2010 113.68
## 3 Djibouti DJI 2009 126.54
## 4 Djibouti DJI 2008 141.54
## 5 Djibouti DJI 2007 137.28
## 6 Djibouti DJI 2006 111.25
## 7 Djibouti DJI 2005 95.31
## 8 Djibouti DJI 2004 93.44
## 9 Djibouti DJI 2003 97.05
## 10 Djibouti DJI 2002 97.86
## 11 Djibouti DJI 2001 85.80
## 12 Djibouti DJI 2000 84.93
## 13 Djibouti DJI 1999 78.24
## 14 Djibouti DJI 1998 76.89
## 15 Djibouti DJI 1997 74.92
## 16 Djibouti DJI 1996 71.65
## 17 Djibouti DJI 1995 78.86
## 18 Djibouti DJI 1994 73.34
## 19 Djibouti DJI 1993 70.72
## 20 Djibouti DJI 1992 73.95
## 21 Djibouti DJI 1991 70.04
## 22 Djibouti DJI 1990 93.71
## 23 Djibouti DJI 1989 95.57
## 24 Djibouti DJI 1988 79.31
## 25 Djibouti DJI 1987 76.21
## 26 Djibouti DJI 1986 74.05
## 27 Djibouti DJI 1985 68.66
## 28 Djibouti DJI 1984 58.42
## 29 Djibouti DJI 1983 53.21
## 30 Djibouti DJI 1982 45.57
## 31 Djibouti DJI 1981 45.25
## 32 Djibouti DJI 1980 46.79
## 33 Djibouti DJI 1979 36.66
## 34 Djibouti DJI 1978 27.92
## 35 Djibouti DJI 1977 26.46
## 36 Djibouti DJI 1976 27.04
## 37 Djibouti DJI 1975 24.10
## 38 Djibouti DJI 1974 23.71
## 39 Djibouti DJI 1973 22.22
## 40 Djibouti DJI 1972 22.17
## 41 Djibouti DJI 1971 21.05
## 42 Djibouti DJI 1970 20.12
## 43 Djibouti DJI 1969 19.38
## 44 Djibouti DJI 1968 18.02
## 45 Djibouti DJI 1967 16.76
## 46 Djibouti DJI 1966 16.05
## 47 Djibouti DJI 1965 14.82
## 48 Djibouti DJI 1964 14.54
## 49 Djibouti DJI 1963 14.23
## 50 Djibouti DJI 1962 13.78
## 51 Djibouti DJI 1961 13.42
ngược lại với Seychelles thì Djibouti lại tăng trưởng khá tốt. sau thời kì gốc tức sau nhưng năm 2001 tổng sản lượng tăng và tới nhưng năm gần nhất là 2011 tổng sản lượng đạt được là 113.57% so với thời kì gốc, gần gấp 10 lần so với năm 1961.
em<- WDIsearch('Energy')
d<- WDI(indicator = 'EG.USE.COMM.CL.ZS')
d<- na.omit(d)
EG.USE.COMM.CL.ZS:nói về năng lượng thay thế và hạt nhân (% tổng năng lượng sử dụng), gồm các năng lượng sạch là năng lượng không chứa carbohydrate không tạo ra carbon dioxide khi sử dụng. Nó bao gồm thủy điện và hạt nhân, địa nhiệt và năng lượng mặt trời, và một số loại năng lượng khác.
summary(d$year)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 1960 1980 1993 1992 2004 2015
length(unique(d$country))
## [1] 189
summary(d$EG.USE.COMM.CL.ZS)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 0.0000 0.7362 2.3749 5.8042 6.9724 71.5424
subset(d, EG.USE.COMM.CL.ZS == max(EG.USE.COMM.CL.ZS))
## country iso2c iso3c year EG.USE.COMM.CL.ZS
## 8671 Iceland IS ISL 1983 71.54236
min<-subset(d, EG.USE.COMM.CL.ZS == min(EG.USE.COMM.CL.ZS))
length(unique(min$country))
## [1] 30
table(min$country)
##
## Bahrain Benin Botswana
## 44 35 7
## Brunei Darussalam Cambodia Curacao
## 40 5 19
## Cyprus Eritrea Estonia
## 24 5 2
## Gabon Gibraltar Hong Kong SAR, China
## 1 44 35
## Israel Jordan Kuwait
## 10 15 44
## Libya Malta Mongolia
## 44 31 28
## Netherlands Niger Oman
## 8 7 44
## Philippines Qatar Saudi Arabia
## 2 44 41
## Senegal Singapore Trinidad and Tobago
## 29 19 44
## Turkmenistan United Arab Emirates Yemen, Rep.
## 15 42 43
cuộc khảo sát kéo dài 55 năm từ 1960- 2015 có 189 quốc gia trong khảo sát trong đó quốc gia có tỉ lệ sử dụng nguồn năng lượng sạch chiếm tỉ lệ nhiều nhất là Iceland (1983) với 71.54236% tổng năng lượng sử dụng, và có 30 quốc gia không sử dụng nguồn năng sạch này trong đó có nhiều quốc gia không sử dụng các nguồn năng lượng này trong 44 năm. khảo sát một số quốc gia trong nhóm không sử dụng nguồn năng lượng này.
filter(d, EG.USE.COMM.CL.ZS =="Bahrain")
## [1] country iso2c iso3c year
## [5] EG.USE.COMM.CL.ZS
## <0 rows> (or 0-length row.names)
số năm khảo sát được ở Bahrain chỉ kéo dài 44 năm và phần trăm sử dụng nguồn năng lượng sạch đều bằng 0
filter(d, country =="Singapore")
## country iso2c iso3c year EG.USE.COMM.CL.ZS
## 1 Singapore SG SGP 2014 0.19278921
## 2 Singapore SG SGP 2013 0.19883089
## 3 Singapore SG SGP 2012 0.19867067
## 4 Singapore SG SGP 2011 0.18705664
## 5 Singapore SG SGP 2010 0.18669199
## 6 Singapore SG SGP 2009 0.20418639
## 7 Singapore SG SGP 2008 0.17118305
## 8 Singapore SG SGP 2007 0.18173450
## 9 Singapore SG SGP 2006 0.16519358
## 10 Singapore SG SGP 2005 0.17701922
## 11 Singapore SG SGP 2004 0.11207790
## 12 Singapore SG SGP 2003 0.14105521
## 13 Singapore SG SGP 2002 0.16258947
## 14 Singapore SG SGP 2001 0.16057277
## 15 Singapore SG SGP 2000 0.09732533
## 16 Singapore SG SGP 1999 0.09898669
## 17 Singapore SG SGP 1998 0.08859848
## 18 Singapore SG SGP 1997 0.07879872
## 19 Singapore SG SGP 1996 0.08783710
## 20 Singapore SG SGP 1995 0.09193710
## 21 Singapore SG SGP 1994 0.07815798
## 22 Singapore SG SGP 1993 0.09427478
## 23 Singapore SG SGP 1992 0.11463773
## 24 Singapore SG SGP 1991 0.12840803
## 25 Singapore SG SGP 1990 0.05230866
## 26 Singapore SG SGP 1989 0.00000000
## 27 Singapore SG SGP 1988 0.00000000
## 28 Singapore SG SGP 1987 0.00000000
## 29 Singapore SG SGP 1986 0.00000000
## 30 Singapore SG SGP 1985 0.00000000
## 31 Singapore SG SGP 1984 0.00000000
## 32 Singapore SG SGP 1983 0.00000000
## 33 Singapore SG SGP 1982 0.00000000
## 34 Singapore SG SGP 1981 0.00000000
## 35 Singapore SG SGP 1980 0.00000000
## 36 Singapore SG SGP 1979 0.00000000
## 37 Singapore SG SGP 1978 0.00000000
## 38 Singapore SG SGP 1977 0.00000000
## 39 Singapore SG SGP 1976 0.00000000
## 40 Singapore SG SGP 1975 0.00000000
## 41 Singapore SG SGP 1974 0.00000000
## 42 Singapore SG SGP 1973 0.00000000
## 43 Singapore SG SGP 1972 0.00000000
## 44 Singapore SG SGP 1971 0.00000000
phần trăm sử dụng nguồn năng lượng sạch ở Singapore bắt đầu tăng từ năm 1990 và đến năm khảo sát gần nhất là 2014 tỉ lệ này là 0.927% trên tổng số năng lượng sử dụng, sự tăng trưởng khá chậm và có biến động nhẹ .
e<- WDI(indicator = 'EN.ATM.CO2E.GF.ZS')
e<- na.omit(e)
EN.ATM.CO2E.GF.ZS: Dữ liệu về lượng khí thải carbon dioxide (% tổng số) bao gồm các loại khí từ việc đốt nhiên liệu hóa thạch và sản xuất xi măng, nhưng không bao gồm lượng khí thải từ việc sử dụng đất như phá rừng.
summary(e$year)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 1960 1977 1993 1991 2005 2016
length(unique(e$country))
## [1] 250
subset(e, EN.ATM.CO2E.GF.ZS == max(EN.ATM.CO2E.GF.ZS))
## country iso2c iso3c year EN.ATM.CO2E.GF.ZS
## 15442 Trinidad and Tobago TT TTO 2016 207.3675
subset(e, EN.ATM.CO2E.GF.ZS == min(EN.ATM.CO2E.GF.ZS))
## country iso2c iso3c year EN.ATM.CO2E.GF.ZS
## 10252 Libya LY LBY 1977 -0.7295276
dữ liệu trong 56 năm từ 1960 đến 2016 trên 250 quốc gia trong đó Trinidad and Tobago (2016) là quốc gia có lượng khí thải công nghiệp nhiều nhất với 207.3675% và Libya (1977) với lượng khí thải âm là -0.7295% trên tổng số lượng khí thải.
filter(e,country=="Libya")
## country iso2c iso3c year EN.ATM.CO2E.GF.ZS
## 1 Libya LY LBY 2016 18.6789156
## 2 Libya LY LBY 2015 23.6679513
## 3 Libya LY LBY 2014 18.6175494
## 4 Libya LY LBY 2013 24.1532533
## 5 Libya LY LBY 2012 20.4945335
## 6 Libya LY LBY 2011 26.7435611
## 7 Libya LY LBY 2010 23.0797379
## 8 Libya LY LBY 2009 20.8939268
## 9 Libya LY LBY 2008 24.4514164
## 10 Libya LY LBY 2007 26.1736185
## 11 Libya LY LBY 2006 24.4293356
## 12 Libya LY LBY 2005 22.4886444
## 13 Libya LY LBY 2004 28.3025654
## 14 Libya LY LBY 2003 23.8752507
## 15 Libya LY LBY 2002 23.9448372
## 16 Libya LY LBY 2001 24.3404538
## 17 Libya LY LBY 2000 23.8396388
## 18 Libya LY LBY 1999 20.8400447
## 19 Libya LY LBY 1998 25.5587143
## 20 Libya LY LBY 1997 26.1888213
## 21 Libya LY LBY 1996 24.7848249
## 22 Libya LY LBY 1995 24.1988744
## 23 Libya LY LBY 1994 25.5801587
## 24 Libya LY LBY 1993 28.8698962
## 25 Libya LY LBY 1992 30.4373102
## 26 Libya LY LBY 1991 27.8546729
## 27 Libya LY LBY 1990 25.7167553
## 28 Libya LY LBY 1989 28.6696797
## 29 Libya LY LBY 1988 22.9397542
## 30 Libya LY LBY 1987 24.4004054
## 31 Libya LY LBY 1986 26.0012920
## 32 Libya LY LBY 1985 20.0630252
## 33 Libya LY LBY 1984 19.6387394
## 34 Libya LY LBY 1983 12.2739330
## 35 Libya LY LBY 1982 4.5178210
## 36 Libya LY LBY 1981 11.6583938
## 37 Libya LY LBY 1980 8.6275044
## 38 Libya LY LBY 1979 8.9871813
## 39 Libya LY LBY 1978 7.0441989
## 40 Libya LY LBY 1977 -0.7295276
## 41 Libya LY LBY 1976 0.0000000
## 42 Libya LY LBY 1975 0.0000000
## 43 Libya LY LBY 1974 0.0000000
## 44 Libya LY LBY 1973 0.0000000
## 45 Libya LY LBY 1972 0.0000000
## 46 Libya LY LBY 1971 0.0000000
## 47 Libya LY LBY 1970 0.0000000
## 48 Libya LY LBY 1969 0.0000000
## 49 Libya LY LBY 1968 0.0000000
## 50 Libya LY LBY 1967 0.0000000
## 51 Libya LY LBY 1966 0.0000000
## 52 Libya LY LBY 1965 0.0000000
## 53 Libya LY LBY 1964 0.0000000
## 54 Libya LY LBY 1963 0.0000000
## 55 Libya LY LBY 1962 0.0000000
## 56 Libya LY LBY 1961 0.0000000
## 57 Libya LY LBY 1960 0.0000000
với Libya sau năm 1977 lượng khí thải do việc đốt nhiên liệu ở quốc gia này tăng dần nhưng không vượt quá 30% tổng lượng khí thải. từ sau năm 2000 lượng khí thải do đôt nhiên liệu công nghiệp này khá ổn định.
gi<- WDIsearch('GNI')
n<- WDI(indicator='NY.ADJ.DRES.GN.ZS')
n<-na.omit(n)
NY.ADJ.DRES.GN.ZS: Cạn kiệt tài nguyên thiên nhiên (%GNI) là tổng của sự cạn kiệt rừng ròng, cạn kiệt năng lượng và cạn kiệt khoáng sản. Sự suy giảm rừng thuần là tiền thuê tài nguyên đơn vị nhân với mức thu hoạch gỗ tròn dư thừa so với tăng trưởng tự nhiên. Sự cạn kiệt năng lượng là tỷ lệ giá trị của trữ lượng tài nguyên năng lượng với thời gian dự trữ còn lại (giới hạn ở mức 25 năm). Nó bao gồm than đá, dầu thô và khí đốt tự nhiên. Cạn kiệt khoáng sản là tỷ lệ giữa giá trị trữ lượng tài nguyên khoáng sản với thời gian tồn trữ còn lại (giới hạn ở mức 25 năm). Nó bao gồm thiếc, vàng, chì, kẽm, sắt, đồng, niken, bạc, bauxite và phốt phát.
summary(n$NY.ADJ.DRES.GN.ZS)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 0.0000 0.2304 1.6414 4.6016 6.0031 100.6133
subset(n, NY.ADJ.DRES.GN.ZS == max(NY.ADJ.DRES.GN.ZS))
## country iso2c iso3c year NY.ADJ.DRES.GN.ZS
## 6888 Equatorial Guinea GQ GNQ 2002 100.6133
a<-subset(n, NY.ADJ.DRES.GN.ZS == min(NY.ADJ.DRES.GN.ZS))
length(unique(a$country))
## [1] 14
dữ liệu từ năm 1970- 2020 về sự hao tổn tài nguyên thiên nhiên trong tổng số GNI giao động từ 0 đến 100.6133% trong đó có 14 quốc gia có mức tổn thất 0% và quốc gia có mức hao tổn nhiều nhất là Equatorial Guinea(2002).
table(a$country)
##
## Burkina Faso Cambodia Costa Rica Cote d'Ivoire Cyprus
## 5 23 14 9 3
## Latvia Lebanon Moldova Nepal Panama
## 25 17 1 20 31
## Senegal Solomon Islands Switzerland Uruguay
## 3 5 6 1
có 14 quốc gia có hao tổn tài nguyên trong GNI 0% với Panama là quốc gia có nhiều năm có phần trăm hao tổn trong GNI 0% với 31 năm và Moldova,Uruguay là hai quốc gia chỉ có 1 năm có tỉ lệ này ở mức 0%
filter(n,country=='Equatorial Guinea')|> ggplot(aes(year,NY.ADJ.DRES.GN.ZS))+geom_line(color='blue')
đồ thị trên cho thấy mức hao tổn tài nguyên thiên nhiên có trong %GNI của quốc gia Equatorial Guinea. có thể thấy lượng hao tổn này tăng nhanh và ở mức cao ở những năm 1995-2014 đỉnh điểm là năm 2002 và giảm dần ở các năm sau về sau với mức hao tổn trung bình.
g<- WDI(indicator='NY.ADJ.DMIN.GN.ZS')
g<- na.omit(g)
NY.ADJ.DMIN.GN.ZS: Cạn kiệt khoáng sản (% GNI) là tỷ lệ giữa giá trị trữ lượng tài nguyên khoáng sản với thời gian tồn trữ còn lại (giới hạn ở mức 25 năm). Nó bao gồm thiếc, vàng, chì, kẽm, sắt, đồng, niken, bạc, bauxite và phốt phát.
length(unique(g$country))
## [1] 255
summary(g$NY.ADJ.DMIN.GN.ZS)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 0.00000 0.00000 0.01895 0.35858 0.20740 30.45496
subset(g, NY.ADJ.DMIN.GN.ZS == max(NY.ADJ.DMIN.GN.ZS))
## country iso2c iso3c year NY.ADJ.DMIN.GN.ZS
## 7987 Greenland GL GRL 1974 30.45496
có 255 quốc gia trong bảng dữ liệu và lượng hao tổn khoáng sản nằm trong đoạn từ 0 đến 30.45496, trong đó quốc gia có hao tổn khoáng sản nhiều nhất là Greenland (1974) với hao tổn khoáng sản chiếm 30.45496%
filter(g,country=='Vietnam')|>ggplot(aes(year,NY.ADJ.DMIN.GN.ZS))+geom_line(color='red')
đồ thị trên biểu hiện lượng hao tổn khoáng sản trong % GNI của Việt Nam, có thể thấy thời điểm có giá trị lớn nhất là năm 2008, 2005-2008 giá trị này tăng nhanh đột ngột và giảm mạnh từ năm 2012- 2015 , lượng hao tổn này thấp nhất trong khoảng thời giam 1991- 2004, rất nhỏ gần như bằng 0, đến năm 2020 lượng hao tổn này gần như bằng 0%.
ch<- WDIsearch('children')
q<- WDI(indicator='SH.IMM.MEAS')
q<- na.omit(q)
SH.IMM.MEAS : Tiêm chủng bệnh sởi trẻ em đo lường tỷ lệ phần trăm trẻ em từ 12-23 tháng tuổi được tiêm vắc xin sởi trước 12 tháng hoặc bất kỳ thời điểm nào trước cuộc điều tra. Một đứa trẻ được coi là đã được tiêm phòng sởi đầy đủ sau khi tiêm một liều vắc-xin.
summary(q$SH.IMM.MEAS)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 0.05288 65.75598 85.00000 76.83901 94.00000 99.00000
subset(q, SH.IMM.MEAS == min(SH.IMM.MEAS))
## country iso2c iso3c year SH.IMM.MEAS
## 547 East Asia & Pacific (IDA & IBRD countries) T4 TEA 1980 0.0528842
r<-subset(q, SH.IMM.MEAS == max(SH.IMM.MEAS))
length(unique(r$country))
## [1] 81
tỉ lệ trẻ em được tiêm vacxin sởi ở các nước nằm trong khoảng từ 5.29% đến 99%, quốc gia có tỉ lệ tiêm chủng thấp nhất là East Asia & Pacific (1980) với và có 81 quốc gia có tỉ lệ tiêm chủng 99%
filter(q,country=='Vietnam')|>ggplot(aes(year,SH.IMM.MEAS))+geom_line(color='black')
tỉ lệ trẻ tiêm vacxin sởi ở trẻ em từ 1980 đến 1990 ở Việt Nam tăng
nhanh từ 0 lên đến hơn 85% ở năm 1990, tỉ lệ này tiếp tục tăng và giữ ở
mức ổn định ở mức trên 90% từ sau năm 1990 đến 2006, đến 2007 tỉ lệ này
giảm xuống chỉ ở mức khoảng dưới 85% và tiếp tục tăng lên lại trên 90% ở
các năm sau đó.
g<- WDI(indicator = 'SH.STA.MALN.ZS')|> na.omit()
SH.STA.MALN.ZS: Tỷ lệ trẻ em nhẹ cân là tỷ lệ phần trăm trẻ em dưới 5 tuổi có cân nặng theo tuổi lớn hơn hai độ lệch chuẩn dưới mức trung bình của dân số tham chiếu quốc tế từ 0-59 tháng tuổi. Dữ liệu dựa trên Tiêu chuẩn Tăng trưởng Trẻ em năm 2006 của WHO.
summary(g$SH.STA.MALN.ZS)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 0.000 4.351 12.800 14.734 21.585 66.800
subset(g,SH.STA.MALN.ZS==max(SH.STA.MALN.ZS))
## country iso2c iso3c year SH.STA.MALN.ZS
## 4069 Bangladesh BD BGD 1986 66.8
subset(g,SH.STA.MALN.ZS==min(SH.STA.MALN.ZS))
## country iso2c iso3c year SH.STA.MALN.ZS
## 3745 Australia AU AUS 1995 0
## 9956 Latvia LV LVA 2021 0
tỉ lệ trẻ em nhẹ cân khảo sát được giao động từ 0- 66.8% trong đó Bangladesh (1986) là quốc gia trẻ em có tỉ lệ này cao nhất, Australia (1995) và Latvia (2021) là hai quốc gia có tỉ lệ này thấp nhất ở mức 0%
filter(g, country=='Bangladesh')|> ggplot(aes(year,SH.STA.MALN.ZS))+geom_line()
ở Bangladesh quốc gia tuwfngf có tỷ lệ trẻ em nhẹ cân lên đến hơn 65%
đến 2020 tỉ lệ này chỉ còn hơn 20%. trong quãng thời gian khảo sát ở
quốc gia này ở quãng thời gian 2000-2010, tỉ lệ này tăng giảm không ổn
định và hầu như giữ ở mức (+-)40% chứ không giảm mạnh như các khoảng
thời giam trước 2000 và sau 2010.
filter(g,country=='Vietnam')|>ggplot(aes(year,SH.STA.MALN.ZS))+geom_line()
tỉ lệ nhẹ cân ở trẻ em Việt Nam nhìn chung giảm từ 1990-2020, nhưng tỉ
lệ này vẫn có xu hướng tăng giảm không ổn định điển hình năm 2011 tỉ lệ
này từ gần 5% tăng lên hơn 10% nhưng đều giảm ngay ở các năm tiếp theo,
đến 2020 tỉ lệ này chỉ còn khoảng 3%.
co<- WDIsearch('CO2')
s<- WDI(indicator = 'EN.ATM.CO2E.PC')|>na.omit()
EN.ATM.CO2E.PC: Lượng khí thải CO2 (tấn trên đầu người),khí thải carbon dioxide là những khí phát sinh từ việc đốt nhiên liệu hóa thạch và sản xuất xi măng. Chúng bao gồm carbon dioxide được tạo ra trong quá trình tiêu thụ nhiên liệu rắn, lỏng, khí và khí đốt
summary(s$EN.ATM.CO2E.PC)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 0.0000 0.6773 2.3963 4.1494 6.0766 47.6570
subset(s,EN.ATM.CO2E.PC==max(EN.ATM.CO2E.PC))
## country iso2c iso3c year EN.ATM.CO2E.PC
## 13123 Qatar QA QAT 2004 47.65696
filter(s,country=='Vietnam')|>subset(EN.ATM.CO2E.PC==max(EN.ATM.CO2E.PC))
## country iso2c iso3c year EN.ATM.CO2E.PC
## 1 Vietnam VN VNM 2020 3.67644
lượng khí thải CO2 của các quốc gia qua các năm giao động từ 0-47.66 tấn, trong đó Qatar(2004) là quốc gia có lượng khí thải CO2 nhiều nhất, ở Việt Nam lượng khí thải co2 2020 là lớn nhất với 3.68 tấn.
filter(s, country=='Qatar')|>ggplot(aes(year,EN.ATM.CO2E.PC))+geom_line()
lượng khí thải CO2 ở Qatar từ 1990-2000 tăng mạnh từ dưới 30 tấn lên đến
gần 47 tấn và luôn duy trì ở mức cao cho đến năm 2005, sau đó giảm mạnh
xuống dưới 35 tấn cho đến năm 2009 và có xu hướng tăng giảm không ổn
định ở các năm tiếp theo, đến năm 2020 lượng khí này còn ở mức dưới 32
tấn. nhìn chung lượng khí CO2 ở Qatar tăng giảm không ổn định.
filter(s, country=='Vietnam')|>ggplot(aes(year,EN.ATM.CO2E.PC))+geom_line()
không giống với Qatar lượng khí CO2 ở Việt nam có xu hướng tăng liên tục
từ mức gần 0 lên đến trên 3.5 tấn khí và không có dấu hiệu giảm.
x<- WDI(indicator = 'EN.ATM.GHGT.KT.CE')|>na.omit()
EN.ATM.GHGT.KT.CE: Tổng phát thải khí nhà kính tính bằng 1000 tấn (kt) CO2 tương đương bao gồm tổng CO2 không bao gồm đốt sinh khối chu kỳ ngắn (như đốt chất thải nông nghiệp và đốt thảo nguyên) nhưng bao gồm đốt sinh khối khác (như cháy rừng, phân hủy sau đốt, cháy than bùn và phân hủy vùng đất than bùn cạn nước), tất cả các nguồn CH4, nguồn N2O và khí F (HFC, PFC và SF6) do con người tạo ra.
m<-filter(x,country=='World')
summary(m$EN.ATM.GHGT.KT.CE)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 30629971 33026696 39003678 38928766 45576299 48089617
subset(x,EN.ATM.GHGT.KT.CE==max(EN.ATM.GHGT.KT.CE))
## country iso2c iso3c year EN.ATM.GHGT.KT.CE
## 3028 World 1W WLD 2019 48089617
subset(x,EN.ATM.GHGT.KT.CE==min(EN.ATM.GHGT.KT.CE))
## country iso2c iso3c year EN.ATM.GHGT.KT.CE
## 11184 Micronesia, Fed. Sts. FM FSM 1990 7.616981
tổng lượng khí nhà kính của thế giới trong các năm khảo sát giao động từ khoảng 31 triệu kt đến gần 48 triệu kt. trng đó Micronesia (1990) là quốc gia có lượng khí nhà kính ít nhất với 7.61 kt.
filter(x, country=='Vietnam')|>ggplot(aes(year,EN.ATM.GHGT.KT.CE))+geom_line()
tổng lượng khí nhà kính ở Việt Nam từ 1990 đến 2020 tăng và không có dấu hiệu giảm, trong đó giai đoạn tăng mạnh nhất là từ 2010-2020. tại thời điểm khảo sát gần nhất 2020 tổng lượng khí nhà kính tại Việt Nam là hơn 3.676kt
data_list <- list()
years <- c("2023", "2022", "2021","2020")
for (year in years) {
url <- paste0("https://www.formula1.com/en/results.html/", year, "/drivers.html")
f1 <- read_html(url)
NATIONALITY <- f1 %>%
html_nodes('.dark.semi-bold.uppercase') %>%
html_text()
DRIVER <- f1 %>%
html_nodes('.hide-for-mobile') %>%
html_text()
PTS <- f1 %>%
html_nodes('td.dark.bold') %>%
html_text()
CAR <- f1 %>%
html_nodes('.grey.semi-bold.uppercase.ArchiveLink') %>%
html_text()
data_year <- data.frame(DRIVER = DRIVER, NATIONALITY=NATIONALITY,CAR=CAR,PTS=PTS)
data_year <- data_year %>%
mutate(ORDER = row_number())
data_list[[as.character(year)]] <- data_year
}
st <- bind_rows(data_list, .id = "YEAR")
st$PTS <- as.numeric(st$PTS)
datatable(st)
bảng st là bảng xếp hạng giải đua f1 năm 2020-2023
summary_table <- st %>%
group_by(YEAR) %>%
summarise(TOTAL_DRIVERS = n(),
AVG_POINTS = mean(PTS),
MAX_POINTS = max(PTS),
MIN_POINTS = min(PTS))
datatable(summary_table)
bảng trên cho thấy được trong 4 năm từ 2020-2023 năm có điểm cao nhất là 2022 với 454 điểm và 2023 là năm có điểm hạng 1 thấp nhất với 255 điểm, giảm gần 200 điểm. ngoài ra 2023 cũng là năm có số thí sinh tham gia ít nhất cũng như điểm trung bình thấp nhất, giảm gần 1/2 so với 2022.
st|>group_by(YEAR)|>filter(PTS==max(PTS))
## # A tibble: 4 × 6
## # Groups: YEAR [4]
## YEAR DRIVER NATIONALITY CAR PTS ORDER
## <chr> <chr> <chr> <chr> <dbl> <int>
## 1 2023 Verstappen NED Red Bull Racing Honda RBPT 255 1
## 2 2022 Verstappen NED Red Bull Racing RBPT 454 1
## 3 2021 Verstappen NED Red Bull Racing Honda 396. 1
## 4 2020 Hamilton GBR Mercedes 347 1
st %>% group_by(YEAR) %>%
top_n(3, PTS) %>%
ungroup()
## # A tibble: 12 × 6
## YEAR DRIVER NATIONALITY CAR PTS ORDER
## <chr> <chr> <chr> <chr> <dbl> <int>
## 1 2023 Verstappen NED Red Bull Racing Honda RBPT 255 1
## 2 2023 Perez MEX Red Bull Racing Honda RBPT 156 2
## 3 2023 Alonso ESP Aston Martin Aramco Mercedes 137 3
## 4 2022 Verstappen NED Red Bull Racing RBPT 454 1
## 5 2022 Leclerc MON Ferrari 308 2
## 6 2022 Perez MEX Red Bull Racing RBPT 305 3
## 7 2021 Verstappen NED Red Bull Racing Honda 396. 1
## 8 2021 Hamilton GBR Mercedes 388. 2
## 9 2021 Bottas FIN Mercedes 226 3
## 10 2020 Hamilton GBR Mercedes 347 1
## 11 2020 Bottas FIN Mercedes 223 2
## 12 2020 Verstappen NED Red Bull Racing Honda 214 3
Verstappen đứng đầu liên tiếp trong 3 năm từ 2021-2023, ở top3 của từng năm đều có sự góp mặt của Verstappen, ở năm 2020 anh đứng ở vị trí thứ 3, ở năm 2020 và 2021 top 3 giống nhau nhưng chỉ thay đổi vị trí, nhưng đến 2022 và 2023 chỉ còn Verstappen góp mặt trong danh sách top3 này.
st %>%
group_by(NATIONALITY) %>%
summarise(AVG_POINTS = mean(PTS)) %>%
ggplot(aes(x = NATIONALITY, y = AVG_POINTS)) +
geom_bar(stat = "identity", fill = "skyblue") +
labs(title = "Tương quan giữa Quốc tịch và Điểm số",
x = "Quốc tịch",
y = "Điểm số trung bình") +
theme(axis.text.x = element_text(angle = 45, hjust = 1))
điểm số có sự chệnh lệch nhiều giữa các quốc gia, 3 quốc gia có điểm trung bình cao nhất lần lượt là Netherland, Mexico, Mongolia
st %>%
group_by(CAR) %>%
summarise(AVG_POINTS = mean(PTS)) %>%
ggplot(aes(x = CAR, y = AVG_POINTS)) +
geom_bar(stat = "identity", fill = "lightcoral") +
labs(title = "Phân tích dòng xe chạy và thành tích",
x = "Dòng xe chạy",
y = "Điểm số trung bình") +
theme(axis.text.x = element_text(angle = 45, hjust = 1))
có thể thấy các dòng xe của Red Bull Rading đều nằm trong top điểm trung
bình, trong đó dòng xe của Red Bull Racing RBPT có điểm xếp hạng cao nổi
bật so với 2 dòng còn lại, đứng ở vị trí thứ 2 về điểm số trung bình là
Mercedes với gần 250 điểm.
top3 <- st %>%
group_by(YEAR) %>%
top_n(3, PTS) %>%
ungroup()
print(top3)
## # A tibble: 12 × 6
## YEAR DRIVER NATIONALITY CAR PTS ORDER
## <chr> <chr> <chr> <chr> <dbl> <int>
## 1 2023 Verstappen NED Red Bull Racing Honda RBPT 255 1
## 2 2023 Perez MEX Red Bull Racing Honda RBPT 156 2
## 3 2023 Alonso ESP Aston Martin Aramco Mercedes 137 3
## 4 2022 Verstappen NED Red Bull Racing RBPT 454 1
## 5 2022 Leclerc MON Ferrari 308 2
## 6 2022 Perez MEX Red Bull Racing RBPT 305 3
## 7 2021 Verstappen NED Red Bull Racing Honda 396. 1
## 8 2021 Hamilton GBR Mercedes 388. 2
## 9 2021 Bottas FIN Mercedes 226 3
## 10 2020 Hamilton GBR Mercedes 347 1
## 11 2020 Bottas FIN Mercedes 223 2
## 12 2020 Verstappen NED Red Bull Racing Honda 214 3
table(top3$NATIONALITY)
##
## ESP FIN GBR MEX MON NED
## 1 2 2 2 1 4
bảng dữ liệu top3 là tổng hợp những người đứng top 3 của từng năm, ta có thể thấy cả 3 dòng xe của Red Bull Racing đều có mặt ở cả 3 năm, dòng xe Mercedes xuất hiện nhiều nhất ở các năm 2020 và 2021. ngoài ra trong vòng 4 năm thì Netherland đều góp mặt cả 4 lần với 3 dòng xe khác nhau của Red Bull Racing. ngoài ra Mexico góp mặt 2 lần trong top3 cũng đều với 2 dòng xe của hãng này. vậy ta có thể thấy loại xe có ảnh hưởng đến thành tích cũng như điểm số của tay đua.
phantich <- function(data,country_col,ico3c_col,nam_col,emissions_col) {
tong_so_nuoc <- length(unique(data[[country_col]]))
mean_emissions <- mean(data[[emissions_col]], na.rm = TRUE)
max_emissions_country <- subset(data, !data[[country_col]] == "World") %>%
.[which.max(.[[emissions_col]]), country_col]
max_emissions <- max(data[[emissions_col]], na.rm = TRUE)
min_emissions_country <- data[which.min(data[[emissions_col]]), country_col]
min_emissions <- min(data[[emissions_col]], na.rm = TRUE)
analysis_result <- data.frame(
Tong_So_Nuoc = tong_so_nuoc,
luong_khi_tb = mean_emissions,
Max_kt_Country = max_emissions_country,
Max_kt = max_emissions,
Min_kt_Country = min_emissions_country,
Min_kt = min_emissions
)
return( analysis_result)
}
phantich(x,"country",'iso3c','year','EN.ATM.GHGT.KT.CE')
## Tong_So_Nuoc luong_khi_tb Max_kt_Country Max_kt Min_kt_Country
## 1 239 1479215 IDA & IBRD total 48089617 Micronesia, Fed. Sts.
## Min_kt
## 1 7.616981
hàm phantich vừa tạo cho lọc ra các dữ liệu bao gồm tổng số quốc gia có trong bảng, tổng lượng sản phần khảo sát, quốc gia và lượng khí nhiều nhất, quốc gia và lượng khí ít nhất. và ví dụ được áp dụng với bảng dữ liệu x là dữ liệu về khí thải nhà kính đã phân tích ở mục các indicator phía trên
ve_bieu_do_luong_khi_thai <- function(data, country_col, nam_col, khi_thai_col) {
khi_thai_usa <- data %>%
filter({{ country_col }} == "United States")
bieu_do_duong_usa <- ggplot(khi_thai_usa, aes(x = {{ nam_col }}, y = {{ khi_thai_col }})) + geom_line(color = "blue") +
labs(title = "Lượng khí thải theo các năm cho quốc gia USA",
x = "Năm",
y = "Lượng khí thải")
khi_thai_vietnam <- data %>%
filter({{ country_col }} == "Vietnam")
bieu_do_duong_vietnam <- ggplot(khi_thai_vietnam, aes(x = {{ nam_col }}, y = {{ khi_thai_col }})) + geom_line(color = "green") +
labs(title = "Lượng khí thải theo các năm cho quốc gia Vietnam",
x = "Năm",
y = "Lượng khí thải")
print(bieu_do_duong_usa)
print(bieu_do_duong_vietnam)
return(khi_thai_usa)
return(khi_thai_vietnam)
}
ve_bieu_do_luong_khi_thai(x,country,year,EN.ATM.GHGT.KT.CE)
## country iso2c iso3c year EN.ATM.GHGT.KT.CE
## 1 United States US USA 2020 5505181
## 2 United States US USA 2019 6039739
## 3 United States US USA 2018 6154646
## 4 United States US USA 2017 5947835
## 5 United States US USA 2016 6003241
## 6 United States US USA 2015 6112057
## 7 United States US USA 2014 6224269
## 8 United States US USA 2013 6177417
## 9 United States US USA 2012 6036577
## 10 United States US USA 2011 6254958
## 11 United States US USA 2010 6454245
## 12 United States US USA 2009 6184149
## 13 United States US USA 2008 6601050
## 14 United States US USA 2007 6787855
## 15 United States US USA 2006 6683781
## 16 United States US USA 2005 6772891
## 17 United States US USA 2004 6752991
## 18 United States US USA 2003 6670156
## 19 United States US USA 2002 6605763
## 20 United States US USA 2001 6759406
## 21 United States US USA 2000 6810656
## 22 United States US USA 1999 6647799
## 23 United States US USA 1998 6646954
## 24 United States US USA 1997 6600798
## 25 United States US USA 1996 6338952
## 26 United States US USA 1995 6168767
## 27 United States US USA 1994 6100513
## 28 United States US USA 1993 6006009
## 29 United States US USA 1992 5894661
## 30 United States US USA 1991 5810377
## 31 United States US USA 1990 5855541
hàm ve_bieu_do_luong_khi_thai sẽ cho kết quả bảng dữ liệu khí thải Việt Nam và của Mỹ và biểu đồ lượng khí tương ứng các năm của hai quốc gia này. ví dụ phía trên biểu hiện về khí thải nhà kính của Việt Nam và Mỹ từ bảng x thu thập được ở World Bank trước đó.
cả hai hàm ve_bieu_do_luong_khi_thai và hàm phantich đều có thể áp dụng với các bảng dữ liệu về khí thải khác.
tạo biến sex với 0 là nam và 1 là nữ
data(DoctorVisits)
d<- DoctorVisits
d<-d|>mutate(hi=case_when(private=='yes'|freepoor=='yes'|freerepat=='yes'~'yes',private=='no'|freepoor=='no'|freerepat=='no'~'no'))
d<- d|> mutate(sex= case_when(gender=='male'~0,gender=='female'~1))
tạo biến levels để thể hiện mức độ của độ tuổi
d$levels<- cut(d$age,breaks = c(0.189,0.3,0.5,0.72),labels = c('trẻ','trung','cao'))
tạo biến yl là biến thể hiện những người có bệnh mãn tính
d<-d|>mutate(yl=case_when(nchronic=='yes'~'nchronic',lchronic=="yes"~'lchronic'))
tạo biến ime là biến thể hiện mức độ lương của mỗi người
d$inc<- cut(d$income,breaks = c(-0.001,0.55,1,1.5),labels = c('thấp','trung','cao'))
tạo biến sk thể hiện tình trạng sức khỏe
d$sk<- cut(d$health,breaks = c(-0.001,5,8,12),labels = c('xấu','trung','tốt'))
ma1<- d|> filter(gender=='male'&income>=1)
num<- nrow(ma1)
print(num)
## [1] 532
có 532 người am và có thu nhập từ 10 ngàn đô
ich7<- d|>filter(illness>=3&lchronic=='yes')
print(nrow(ich7))
## [1] 245
có 245 người có bệnh mãn tính hạn chế hoạt động và có mắc từ 3 bệnh trở lên trong vòng 2 tuần
hea50<-d|>filter(health<=6| age>=0.5)
print(nrow(hea50))
## [1] 5075
có 5075 người có điểm sức khỏe từ 6 điểm trở xuống hoặc có độ tuổi lớn hơn 50 tuổi
pri<- d|> filter(income >1 & freepoor=='yes')
print(nrow(pri))
## [1] 2
có 2 ngươid vừa có lương trên 10 ngàn đô và bảo hiểm sức khỏe cho người thu nhập thấp
quantile(d$income,.80)
## 80%
## 0.9
có 80% người có thu nhập bé hơn hoặc bằng 9 ngàn đô
max(d$income)
## [1] 1.5
sd(d$income)
## [1] 0.3689067
thu nhập lớn nhất khảo sát được là 15 ngàn đô và độ lệch chuẩn của biến thu nhập là khoảng 0.368, khá nhỏ nên biến động của thu nhập khá nhỏ
d|> group_by(gender)|> summarise(trungbinh = mean(income), dolech= sd(income))
## # A tibble: 2 × 3
## gender trungbinh dolech
## <fct> <dbl> <dbl>
## 1 male 0.689 0.390
## 2 female 0.485 0.319
thu nhập trung bình ở nam cao hơn nữ với 0.689 chục ngàn đô và biến động ở nam cao hơn nữ một xíu nhưng chênh lệch không quá lớn
d |> count(health, hi) |>
mutate(pCH = prop.table(n)) |>
ggplot(aes(x = health, y = n, fill = hi)) +
geom_col(position = 'dodge') +
geom_text(aes(label = percent(pCH, accuracy = .1)), position = position_dodge(1), vjust = -.5, size = 2) +
ylab('Số Người') +
xlab('sk')
ở cả hai nhóm có và không có bảo hiểm thì số lượng người chủ yếu tập trung vào nhóm có điểm sức khỏe bằng 0 và đều có giảm dần số lượng người ở các điểm sức khỏe tiếp theo. tỉ lệ chênh lệch giữa 2 nhóm người này ở từng mốc điểm sức khỏe cũng ổn định và gần như không có biến động. vậy có thể thấy tình trạng sức khỏe không có ảnh hưởng đến việc có hay không sở hửu bảo hiểm y tế
table(d$visits,d$gender)
##
## male female
## 0 2099 2042
## 1 288 494
## 2 60 114
## 3 17 13
## 4 11 13
## 5 4 5
## 6 3 9
## 7 2 10
## 8 3 2
## 9 1 0
ta thấy số lượng người không đi khám trong hai tuần lần lượt là 2099 (nam) và 2042 (nữ) , chiếm số lượng lớn nhất trong cả hai giới tính . xếp thứ hai là số lần khám bằng 1 và số lượng người ở các số lần khám tiếp theo có xu hướng giảm dần.
table(d$gender)
##
## male female
## 2488 2702
d|> group_by(gender)|>summarise(n=mean(visits))
## # A tibble: 2 × 2
## gender n
## <fct> <dbl>
## 1 male 0.236
## 2 female 0.362
trung bình số lần khám của nam là 0.236 lần trong 2 tuần và ở nữ là 0.362 lần. trong đó số lượng nữ giới là 2702 nhiều hơn nam là 2488. số lượng người không đi khám bệnh trong 2 tuần ở nữ thấp hơn nam. vậy ta có thể thấy nữ giới đi khám bệnh nhiều hơn nam giới.
aggregate(d$visits,list(d$gender),FUN='sd')
## Group.1 x
## 1 male 0.7221676
## 2 female 0.8579201
độ lệch chuẩn số lần ở cả nam và nữ lần lượt là 0.722 và 0.8579, ta thấy được tính biến động của số lần khám trong hai tuần qua nhỏ và không đáng kể
male<- d[d$gender=='male'&d$visits>3,]
str(male)
## 'data.frame': 24 obs. of 18 variables:
## $ visits : num 4 4 7 5 4 4 4 4 4 5 ...
## $ gender : Factor w/ 2 levels "male","female": 1 1 1 1 1 1 1 1 1 1 ...
## $ age : num 0.19 0.19 0.22 0.22 0.22 0.22 0.22 0.22 0.22 0.27 ...
## $ income : num 0.55 0.35 0 0.55 1.5 0.65 0.45 0.9 0.65 1.3 ...
## $ illness : num 4 1 1 1 1 1 1 1 1 1 ...
## $ reduced : num 5 14 14 3 0 14 12 11 10 14 ...
## $ health : num 2 1 1 0 3 1 1 1 2 7 ...
## $ private : Factor w/ 2 levels "no","yes": 1 1 1 1 2 2 1 1 1 1 ...
## $ freepoor : Factor w/ 2 levels "no","yes": 1 1 2 1 1 1 1 1 1 1 ...
## $ freerepat: Factor w/ 2 levels "no","yes": 1 1 1 1 1 1 1 1 1 1 ...
## $ nchronic : Factor w/ 2 levels "no","yes": 1 1 2 1 1 1 1 1 1 2 ...
## $ lchronic : Factor w/ 2 levels "no","yes": 1 1 1 1 2 1 1 1 1 1 ...
## $ hi : chr "no" "no" "yes" "no" ...
## $ sex : num 0 0 0 0 0 0 0 0 0 0 ...
## $ levels : Factor w/ 3 levels "trẻ","trung",..: 1 1 1 1 1 1 1 1 1 1 ...
## $ yl : chr NA NA "nchronic" NA ...
## $ inc : Factor w/ 3 levels "thấp","trung",..: 1 1 1 1 3 2 1 2 2 3 ...
## $ sk : Factor w/ 3 levels "xấu","trung",..: 1 1 1 1 1 1 1 1 1 2 ...
ta có bảng male với chỉ gần các nam có số lần khám lớn hơn 3 lần trong 2 tuần. có thể thấy chỉ có 24 người khảo sát thỏa điều kiện trên
pie(table(d$gender))
số lượng nữ có phần nhỉnh hơn nam nhưng không đáng kể
d<-d|>mutate(hi=case_when(private=='yes'|freepoor=='yes'|freerepat=='yes'~'yes',private=="no"|freepoor=="no"|freerepat=="no"~'no'))
biến hi thể hiện việc có bảo hiểm sức khỏe hay không kể cả mua hay là được cấp bởi chính phủ.
m<- table(d$gender,d$hi)
prop.table(m)
##
## no yes
## male 0.2017341 0.2776493
## female 0.1025048 0.4181118
trong những người có bảo hiểm sức khỏe thì có 1441 người nam có bảo hiểm và 2170 người nữ có bảo hiểm sức khỏe. trong đó tỷ lệ nam có bảo hiểm và nam không có bảo hiểm chênh lệch khá nhỏ , còn ở nữ số người có bảo hiểm gấp 4 lần số người không có bảo hiểm.
pl1<-d |> ggplot(aes(x = gender)) +
geom_bar(aes(y = after_stat(count), fill =private ), stat = 'count') + labs(title = 'Đồ thị người mua bảo hiểm')
pl2<- d |> ggplot(aes(x = gender)) +
geom_bar(aes(y = after_stat(count), fill =freepoor ), stat = 'count') + labs(title = 'Đồ thị người có bảo hiểm thu nhập thấp')
pl3<- d |> ggplot(aes(x = gender)) +
geom_bar(aes(y = after_stat(count), fill =freerepat ), stat = 'count') +labs(title = 'Đồ thị người có bảo hiểm hỗ trợ khác')
grid.arrange(pl1, pl2, pl3, ncol = 1)
ở những người tự mua bảo hiểm số lựng nữ và số nam có bảo hiểm có số lượng khá ngang bằng nhau và đều chiếm khoảng một nửa số lượng người ở mỗi giới.
ở những người sở hữu bảo hiểm thu nhập thấp số lượng người sở hữu vô cùng ít và tỉ lệ sở hữu ở cả hai giới gần như ngang bằng.
ở những ngời có bảo hiểm hỗ trợ khác số lượng ở nữ sở hữu bảo hiểm này khá nhiều và số lượng nhiều hơn gấp đôi số người nam sở hữu.
vậy số lượng chênh lệch sở hữu bảo hiểm y tế hai giới ở cột hi chủ yếu đến từ lượng chệnh lệch của những người sở hữu bảo hiểm hỗ trợ khác.
d|> group_by(gender)|>summarise(n=median(income))
## # A tibble: 2 × 2
## gender n
## <fct> <dbl>
## 1 male 0.65
## 2 female 0.35
trung vị vủa của nữ là 0.35 chục ngàn đô và nam là 0.65 chục ngàn đô, thu nhập ở nam gần gấp đôi nữ, cho thấy được thu nhập của nam và nữ có chênh lệch lớn.
vi3<- d[d$visits>3,]
vi4<- d[d$visits<=3,]
vi4|> group_by(gender)|>summarise(n=mean(income))
## # A tibble: 2 × 2
## gender n
## <fct> <dbl>
## 1 male 0.691
## 2 female 0.486
vi3|> group_by(gender)|>summarise(n=mean(income))
## # A tibble: 2 × 2
## gender n
## <fct> <dbl>
## 1 male 0.548
## 2 female 0.419
ta thấy thu nhập trung bình ở bảng có số lần khám dưới 4 cao hơn so với thu nhập trung bình ở bảng có số lần khám từ 4. cho thấy những người thường đi khám bênh có thu nhập thấp hơn những người ít đi khám bệnh.số liệu này có biến động ở nam rõ rệt hơn so với ở nữ
d$inc <- cut(d$income,breaks = c(-0.99,0.3,0.9,1.5),labels = c('thấp', 'khá','cao'))
d|>ggplot(aes(x=inc,y=after_stat(count)))+geom_bar(aes(fill=gender),position = 'dodge')+xlab('mức lương')+ylab('số người')
ở mức lương thấp số lượng người là nữ hơn gấp đôi số nam, nhưng ở mức khá và cao số lượng nam nhiều hơn số lượng nữ đặc biệt là ở mức cao số nam hơn gấp hai lần số nữ.
d |> ggplot(aes(x = health, y = visits)) +
geom_point(aes(color = gender), na.rm = T) +
geom_smooth(formula = y ~ x, method = 'lm', na.rm = T) +
facet_grid(. ~ gender) +
xlab('sức khỏe') +
ylab('số lần đi khám')
ta thấy số lượng người có số lần khám bệnh từ 0-2 lần chiếm nhiều nhất ở cả hai giới tính, trong đó giới tính nữ có nhiều quan sát có điểm sức khỏe từ 0-5 và có số lần đi khám đi khám từ 7 lần trở lên . hai biến điểm sức khỏe và số lần đi khám ở cả hai giới tính đều có mối tương quan tính cực nhưng ở mức thấp. ## phân tích tương quan ở một số biến
data<- data.frame(d$visits,d$illness,d$reduced,d$health)
datatable(data)
r<- cor(data)
corrplot.mixed(r)
tất cả các cặp biến đều có mối tương quan dương nhưng ở mức yếu trong đó hai cặp biến có mối tương quan mạnh nhất là số lần khám - số ngày nghỉ là 0.42, yếu nhất là số lần khám - sức khỏe là 0.19 và cặp này có thể coi là không có mối tương quan
corrplot(r, type="upper", order="hclust", col=c("black", "white"),
bg="blue")
biểu đồ cho thấy hệ số tương quan của tất cả các cặp đều là số dương và trong đó mối tương quan của hai cặp số số lần khám - ngày nghỉ là lớn nhất, hai cặp số số ngày nghỉ - sức khỏe và ngày nghỉ - số bệnh là nhỏ nhất
library(PerformanceAnalytics)
data1<- data.frame(d$visits,d$illness,d$income,d$age,d$reduced,d$health)
chart.Correlation(data1, histogram=TRUE, pch=19)
các cặp biến gốm: số lần khám - số bệnh , số lần khám - số ngày nghỉ, số bệnh- sức khỏe, số bệnh - tuổi, thu nhập- tuổi, số ngày nghỉ- sức khỏe đây là những cặp biến có quan hệ tuyến tính nhưng đều ở mức yếu trong đó cặp thu nhập - tuổi có tương quan tuyến tính nghịch (-0.27) còn lại đều là tương quan thuận trong đó cặp số lần khám bệnh - số ngày nghỉ có mối tương quan cao nhất
t<-cor(data1)
corrplot(t, method = "color")
những cặp ô có màu xanh biểu thị cho hệ số tương quan dương và màu càng đậm thì tương quan càng lớn, những ô có màu từ hồng tới đỏ biểu thị cho hệ số tương quan âm và màu càng đậm thì mối tương quan càng lớn, màu trắng biểu thị không có tương quang. từ đó ta thấy các biến số lần khám bệnh - số ngày nghỉ, số bệnh - sức khỏe là hai cặp biến có mối tương quan thuận lớn nhất , cặp biến thu nhập - độ tuổi có tương quan nghịch lớn nhất.
d |> ggplot(aes(x = age, y =income)) +
geom_point(color='gray' ) + geom_smooth(formula=y~x, method = 'lm')+
xlab('tuổi') +
ylab('thu nhập')
đường tuyến tính đi xuống thể hiện mối tương quan nghịch nhưng đừng này khá thoải và các điểm không có sự phân bố tập trung mà rải rát nên hai biến này có mối tương quan nghịch ở mức yếu.
d |> ggplot(aes(x = health, y =income)) +
geom_point(color='pink' ) + geom_smooth(formula=y~x, method = 'lm')+
xlab('sức khỏe') +
ylab('thu nhập')
đường tuyến tính đi cuống nhưng gần như ngang bằng , các điểm phân bổ thưa và rải rát nên ta kết luận hai biến này không có tương quan
d |> ggplot(aes(x = visits, y = illness)) +
geom_point(aes(color=gender)) +
geom_smooth(formula = y ~ x, method = 'lm', na.rm = T) +
xlab('số lần khám ')
ylab('số bệnh')
## $y
## [1] "số bệnh"
##
## attr(,"class")
## [1] "labels"
đường tuyến tính hướng lên khá dốc thể hiện hai biến có tương quan thuận nhưng các điểm phân bổ ròi rạc không có sự tập trung nên mối tương quan tuyến tính giữa hai biến này chỉ ở mức trung bình.
d |> ggplot(aes(x = visits, y = reduced) )+
geom_point(aes(color=gender)) +
geom_smooth(formula = y ~ x, method = 'lm', na.rm = T) + facet_grid(.~gender)+
xlab('số lần khám ') +
ylab('số ngày nghỉ')
đường tuyến tính ở cả giai giới tính đều hướng lên tức hai biến này có tương quan thuận ở cả hai biến, sự phân bổ các điểm ở bên nam có sự tập trung hơn ở bên nữa nên ta kết luận hai biến ” số ngày nghỉ - số lần khám” này có mối tương quan thuận mạnh mẽ ở giới nam hơn nữ.
ggplot(data = d, mapping = aes(x = reduced, fill = sk)) +
geom_density(size = 2, alpha = 0.2, position = "stack")+facet_grid(.~sk)
## Warning: Using `size` aesthetic for lines was deprecated in ggplot2 3.4.0.
## ℹ Please use `linewidth` instead.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.
ở mức sức khỏe xấu số người có 0 ngày nghỉ là rất cao nhưng giảm mạnh và
tiến về 0 ở số ngày nghỉ trong khoảng 3. ở mức sức khỏe trung số lượng
người ở mức 0 ngày nghỉ vẫn nhiều nhất nhưng giảm dần tới ngày nghỉ thứ
5 thì về 0 nhưng đường giảm khá thoải. ở mức sức khỏe tốt đồ thị tiến
dần đến 0 ở mức ngày nghỉ 10 , đường giảm khá thoải . cả 3 mức sức khỏe
đường biểu diễn có xu hương đi lên ở các mức ngày nghỉ 11 và 12.
ggplot(data = d, mapping = aes(x = illness, fill = sk)) +
geom_density(size = 2, alpha = 0.2, position = "stack")+facet_grid(.~sk)
ở mức sức khỏe xấu số lượng bệnh mắc trong 2 tuầ giảm dần đều, cao nhất
là mức bệnh 1. ở mức bệnh trung mức bệnh 1 và 2 chiếm nhiều nhất và giảm
ở các số bệnh tiếp theo , biểu đồ có xu hướng lên xuống nhưng không quá
đột ngột. ở mức sức khỏe tốt số bệnh chiếm nhiều nhất là 2, lượng tăng
từ 0 đến hai khá dốc nhưng ở các mức từ 3 trở lên thì số lượng giảm dần
và khá thoải. ở mức số bệnh từ 4 bệnh trở lên số lượng người bị ở sức
khỏe trung và tốt nhiều hơn ở mức xấu.
d |> count(health, hi) |>
mutate(pCH = prop.table(n)) |>
ggplot(aes(x = health, y = n, fill = hi)) +
geom_col(position = 'dodge') +
geom_text(aes(label = percent(pCH, accuracy = .1)), position = position_dodge(1), vjust = -.5, size = 2) +
ylab('Số Người') +
xlab('sk')
ở cả hai nhóm có và không có bảo hiểm thì số lượng người chủ yếu tập trung vào nhóm có điểm sức khỏe bằng 0 và đều có giảm dần số lượng người ở các điểm sức khỏe tiếp theo. tỉ lệ chênh lệch giữa 2 nhóm người này ở từng mốc điểm sức khỏe cũng ổn định và gần như không có biến động. vậy có thể thấy tình trạng sức khỏe không có ảnh hưởng đến việc có hay không sở hửu bảo hiểm y tế
d |> ggplot(aes(x = health, y = after_stat(count))) +
geom_bar(fill = 'blue') +
facet_grid(. ~ gender) +
theme_classic() + labs(x = 'sk', y = 'Số người')
ta thấy biểu đồ giữa male và femae có độ tương đồng lớn , sự biến thiên cũng như tỉ lệ ở cặp giá trị gần như tương đồng. ta thấy được rằng giới tính không ảnh hưởng đến sức khỏe.
d |> ggplot(aes(x = health, y = visits)) +
geom_point(aes(color = gender), na.rm = T) +
geom_smooth(formula = y ~ x, method = 'lm', na.rm = T) +
facet_grid(. ~ gender) +
xlab('sức khỏe') +
ylab('số lần đi khám')
ta thấy số lượng người có số lần khám bệnh từ 0-2 lần chiếm nhiều nhất ở cả hai giới tính, trong đó giới tính nữ có nhiều quan sát có điểm sức khỏe từ 0-5 và có số lần đi khám đi khám từ 7 lần trở lên . hai biến điểm sức khỏe và số lần đi khám ở cả hai giới tính đều có mối tương quan tính cực nhưng ở mức thấp.
d |> ggplot(aes(x = health, y = income)) +
geom_point() +
geom_smooth(formula = y ~ x, method = 'lm', na.rm = T) +
xlab('sức khỏe') +
ylab('thu nhập')
ta thấy hai biến sức khỏe và thu nhập này có mối tương quan tiêu cực nhưng ở mức thấp tức là những người có thu nhập cao thì có điểm sức khỏe thấp và ngược lại.
Tạo biến ‘yl’ là biến thể hiện bệnh nhân có bệnh mãn tính có bị ảnh hưởng hoạt động hay không
d<-d|>mutate(yl=case_when(nchronic=='yes'~'nchronic',lchronic=="yes"~'lchronic'))
datatable(d)
d|>select(yl)|>group_by(yl)|>drop_na(yl)|>count()|>ggplot(aes(x="",y=n,fill=yl))+geom_bar(stat = 'identity',width = 1)+coord_polar('y',start = 0)+theme_void()
qua biểu đồ ta thấy được số lượng người không bị giảm hoạt động do bệnh mãn tính hơn gấp 3 lần số người bị ảnh hưởng.
ta trực quan hai biến yl và income để xem liệu việc giới hạn hoạt động của các bệnh mãn tính có ảnh hưởng đến thu nhập hay không
d|> ggplot(aes(x=age,y=income))+geom_point()+geom_smooth(formula = y~x,method = 'lm',na.rm = T)+facet_grid(.~yl)+xlab('tuổi')+ylab('thu nhập')
ta thấy ở hai biến lchronic và nchronic là biến đều là những người có bệnh mãn tính, đường tuyến tính ở hai biến này đều đi xuống và khá dốc tức là thu nhập và độ tuổi đều có mối tương quan tiêu cực. ở biến NA là biến gồm những người không có mắc bệnh mãn tính thì đường tuyến tính cũng đi xuống nhưng độ dốc này khá thoải so với hai biến trước đó. vậy ta có thể kết luận khi tuổi càng cao thì thu nhập giảm và bệnh mãn tính có ảnh hưởng đến thu nhập trên .
ggplot(data = d, mapping = aes(x = income, fill = yl)) +
geom_density(size = 2, alpha = 0.2, position = "stack")+facet_grid(.~yl)+
labs(title = "đường mật độ phân phối của thu nhập")
ta có thể thấy được mật độ phân phối ở các mốc thu nhập của hai biến lchronic và nchronic khá tương đồng nhau , đều tập trung chủ yếu ở mức thu nhập 0.25 và có độ lệch lớn ở các mức thu nhập tiếp theo ; còn ở biến NA là biến của những người không mắc bệnh mãn tính, mức thu nhập phân bố khá dàn trải và độ dốc thoải , tập trung cao nhất ở mức thu nhập 0.25-0.8 và giảm dân độ tập trung ở các mức tiếp theo. ta có thể kết luận bệnh mãn tính có ảnh hưởng dến sự phân phối về thu nhập
d$levels<- cut(d$age,breaks = c(0.189,0.3,0.5,0.72),labels = c('trẻ','trung','cao'))
d |> ggplot(aes(x = illness, y =reduced)) +
geom_point(aes(color=levels))+ geom_smooth(aes(color=levels),formula = y~x, method = 'lm') + facet_grid(levels~.)+
xlab('bệnh') +
ylab('ngày nghỉ')
ở những người cao tuổi lượng người có từ 4-5 bệnh có số lượng nhiều còn những người trung tuổi chiếm khá ít. ở những người cao tuổi mắc từ 4-5 bệnh số ngày nghỉ do bị bệnh só ngày nghỉ trên 6 ngày chiếm khá nhiều so với nhóm tuổi trẻ và trung tuổi. đường tuyến tính của hai biến số bệnh và ngày nghi ở nhóm trẻ tuổi cũng ít dốc hơn so với hai nhóm trung tuổi và cao tuổi. từ đó ta có thể kết luận số ngày nghỉ do bệnh không chỉ ảnh hưởng bởi số lượng bệnh mà còn ảnh hưởng bởi người đó có còn trẻ hay không.
d |> ggplot(aes(x = age, y =visits)) +
geom_point() + geom_smooth(formula=y~x, method = 'lm')+
xlab('tuổi') +
ylab('lần khám')
ở mức đi khám từ 0-3 lần trên 2 tuần , số lượng phân bố trải rộng ở độ tuổi từ 19-72.ta thấy ở những lần khám mức cao từ 5 lần trở lên chủ yếu là ở những người có độ tuổi khoảng 45 tuổi trở lên, độ tuổi càng cao thì số lần đi khám bệnh cao tăng
d |> ggplot(aes(x = age, y =after_stat(count))) +
geom_bar(aes(fill=freepoor)) +
xlab('tuổi') +
ylab('số người')
ta thấy được số người có bảo hiểm y tế thu nhập thấp chủ yếu nằm ở độ tuổi dưới 30 tuổi, từ 40-60 tuổi số người sở hữu loại bảo hiểm này rất ít và từ độ tuổi 60 trở lên thì gần như bằng 0
d |> ggplot(aes(x = income, y =after_stat(count))) +
geom_bar(aes(fill=levels)) +
xlab('thu nhập') +
ylab('số người')
ở phần thu nhập dưới 4 ngàn đô tập trung chủ yếu là người cao tuổi, trong khoảng thu nhập từ 5 ngàn đô tới 10 ngàn dô chủ yếu là người trẻ tuổi chiếm hơn một nửa số lượng, người trung tuổi và người cao tuổi có số lượng ngang nhau rtong nhóm này. khoảng thu nhập từ 10 ngàn đô trơ lên người trung tuổi chiếm số lượng nhiều nhất theo sau là người trẻ tuổi. vậy ta thấy được trạng thái cơ thể trẻ tuổi, trung tuôi hay cao tuổi có ảnh hưởng rõ đến thu nhập.
names(d)<- c('V','G','A','I','IL','R','H','P','F','FT','N','L')
table(cut(d$H,4))
##
## (-0.012,3] (3,6] (6,9] (9,12]
## 4568 423 135 64
số lượng người có điểm dưới 3 chiếm nhiều nhất lên đến khoảng 88% trên tổng số khảo sát số lượng người có điểm sức khỏe ở mức trên 6 điểm chiếm rất ít chỉ khoảng 199 người chiếm khoảng chưa đến 4% trên tổng số khảo sát.
table(cut(d$I,4),cut(d$H,4))
##
## (-0.012,3] (3,6] (6,9] (9,12]
## (-0.0015,0.375] 1790 200 75 35
## (0.375,0.75] 1580 128 38 17
## (0.75,1.12] 855 73 14 8
## (1.12,1.5] 343 22 8 4
nhóm ngươi có thu nhập dưới 0.375 chục nghìn đô và điểm sức khỏe dưới 3 điểm chiếm số lượng lớn nhất
ở các tổ điểm sức khỏe ở mức cao như từ (6;9] và từ (9;12] phần lớn đều có mức lương ở mức thấp - dưới 0.375 chục nghìn đô ( chiếm lần lượt khoảng 55,56% và 54,7% ).
ở từng nhóm tổ điểm sức khỏe, số người có xu hướng giảm dần khi mức thu nhập tăng lên.
=> ta thấy được mức thu nhập chưa thực sự ảnh hưởng đến điểm sức khỏe của cư dân úc tạp thời điểm lúc bấy giờ.
summary(d$IL)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 0.000 0.000 1.000 1.432 2.000 5.000
IL3R10<- d[d$IL>3&d$R==5,]
số bệnh mắc phải trong 2 tuần qua có giá trị từ [0;9]. và trong vòng 2 tuần có khoảng 50% người mắc nhiều hơn 1 căn bệnh.
summary(d$R)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 0.0000 0.0000 0.0000 0.8619 0.0000 14.0000
số ngày người bệnh bị hạn chế hoạt động có giá trị [0;14] ngày và trung bình số ngày bị hạn chế hoạt động là 0.86 ngày, con số rất nhỏ so với khoảng ngày nghỉ khoảng sát được nhiều nhất là 14 ngày.
IL3R10<- d[d$IL>3&d$R==5,]
gọi biến IL3R10 là biến của những người mắc nhiều hơn 3 bệnh trong 2 tuần và số ngày bị giảm hoạt động là 5 ngày. Ta thấy có 7 quan sát thỏa mãn 2 điều kiện trên.
IL24<-d$IL[d$IL>=2&d$IL<=4]
IL24 cho thấy có 1762 người mắc từ 2 đến 4 bệnh trong vòng 2 tuần.
ggplot(d,aes(d$IL,d$R))+geom_point()
## Warning in eval_tidy(x[[2]], data, env): restarting interrupted promise
## evaluation
số ngày bị hạn chế hoạt động trong 2 tuần của các nhóm có số bệnh từ 1 đến 5 đều phân bố rải đều từ 0 đến 14 ngày nghỉ. ta chưa thấy được sự ảnh hưởng của số bệnh mắc phải với số ngày bị giảm lao động. ### tạo biến old trong d
summary(d$A)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 0.1900 0.2200 0.3200 0.4064 0.6200 0.7200
d$old<- cut(d$A,breaks = c(0.189,0.3,0.45,0.60,0.72),labels = c("trẻ","trung", "già", "hưu"))
Biến old với được chia làm 4 cấp độ tương ứng với 4 khoảng tuổi [19,30],(30,45],(45,60],(60,72].
quantile(d$A,.7)
## 70%
## 0.57
có 70% người có độ tuổi dưới 57 tuổi
table(d$old)
##
## trẻ trung già hưu
## 2488 573 676 1453
số người khảo sát ở mức trẻ là nhiều nhất với 2488 người và người trung tuổi là ít nhất với 573 người.
tính toán một số tiêu thức thống kê của các giá trị thuộc biến old
aggregate(d$H,list(d$old),FUN ="sd")
## Group.1 x
## 1 trẻ 2.009747
## 2 trung 2.385439
## 3 già 2.331422
## 4 hưu 2.100760
độ lệch chuẩn của nhóm trung là cao nhất với 2.385 và nhóm trẻ là thấp nhất với 2.0097. Ta thấy được nhóm trẻ có sức khỏe ổn định nhất và nhóm trung có nhiều biến động về sức khỏe nhất.
Thêm biến vào dataset d
d$lgIL<- log(d$IL)
thêm vào d biến lgIL với lgIL là tập các giá trị logarit cơ số 10 của biến IL - số bệnh của một người mắc phải trong 2 tuần
d$VIL<- d$V+d$IL
thêm vào d biến VIL với VIL là tập giá trị của tổng hai biến số lần đến bác sĩ và số bệnh mắc phải trong 2 tuần
đổi tên các biến trong d thành các kí hiệu tương ứng và thực hiện một vài thao tác
d[125,3]
## [1] 0.22
dữ liệu ở dòng 125 cột 3 có giá trị là
###gọi In là tập các giá trị của biến I trong d, gọi In045 là tập thu nhập hàng năm có giá trị lớn hơn 0.45 chục nghìn usd
In<- d$I
In045<- In[In>0.45]
In1045<-In[In>0.45&In<1]
In045[5]
## [1] 0.55
table(cut(In,4))
##
## (-0.0015,0.375] (0.375,0.75] (0.75,1.12] (1.12,1.5]
## 2100 1763 950 377
Trong bảng tần số trên ta thấy được số lượng người giảm dẫn qua từng tổ, phần lớn nằm trong khoảng thu nhập dưới 0.375 nghìn đ chiếm 2100 người trên tổng số.
Thu nhập nằm trong (1.12;1.5] chiếm ít nhất chỉ 377 người và chỉ xấp xỉ 0.2 lần số người có thu nhập dươi s0.375 và chỉ bằng khoảng 0.4 lần số người có thu nhập từ (0.75;1.12].
Ba biến gồm private, freepoor,freerepat là các biến liên quan đến việc sở hiểm bảo hiểm của những người tham gia khảo sát. Tạo biến mới ‘hi’ là biến cho biết người khảo sát có bảo hiểm y tế hay không.
library(AER)
library(scales)
library(ggplot2)
library(tidyverse)
library(DT)
library(gridExtra)
data("DoctorVisits")
d<- DoctorVisits
d<-d|>mutate(hi=case_when(private=='yes'|freepoor=='yes'|freerepat=='yes'~'yes',private=="no"|freepoor=="no"|freerepat=="no"~'no'))
d |> count(health, hi) |>
mutate(pCH = prop.table(n)) |>
ggplot(aes(x = health, y = n, fill = hi)) +
geom_col(position = 'dodge') +
geom_text(aes(label = percent(pCH, accuracy = .1)), position = position_dodge(1), vjust = -.5, size = 2) +
ylab('Số Người') +
xlab('sk')
ở cả hai nhóm có và không có bảo hiểm thì số lượng người chủ yếu tập trung vào nhóm có điểm sức khỏe bằng 0 và đều có giảm dần số lượng người ở các điểm sức khỏe tiếp theo. tỉ lệ chênh lệch giữa 2 nhóm người này ở từng mốc điểm sức khỏe cũng ổn định và gần như không có biến động. vậy có thể thấy tình trạng sức khỏe không có ảnh hưởng đến việc có hay không sở hửu bảo hiểm y tế
d |> ggplot(aes(x = health, y = after_stat(count))) +
geom_bar(fill = 'blue') +
facet_grid(. ~ gender) +
theme_classic() + labs(x = 'sk', y = 'Số người')
ta thấy biểu đồ giữa male và femae có độ tương đồng lớn , sự biến thiên cũng như tỉ lệ ở cặp giá trị gần như tương đồng. ta thấy được rằng giới tính không ảnh hưởng đến sức khỏe.
d |> ggplot(aes(x = health, y = visits)) +
geom_point(aes(color = gender), na.rm = T) +
geom_smooth(formula = y ~ x, method = 'lm', na.rm = T) +
facet_grid(. ~ gender) +
xlab('sức khỏe') +
ylab('số lần đi khám')
ta thấy số lượng người có số lần khám bệnh từ 0-2 lần chiếm nhiều nhất ở cả hai giới tính, trong đó giới tính nữ có nhiều quan sát có điểm sức khỏe từ 0-5 và có số lần đi khám đi khám từ 7 lần trở lên . hai biến điểm sức khỏe và số lần đi khám ở cả hai giới tính đều có mối tương quan tính cực nhưng ở mức thấp.
d |> ggplot(aes(x = health, y = income)) +
geom_point() +
geom_smooth(formula = y ~ x, method = 'lm', na.rm = T) +
xlab('sức khỏe') +
ylab('thu nhập')
ta thấy hai biến sức khỏe và thu nhập này có mối tương quan tiêu cực nhưng ở mức thấp tức là những người có thu nhập cao thì có điểm sức khỏe thấp và ngược lại.
Tạo biến ‘yl’ là biến thể hiện bệnh nhân có bệnh mãn tính có bị ảnh hưởng hoạt động hay không
d<-d|>mutate(yl=case_when(nchronic=='yes'~'nchronic',lchronic=="yes"~'lchronic'))
datatable(d)
d|>select(yl)|>group_by(yl)|>drop_na(yl)|>count()|>ggplot(aes(x="",y=n,fill=yl))+geom_bar(stat = 'identity',width = 1)+coord_polar('y',start = 0)+theme_void()
qua biểu đồ ta thấy được số lượng người không bị giảm hoạt động do bệnh mãn tính hơn gấp 3 lần số người bị ảnh hưởng.
ta trực quan hai biến yl và income để xem liệu việc giới hạn hoạt động của các bệnh mãn tính có ảnh hưởng đến thu nhập hay không
d|> ggplot(aes(x=age,y=income))+geom_point()+geom_smooth(formula = y~x,method = 'lm',na.rm = T)+facet_grid(.~yl)+xlab('tuổi')+ylab('thu nhập')
ta thấy ở hai biến lchronic và nchronic là biến đều là những người có bệnh mãn tính, đường tuyến tính ở hai biến này đều đi xuống và khá dốc tức là thu nhập và độ tuổi đều có mối tương quan tiêu cực. ở biến NA là biến gồm những người không có mắc bệnh mãn tính thì đường tuyến tính cũng đi xuống nhưng độ dốc này khá thoải so với hai biến trước đó. vậy ta có thể kết luận khi tuổi càng cao thì thu nhập giảm và bệnh mãn tính có ảnh hưởng đến thu nhập trên .
ggplot(data = d, mapping = aes(x = income, fill = yl)) +
geom_density(size = 2, alpha = 0.2, position = "stack")+facet_grid(.~yl)+
labs(title = "đường mật độ phân phối của thu nhập")
ta có thể thấy được mật độ phân phối ở các mốc thu nhập của hai biến lchronic và nchronic khá tương đồng nhau , đều tập trung chủ yếu ở mức thu nhập 0.25 và có độ lệch lớn ở các mức thu nhập tiếp theo ; còn ở biến NA là biến của những người không mắc bệnh mãn tính, mức thu nhập phân bố khá dàn trải và độ dốc thoải , tập trung cao nhất ở mức thu nhập 0.25-0.8 và giảm dân độ tập trung ở các mức tiếp theo. ta có thể kết luận bệnh mãn tính có ảnh hưởng dến sự phân phối về thu nhập
d$levels<- cut(d$age,breaks = c(0.189,0.3,0.5,0.72),labels = c('trẻ','trung','cao'))
d |> ggplot(aes(x = illness, y =reduced)) +
geom_point(aes(color=levels))+ geom_smooth(aes(color=levels),formula = y~x, method = 'lm') + facet_grid(levels~.)+
xlab('bệnh') +
ylab('ngày nghỉ')
ở những người cao tuổi lượng người có từ 4-5 bệnh có số lượng nhiều còn những người trung tuổi chiếm khá ít. ở những người cao tuổi mắc từ 4-5 bệnh số ngày nghỉ do bị bệnh só ngày nghỉ trên 6 ngày chiếm khá nhiều so với nhóm tuổi trẻ và trung tuổi. đường tuyến tính của hai biến số bệnh và ngày nghi ở nhóm trẻ tuổi cũng ít dốc hơn so với hai nhóm trung tuổi và cao tuổi. từ đó ta có thể kết luận số ngày nghỉ do bệnh không chỉ ảnh hưởng bởi số lượng bệnh mà còn ảnh hưởng bởi người đó có còn trẻ hay không.
d |> ggplot(aes(x = age, y =visits)) +
geom_point() + geom_smooth(formula=y~x, method = 'lm')+
xlab('tuổi') +
ylab('lần khám')
ở mức đi khám từ 0-3 lần trên 2 tuần , số lượng phân bố trải rộng ở độ tuổi từ 19-72.ta thấy ở những lần khám mức cao từ 5 lần trở lên chủ yếu là ở những người có độ tuổi khoảng 45 tuổi trở lên, độ tuổi càng cao thì số lần đi khám bệnh cao tăng
d |> ggplot(aes(x = age, y =after_stat(count))) +
geom_bar(aes(fill=freepoor)) +
xlab('tuổi') +
ylab('số người')
ta thấy được số người có bảo hiểm y tế thu nhập thấp chủ yếu nằm ở độ tuổi dưới 30 tuổi, từ 40-60 tuổi số người sở hữu loại bảo hiểm này rất ít và từ độ tuổi 60 trở lên thì gần như bằng 0
d |> ggplot(aes(x = income, y =after_stat(count))) +
geom_bar(aes(fill=levels)) +
xlab('thu nhập') +
ylab('số người')
ở phần thu nhập dưới 4 ngàn đô tập trung chủ yếu là người cao tuổi, trong khoảng thu nhập từ 5 ngàn đô tới 10 ngàn dô chủ yếu là người trẻ tuổi chiếm hơn một nửa số lượng, người trung tuổi và người cao tuổi có số lượng ngang nhau rtong nhóm này. khoảng thu nhập từ 10 ngàn đô trơ lên người trung tuổi chiếm số lượng nhiều nhất theo sau là người trẻ tuổi. vậy ta thấy được trạng thái cơ thể trẻ tuổi, trung tuôi hay cao tuổi có ảnh hưởng rõ đến thu nhập.
table(d$visits,d$gender)
##
## male female
## 0 2099 2042
## 1 288 494
## 2 60 114
## 3 17 13
## 4 11 13
## 5 4 5
## 6 3 9
## 7 2 10
## 8 3 2
## 9 1 0
ta thấy số lượng người không đi khám trong hai tuần lần lượt là 2099 (nam) và 2042 (nữ) , chiếm số lượng lớn nhất trong cả hai giới tính . xếp thứ hai là số lần khám bằng 1 và số lượng người ở các số lần khám tiếp theo có xu hướng giảm dần.
table(d$gender)
##
## male female
## 2488 2702
d|> group_by(gender)|>summarise(n=mean(visits))
## # A tibble: 2 × 2
## gender n
## <fct> <dbl>
## 1 male 0.236
## 2 female 0.362
trung bình số lần khám của nam là 0.236 lần trong 2 tuần và ở nữ là 0.362 lần. trong đó số lượng nữ giới là 2702 nhiều hơn nam là 2488. số lượng người không đi khám bệnh trong 2 tuần ở nữ thấp hơn nam. vậy ta có thể thấy nữ giới đi khám bệnh nhiều hơn nam giới.
aggregate(d$visits,list(d$gender),FUN='sd')
## Group.1 x
## 1 male 0.7221676
## 2 female 0.8579201
độ lệch chuẩn ở cả nam và nữ lần lượt là 0.722 và 0.8579, ta thấy được tính biến động của số lần khám trong hai tuần qua nhỏ và không đáng kể
male<- d[d$gender=='male'&d$visits>3,]
str(male)
## 'data.frame': 24 obs. of 15 variables:
## $ visits : num 4 4 7 5 4 4 4 4 4 5 ...
## $ gender : Factor w/ 2 levels "male","female": 1 1 1 1 1 1 1 1 1 1 ...
## $ age : num 0.19 0.19 0.22 0.22 0.22 0.22 0.22 0.22 0.22 0.27 ...
## $ income : num 0.55 0.35 0 0.55 1.5 0.65 0.45 0.9 0.65 1.3 ...
## $ illness : num 4 1 1 1 1 1 1 1 1 1 ...
## $ reduced : num 5 14 14 3 0 14 12 11 10 14 ...
## $ health : num 2 1 1 0 3 1 1 1 2 7 ...
## $ private : Factor w/ 2 levels "no","yes": 1 1 1 1 2 2 1 1 1 1 ...
## $ freepoor : Factor w/ 2 levels "no","yes": 1 1 2 1 1 1 1 1 1 1 ...
## $ freerepat: Factor w/ 2 levels "no","yes": 1 1 1 1 1 1 1 1 1 1 ...
## $ nchronic : Factor w/ 2 levels "no","yes": 1 1 2 1 1 1 1 1 1 2 ...
## $ lchronic : Factor w/ 2 levels "no","yes": 1 1 1 1 2 1 1 1 1 1 ...
## $ hi : chr "no" "no" "yes" "no" ...
## $ yl : chr NA NA "nchronic" NA ...
## $ levels : Factor w/ 3 levels "trẻ","trung",..: 1 1 1 1 1 1 1 1 1 1 ...
ta có bảng male với chỉ gần các nam có số lần khám lớn hơn 3 lần trong 2 tuần. có thể thấy chỉ có 24 người khảo sát thỏa điều kiện trên
d|> group_by(gender)|>summarise(n=median(income))
## # A tibble: 2 × 2
## gender n
## <fct> <dbl>
## 1 male 0.65
## 2 female 0.35
trung vị vủa của nữ là 0.35 chục ngàn đô và nam là 0.65 chục ngàn đô, thu nhập ở nam gần gấp đôi nữ, cho thấy được thu nhập của nam và nữ có chênh lệch lớn.
vi3<- d[d$visits>3,]
vi4<- d[d$visits<=3,]
vi4|> group_by(gender)|>summarise(n=mean(income))
## # A tibble: 2 × 2
## gender n
## <fct> <dbl>
## 1 male 0.691
## 2 female 0.486
vi3|> group_by(gender)|>summarise(n=mean(income))
## # A tibble: 2 × 2
## gender n
## <fct> <dbl>
## 1 male 0.548
## 2 female 0.419
ta thấy thu nhập trung bình ở bảng có số lần khám dưới 4 cao hơn so với thu nhập trung bình ở bảng có số lần khám từ 4. cho thấy những người thường đi khám bênh có thu nhập thấp hơn những người ít đi khám bệnh.số liệu này có biến động ở nam rõ rệt hơn so với ở nữ
d$inc <- cut(d$income,breaks = c(-0.99,0.3,0.9,1.5),labels = c('thấp', 'khá','cao'))
d|>ggplot(aes(x=inc,y=after_stat(count)))+geom_bar(aes(fill=gender),position = 'dodge')+xlab('mức lương')+ylab('số người')
ở mức lương thấp số lượng người là nữ hơn gấp đôi số nam, nhưng ở mức khá và cao số lượng nam nhiều hơn số lượng nữ đặc biệt là ở mức cao số nam hơn gấp hai lần số nữ.
malaria_facility_count_data: dữ liệu bệnh sốt rét ở 65 cơ sở y tế tại 4 quận Spring, Bolo, Dingo và Barnard của tỉnh North
location_name: tên cơ sở y tế
data_date: ngày nhập dữ liệu
submittes_date: ngày kiểm duyệt
province: tỉnh thu thập dữ liệu
district: quận
malaria_rdt_0-4: số ca bệnh ở độ tuổi <4
malaria_rdt_5-14: số ca bệnh ở độ tuổi 5-14.
malaria_rdt_15: số ca bệnh ở độ tuổi >15
malaria_rdt_tot: tổng số ca bệnh một ngày ở từng cơ sơ y tế
newid: số thứ tự của từng cơ sở.
m<- import("C:/Users/Vo Ky Duyen/Downloads/malaria_facility_count_data.rds")
datatable(m)
tạo bảng a có 3 biến gồm tên cơ sở y tế ( location_name), nhóm tuổi (age) gộp từ 3 biến malaria_rdt_0-4,malaria_rdt_5-15,malaria_rdt_15, và ‘sl’ là số người bệnh tương ứng.
a<-m%>% select(`malaria_rdt_0-4`,`malaria_rdt_5-14`,'malaria_rdt_15',location_name)%>%pivot_longer(cols = c(`malaria_rdt_0-4`, `malaria_rdt_5-14`, `malaria_rdt_15`),names_to = 'age',values_to = 'sl' )
head(a)
## # A tibble: 6 × 3
## location_name age sl
## <chr> <chr> <int>
## 1 Facility 1 malaria_rdt_0-4 11
## 2 Facility 1 malaria_rdt_5-14 12
## 3 Facility 1 malaria_rdt_15 23
## 4 Facility 2 malaria_rdt_0-4 11
## 5 Facility 2 malaria_rdt_5-14 10
## 6 Facility 2 malaria_rdt_15 5
b<-m%>% select(`malaria_rdt_0-4`,`malaria_rdt_5-14`,'malaria_rdt_15',data_date,location_name)%>%pivot_longer(cols = c(`malaria_rdt_0-4`, `malaria_rdt_5-14`, `malaria_rdt_15`),names_to = 'age',values_to = 'sl' )
vẽ đồ thị biểu hiện số ca bệnh sốt rét ở từng nhóm tuổi trong từng cơ sở y tế khảo sát được theo thời gian , biểu diễn bằng buổi đồ cột chồng
library(ggplot2)
ggplot(data= b)+geom_col(mapping=aes(x=data_date,y=sl,fill=age),width=1)
## Warning: Removed 2058 rows containing missing values (`position_stack()`).
b<- b%>% mutate(id= parse_number(location_name))
head(b)
## # A tibble: 6 × 5
## data_date location_name age sl id
## <date> <chr> <chr> <int> <dbl>
## 1 2020-08-11 Facility 1 malaria_rdt_0-4 11 1
## 2 2020-08-11 Facility 1 malaria_rdt_5-14 12 1
## 3 2020-08-11 Facility 1 malaria_rdt_15 23 1
## 4 2020-08-11 Facility 2 malaria_rdt_0-4 11 2
## 5 2020-08-11 Facility 2 malaria_rdt_5-14 10 2
## 6 2020-08-11 Facility 2 malaria_rdt_15 5 2
t <- b%>% count(data_date, age)
head(t)
## # A tibble: 6 × 3
## data_date age n
## <date> <chr> <int>
## 1 2020-05-16 malaria_rdt_0-4 1
## 2 2020-05-16 malaria_rdt_15 1
## 3 2020-05-16 malaria_rdt_5-14 1
## 4 2020-05-17 malaria_rdt_0-4 1
## 5 2020-05-17 malaria_rdt_15 1
## 6 2020-05-17 malaria_rdt_5-14 1
naturalgas là tập dữ liệu về khí gas được lấy từ 6 tiểu bang của Hoa Kỳ từ năm 1967 đến năm 1989
state: tên viết tắt của tiểu bang
statecode: mã số của tiểu bang
year: năm thu dữ liệu
cosnumption: lượng gas tiêu thụ
price: giá gas
eprice: giá điện
oprice: giá dầu nhiên liệu
iprice: giá khí dầu mỏ
heating: nhiệt độ
income: thu nhập bình quân đâu người
data("NaturalGas")
n<- NaturalGas
summary(n$price)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 0.680 1.380 2.775 3.422 5.310 8.060
ta thấy biến giá gas price nằm trong đoạn[0.68;8.06] nên ta chia thành 4 khoảng lần lượt là thấp, trung bình, khá và cao
n$levels<- cut(n$price,breaks = c(0.67,2,4,6,8.06),labels = c('thấp','tb','khá','cao'))
mã hóa dữ liệu biến levels ta có cột lev có giá trị lần lượt là 0,1,2,3
n<- n%>% mutate(lev = case_when(levels == 'thấp'~ 0, levels == 'tb' ~1, levels =='khá'~2,levels == ' cao'~3))
tạo bảng với 3 biến gồm tên tiểu bang, năm thu dữ liệu và lev ta được bảng na
na<-n%>% pivot_wider(id_cols = state,names_from = year,values_from = lev)
head(na)
## # A tibble: 6 × 24
## state `1967` `1968` `1969` `1970` `1971` `1972` `1973` `1974` `1975` `1976`
## <fct> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 NY 0 0 0 0 0 0 0 0 1 1
## 2 FL 1 1 1 1 1 1 1 1 1 1
## 3 MI 0 0 0 0 0 0 0 0 0 0
## 4 TX 0 0 0 0 0 0 0 0 0 0
## 5 UT 0 0 0 0 0 0 0 0 0 0
## 6 CA 0 0 0 0 0 0 0 0 0 0
## # ℹ 13 more variables: `1977` <dbl>, `1978` <dbl>, `1979` <dbl>, `1980` <dbl>,
## # `1981` <dbl>, `1982` <dbl>, `1983` <dbl>, `1984` <dbl>, `1985` <dbl>,
## # `1986` <dbl>, `1987` <dbl>, `1988` <dbl>, `1989` <dbl>
world_bank_pop: dữ liệu dân từ năm 2000-2018 số cung cấp bởi World Bank
country: mã tên quốc gia gồm 3 ký tự
indicator: gồm: SP.POP.GROW = lượng tăng dân số; SP.POP.TOTL = tổng dân số; SP.URB.GROW = lượng tăng dân số đô thị; SP.URB.TOTL = tổng dân số đô thị.
2000- 2018 : dữ liệu tương ứng của các năm
data(world_bank_pop)
k<- world_bank_pop
do<- pivot_longer(k,cols = starts_with('20'),names_to = 'year',values_to = 'DS')
datatable(do)
## Warning in instance$preRenderHook(instance): It seems your data is too big for
## client-side DataTables. You may consider server-side processing:
## https://rstudio.github.io/DT/server.html
bảng do là bảng dọc thể hiện tổng số và lượng tăng giảm dân số cả ở khu đô thị và cả nước ở các quốc gia từng năm cụ thể ### vẽ đồ thị của tổng dân số cả nước và tổng dân số thành thị qua các năm và ở từng nước.
do%>% filter(indicator%in% c( 'SP.POP.TOTL','SP.URB.TOTL' ))%>%ggplot(aes(x=year,y=DS ,fill= indicator))+geom_col(position = 'dodge')+labs(title = 'đồ thị tổng dân số qua các năm',x='năm',y='số dân')
## Warning: Removed 72 rows containing missing values (`geom_col()`).
qua đồ thị ta thấy dân số tăng dần và tăng khá đều, tổng dân số ở thành thị cũng tăng tăng dần và không có năm nào giảm
do%>% filter(indicator%in% c( 'SP.POP.TOTL','SP.URB.TOTL' ))%>%ggplot(aes(x=country,y=DS ,fill= indicator))+geom_col(position = 'dodge')+labs(title = 'đồ thị tổng dân số ở các nước',x='nước',y='số dân')
## Warning: Removed 72 rows containing missing values (`geom_col()`).
ta thấy tổng dân số giữa các nước có sự chênh lệch rất lớn, ở các nước đông dân dân số ở thnafh thị chiến khoảng 1/2 tổng dân số cả nước
do%>% filter(indicator%in% c( 'SP.POP.GROW','SP.URB.GROW' ))%>%ggplot(aes(x=year,y=DS ,fill= indicator))+geom_col(position = 'dodge')+labs(title = 'đồ thị gia tăng dân số qua các năm',x='năm',y='số dân')
## Warning: Removed 72 rows containing missing values (`geom_col()`).
sự tăng giảm dân số có biến động khá lớn từ 2000-2018, tăng nhiều nhất vào các năm 2006-2009 và giảm nhiều nhất vào khoảng 2012-2014.lượng tổng tăng giảm số và lượng tăng giảm dân số thành thị không quá khác biệt nhau nên có thể thấy sự biến động của dân số thành thị ảnh hưởng rất nhiều đến tổng biến động dân số cả năm.
do%>% filter(indicator%in% c( 'SP.POP.GROW','SP.URB.GROW' ))%>%ggplot(aes(x=country,y=DS ,fill= indicator))+geom_col(position = 'dodge')+labs(title = 'đồ thị gia tăng dân số các nước',x='nước',y='số dân')
## Warning: Removed 72 rows containing missing values (`geom_col()`).
biến động dân số có sự chênh lệch rất lớn ở nhiều nước , ở các nước có độ tăng dân số lớn thì sự gia tăng dân số ở thành thị gần như ngang bằng , đồng thời ở các nước có dân số giảm thì lượng giảm dân số ở khu thành thị cũng xấp xỉ lượng giảm tổng của cả nước. vậy ta thấy sự gia tăng dân số ở khu thành thị có liên hệ mật thiết đến sự gia tăng dân số cả nước
DoctorVisits:Dữ liệu Khảo sát Sức khỏe Úc 1977–1978.
visits: số lần khám bác sĩ trong 2 tuần qua
gender: giới tính
age:tuổi theo năm chia cho 100
income: thu nhập hàng năm tính bằng chục ngàn đô
illness: số bệnh trong 2 tuần qua
reduced:Số ngày giảm hoạt động trong 2 tuần qua do bệnh tật hoặc chấn thương.
health:Điểm câu hỏi sức khỏe tổng quát bằng phương pháp của Goldberg.
private:Cá nhân có bảo hiểm y tế tư nhân không?
freepoor:Cá nhân có bảo hiểm y tế miễn phí của chính phủ do thu nhập thấp không?
freerepat: Cá nhân có bảo hiểm y tế miễn phí của chính phủ do lớn tuổi, khuyết tật, cựu chiến binh?
nchronic:Có tình trạng mãn tính không hạn chế hoạt động?
ichronic: Có tình trạng mãn tính hạn chế hoạt động?
## V G A I IL R H P F FT N L
## 3 1 male 0.19 0.90 3 0 0 no no no no no
## 4 1 male 0.19 0.15 1 0 0 no no no no no
## 5 1 male 0.19 0.45 2 5 1 no no no yes no
## 10 1 male 0.19 0.15 1 0 0 yes no no no no
## 11 1 male 0.19 0.45 1 0 0 no no no no no
## 12 1 male 0.19 0.25 2 0 2 no no yes no no
xuất 6 giá trị đầu của bảng male
summary(d$A)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 0.1900 0.2200 0.3200 0.4064 0.6200 0.7200
d$old<- cut(d$A,breaks = c(0.189,0.3,0.45,0.60,0.72),labels = c("trẻ","trung", "già", "hưu"))
Biến old với được chia làm 4 cấp độ tương ứng với 4 khoảng tuổi [19,30],(30,45],(45,60],(60,72].
quantile(d$A,.7)
## 70%
## 0.57
có 70% người có độ tuổi dưới 57 tuổi
table(d$old)
##
## trẻ trung già hưu
## 2488 573 676 1453
số người khảo sát ở mức trẻ là nhiều nhất với 2488 người và người trung tuổi là ít nhất với 573 người.
## # A tibble: 4 × 2
## old m
## <fct> <dbl>
## 1 trẻ 0.622
## 2 trung 0.901
## 3 già 0.632
## 4 hưu 0.369
thu nhập bình quân hàng năm của của người nhóm trung là lớn nhất với 0.9014 chục ngàn đô, người thuộc nhóm hưu có thu nhập thấp nhất với chủ 0.3688 chục ngàn đô một năm
aggregate(d$H,list(d$old),FUN ="sd")
## Group.1 x
## 1 trẻ 2.009747
## 2 trung 2.385439
## 3 già 2.331422
## 4 hưu 2.100760
độ lệch chuẩn của nhóm trung là cao nhất với 2.385 và nhóm trẻ là thấp nhất với 2.0097. Ta thấy được nhóm trẻ có sức khỏe ổn định nhất và nhóm trung có nhiều biến động về sức khỏe nhất.
I3<-head(d[d$I>0.7&d$H==3,])$I
I3<- as.data.frame(I3)
I3$c1<- seq(1,1,length=6)
I6<-head(d[d$I>0.7&d$H==6,])$I
I6<- as.data.frame(I6)
I6$c2<-seq(2,2,length=6)
I9<-head(d[d$I>0.7&d$H==9,])$I
I9<- as.data.frame(I9)
I9$c3<-seq(3,3,length=6)
I12<-head(d[d$I>0.7&d$H==12,])$I
I12<- as.data.frame(I12)
I12$c4<-seq(4,4,length=5)
colnames(I12)<- colnames(I3)
colnames(I9)<- colnames(I3)
colnames(I6)<- colnames(I3)
tong<- rbind(I3,I6,I9,I12)
đổi tên các cột I12,I9,I6 thành I3 và nối với nhau theo hàng tạo thành tập data có tên là tong
fct<- factor(tong$c1,levels=c(1,2,3,4),labels = c('thấp','trung','khá','cao'))
tong$cap<-fct
đặt tên cho các bậc 1,2,3,4 trong cột c1 lần lượt thành: thấp, trung, khá ,cao tạo thành cột có tên là cap.
str(tong)
## 'data.frame': 23 obs. of 3 variables:
## $ I3 : num 0.75 0.75 0.75 0.75 1.1 1.5 0.75 0.9 0.9 1.5 ...
## $ c1 : num 1 1 1 1 1 1 2 2 2 2 ...
## $ cap: Factor w/ 4 levels "thấp","trung",..: 1 1 1 1 1 1 2 2 2 2 ...
ta có tập data “tong” gồm 30 người có đều có thu nhập hàng năm trên 0.7 chục nghìn dồ và phân cấp điểm số khỏe tương ứng .
## 'data.frame': 5190 obs. of 12 variables:
## $ visits : num 1 1 1 1 1 1 1 1 1 1 ...
## $ gender : Factor w/ 2 levels "male","female": 2 2 1 1 1 2 2 2 2 1 ...
## $ age : num 0.19 0.19 0.19 0.19 0.19 0.19 0.19 0.19 0.19 0.19 ...
## $ income : num 0.55 0.45 0.9 0.15 0.45 0.35 0.55 0.15 0.65 0.15 ...
## $ illness : num 1 1 3 1 2 5 4 3 2 1 ...
## $ reduced : num 4 2 0 0 5 1 0 0 0 0 ...
## $ health : num 1 1 0 0 1 9 2 6 5 0 ...
## $ private : Factor w/ 2 levels "no","yes": 2 2 1 1 1 1 1 1 2 2 ...
## $ freepoor : Factor w/ 2 levels "no","yes": 1 1 1 1 1 1 1 1 1 1 ...
## $ freerepat: Factor w/ 2 levels "no","yes": 1 1 1 1 1 1 1 1 1 1 ...
## $ nchronic : Factor w/ 2 levels "no","yes": 1 1 1 1 2 2 1 1 1 1 ...
## $ lchronic : Factor w/ 2 levels "no","yes": 1 1 1 1 1 1 1 1 1 1 ...
nhập dữ liệu của biến Doctorvisits và đổi tên thành d
names(d)<- c('V','G','A','I','IL','R','H','P','F','FT','N','L')
đổi tên các biến trong d thành các kí hiệu tương ứng và thực hiện một vài thao tác
d[125,3]
## [1] 0.22
dữ liệu ở dòng 125 cột 3 có giá trị là
###gọi In là tập các giá trị của biến I trong d, gọi In045 là tập thu nhập hàng năm có giá trị lớn hơn 0.45 chục nghìn usd
In<- d$I
In045<- In[In>0.45]
In1045<-In[In>0.45&In<1]
In045[5]
## [1] 0.55
table(cut(In,4))
##
## (-0.0015,0.375] (0.375,0.75] (0.75,1.12] (1.12,1.5]
## 2100 1763 950 377
Trong bảng tần số trên ta thấy được số lượng người giảm dẫn qua từng tổ, phần lớn nằm trong khoảng thu nhập dưới 0.375 nghìn đ chiếm 2100 người trên tổng số.
Thu nhập nằm trong (1.12;1.5] chiếm ít nhất chỉ 377 người và chỉ xấp xỉ 0.2 lần số người có thu nhập dươi s0.375 và chỉ bằng khoảng 0.4 lần số người có thu nhập từ (0.75;1.12].
table(cut(d$H,4))
##
## (-0.012,3] (3,6] (6,9] (9,12]
## 4568 423 135 64
số lượng người có điểm dưới 3 chiếm nhiều nhất lên đến khoảng 88% trên tổng số khảo sát số lượng người có điểm sức khỏe ở mức trên 6 điểm chiếm rất ít chỉ khoảng 199 người chiếm khoảng chưa đến 4% trên tổng số khảo sát.
table(cut(d$I,4),cut(d$H,4))
##
## (-0.012,3] (3,6] (6,9] (9,12]
## (-0.0015,0.375] 1790 200 75 35
## (0.375,0.75] 1580 128 38 17
## (0.75,1.12] 855 73 14 8
## (1.12,1.5] 343 22 8 4
nhóm ngươi có thu nhập dưới 0.375 chục nghìn đô và điểm sức khỏe dưới 3 điểm chiếm số lượng lớn nhất
ở các tổ điểm sức khỏe ở mức cao như từ (6;9] và từ (9;12] phần lớn đều có mức lương ở mức thấp - dưới 0.375 chục nghìn đô ( chiếm lần lượt khoảng 55,56% và 54,7% ).
ở từng nhóm tổ điểm sức khỏe, số người có xu hướng giảm dần khi mức thu nhập tăng lên.
=> ta thấy được mức thu nhập chưa thực sự ảnh hưởng đến điểm sức khỏe của cư dân úc tạp thời điểm lúc bấy giờ.
summary(d$IL)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 0.000 0.000 1.000 1.432 2.000 5.000
IL3R10<- d[d$IL>3&d$R==5,]
số bệnh mắc phải trong 2 tuần qua có giá trị từ [0;9]. và trong vòng 2 tuần có khoảng 50% người mắc nhiều hơn 1 căn bệnh.
summary(d$R)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 0.0000 0.0000 0.0000 0.8619 0.0000 14.0000
số ngày người bệnh bị hạn chế hoạt động có giá trị [0;14] ngày và trung bình số ngày bị hạn chế hoạt động là 0.86 ngày, con số rất nhỏ so với khoảng ngày nghỉ khoảng sát được nhiều nhất là 14 ngày.
IL3R10<- d[d$IL>3&d$R==5,]
gọi biến IL3R10 là biến của những người mắc nhiều hơn 3 bệnh trong 2 tuần và số ngày bị giảm hoạt động là 5 ngày. Ta thấy có 7 quan sát thỏa mãn 2 điều kiện trên.
IL24<-d$IL[d$IL>=2&d$IL<=4]
IL24 cho thấy có 1762 người mắc từ 2 đến 4 bệnh trong vòng 2 tuần.
ggplot(d,aes(d$IL,d$R))+geom_point()
số ngày bị hạn chế hoạt động trong 2 tuần của các nhóm có số bệnh từ 1 đến 5 đều phân bố rải đều từ 0 đến 14 ngày nghỉ. ta chưa thấy được sự ảnh hưởng của số bệnh mắc phải với số ngày bị giảm lao động.
d$lgIL<- log(d$IL)
thêm vào d biến lgIL với lgIL là tập các giá trị logarit cơ số 10 của biến IL - số bệnh của một người mắc phải trong 2 tuần
d$VIL<- d$V+d$IL
thêm vào d biến VIL với VIL là tập giá trị của tổng hai biến số lần đến bác sĩ và số bệnh mắc phải trong 2 tuần