July 17, 2016

T
rong quá trình xử lý, phân tích số liệu vì một lý do nào đó, chúng ta muốn phân tích riêng cho từng đối tượng, địa điểm, độ tuổi hay từng công thức thí nghiệm tùy theo mục đích nghiên cứu. Lệnh subset trong R giúp chúng ta làm chuyện này với một vài thao tác đơn giản, không mất nhiều thời gian như các biện pháp thông thường.

Để minh chứng, tiện cho việc theo dõi và hiểu “câu chuyện” tôi xin được lấy một ví dụ mà tôi đã xử lý, để ôn lại cho nhớ và muốn lưu lại tham khảo. Lệnh subset (data, cond), trong đó data là data.frame mà chúng ta muốn tách rời và cond là điều kiện. Ví dụ:
 > data =kllBTB
data (kllBTBT) gồm các biến sau (biến liên tục, biến không liên tục):
> names(kllBTB)

 [1] "Local"                  "Age"                    "CTTN"                  
 [4] "stump_diameter"         "tree_height"            "canopy_diameter"       
 [7] "Main_trunk"             "bough_50"               "phan_than"             
[10] "stump_diameter_growth"  "tree_height_growth"     "canopy_diameter_growth"

Tuy nhiên, vấn đề gặp phải là trong data (kllBTB) ở biến Local có 3 địa phương (Cam_Duong, Le_Thuy và Trieu_Phong), biến Age có (1.0, 1.2, 2.3), biến CTTN có 4 công thức (DC, CT 1, CT 2, CT 3). Với mục đích phân tích 12 biến trên cho từng địa phương, cho từng độ tuổi và từng công thức thí nghiệm, ngay cả vẽ biểu đồ sau này. Như thông thường chúng ta có các cách sau: (i) Nhập và lưu số liệu cho từng địa phương (Local), cho từng độ tuổi (Age); (ii) Tách số liệu thủ công bằng cách lưu cho từng địa phương cho từng độ tuổi khác nhau (coppy paste trong excel). Trong khi, data (kllBTB) nhập đầy đủ số liệu cho các địa phương, ở các độ tuổi và CTTN khác nhau với hàng ngàn dữ liệu. Nếu làm thủ công sẽ lưu nhiều file, mất nhiều thời gian, và nếu có sử dụng trong r cũng khá mất công (thực ra trong r vẫn còn nhiều cách để thực hiện, tuy nhiên trong giới hạn vốn hiểu biết, tìm tòi của mình có hạn nên rất mong được quý độc giả góp ý để mình biết thêm những packages, những hàm, những lệnh hữu ích hơn. Cũng xin mạn phép được bỏ quá cho, bởi mình đang trong quá trình tìm hiểu, và thực hành nên không tránh khỏi những thiếu sót. Trân trọng).

Lệnh subset trong r sẽ giúp chúng ta một cách đơn giản, gọn nhẹ, nhanh chóng và khoa học. Cụ thể như sau:
> kllBTB
> fix(kllBTB)


Thứ nhất, tách dữ liệu cho từng địa phương.

> CamDuong = subset(kllBTB, Local == "Cam Duong")
>  LeThuy = subset(kllBTB, Local == "Le Thuy")
> TrieuPhong = subset(kllBTB, Local == "Trieu Phong")

Từ các data.frame (cd, lt, tp) được tách chiết từ data (kllBTB), chúng ta có thể xử lý riêng cho từng địa phương. Tuy nhiên, vấn đề gặp phải tiếp theo là ở mỗi địa phương lại có các độ tuổi và các CTTN khác nhau, vì vậy việc phân tích thống kê hay vẽ biểu đồ vẫn gặp một số khó khăn nhất định.

Phân tích thống kê ở đây tôi chỉ đề cập đến một số thông số cơ bản như: mean, sd (độ lệch chuẩn), se (sai số chuẩn), median, min, max, bách phân vị 25%, bách phân vị 75%... Vẽ biểu đồ ở đây tôi chỉ đề cập đến các loại biểu đồ thông dụng như: boxplot, point, tương quan, kết hợp giữa biểu đồ tương quan với type histogram hay type density...
Trong data mới có tên là cd (chiết dữ liệu từ kllBB bằng lệnh: > cd=subset(kllBTB, Local=="Cam_Duong")).
Trong data.frame (cd) có 2 độ tuổi khác nhau với 4 CTTN. Vấn đề đặt ra là chiết dữ liệu tiếp theo các độ tuổi khác nhau, để tiện cho việc phân tích và vẽ biểu đồ. Cụ thể như sau:

Thứ hai, sử dụng tiếp lệnh subset để chiết tách theo các độ tuổi khác nhau

> Age1.2=subset(cd, Age=="1.2")
> Age2.3=subset(cd, Age=="2.3")
Ở đây, chúng ta lại có thêm 2 data mới tách chiết từ data (cd) là Age1.2 và Age2.3. Có nghĩa là ở Age1.2 các dữ liệu ở độ tuổi 1.2 còn các biến số và CTTN vẫn giữ nguyên, tương tự Age2.3.
Lúc này, chúng ta dùng lệnh describyBy trong packages (psych) để phân tích thống kê.
Kết quả như sau:

> head(CamDuong_Age2)

         Local Age CTTN stump_diameter tree_height
1691 Cam_Duong   2   DC           8.12        2.45
1692 Cam_Duong   2   DC           3.25        1.30
1693 Cam_Duong   2   DC           4.33        1.60
1694 Cam_Duong   2   DC           5.00        2.10
1695 Cam_Duong   2   DC           4.87        2.80
1696 Cam_Duong   2   DC           5.09        1.80
     canopy_diameter main_trunk bough_50_cm phan_than
1691            3.55          1          22         1
1692            1.55          2          11         1
1693            2.95          3          18         0
1694            2.40          2          17         1
1695            3.30          3          32         1
1696            2.50          1          15         1
     song_chet stump_diameter_growth tree_height_growth
1691         1                  4.06               1.23
1692         1                  1.62               0.65
1693         1                  2.16               0.80
1694         1                  2.50               1.05
1695         1                  2.44               1.40
1696         1                  2.55               0.90
     canopy_diameter_growth litter_fall
1691                   1.78        0.42
1692                   0.78        0.16
1693                   1.48        0.21
1694                   1.20        0.25
1695                   1.65        0.24
1696                   1.25        0.26

> library(psych)
> describeBy(CamDuong_Age2, group=CTTN, skew=F, range=F)

group: CT 1
                       vars  n  mean   sd   se
Local*                    1 14  1.00 0.00 0.00
Age                       2 14  2.00 0.00 0.00
CTTN*                     3 14  1.00 0.00 0.00
stump_diameter            4 14  5.33 0.93 0.25
tree_height               5 14  2.44 0.55 0.15
canopy_diameter           6 14  2.58 0.44 0.12
main_trunk                7 14  1.64 0.63 0.17
bough_50_cm               8 14 22.43 7.44 1.99
phan_than                 9 14  1.00 0.00 0.00
song_chet                10 14  1.00 0.00 0.00
stump_diameter_growth    11 14  2.67 0.46 0.12
tree_height_growth       12 14  1.22 0.27 0.07
canopy_diameter_growth   13 14  1.29 0.22 0.06
litter_fall              14 14  0.27 0.05 0.01
---------------------------------------------------------------
group: CT 2
                       vars  n  mean   sd   se
Local*                    1 32  1.00 0.00 0.00
Age                       2 32  2.00 0.00 0.00
CTTN*                     3 32  2.00 0.00 0.00
stump_diameter            4 32  5.62 1.31 0.23
tree_height               5 32  2.36 0.51 0.09
canopy_diameter           6 32  2.68 0.44 0.08
main_trunk                7 32  1.72 0.58 0.10
bough_50_cm               8 32 21.38 5.82 1.03
phan_than                 9 32  0.97 0.18 0.03
song_chet                10 32  1.00 0.00 0.00
stump_diameter_growth    11 32  2.81 0.66 0.12
tree_height_growth       12 32  1.18 0.26 0.05
canopy_diameter_growth   13 32  1.34 0.22 0.04
litter_fall              14 32  0.28 0.07 0.01
---------------------------------------------------------------
group: CT 3
                       vars  n  mean   sd   se
Local*                    1 35  1.00 0.00 0.00
Age                       2 35  2.00 0.00 0.00
CTTN*                     3 35  3.00 0.00 0.00
stump_diameter            4 35  5.26 1.45 0.25
tree_height               5 35  2.15 0.48 0.08
canopy_diameter           6 35  2.33 0.41 0.07
main_trunk                7 35  1.46 0.66 0.11
bough_50_cm               8 35 21.09 6.72 1.14
phan_than                 9 35  0.97 0.17 0.03
song_chet                10 35  1.00 0.00 0.00
stump_diameter_growth    11 35  2.63 0.73 0.12
tree_height_growth       12 35  1.08 0.24 0.04
canopy_diameter_growth   13 35  1.17 0.21 0.03
litter_fall              14 35  0.26 0.08 0.01
---------------------------------------------------------------
group: DC
                       vars  n  mean   sd   se
Local*                    1 32  1.00 0.00 0.00
Age                       2 32  2.00 0.00 0.00
CTTN*                     3 32  4.00 0.00 0.00
stump_diameter            4 32  5.46 1.51 0.27
tree_height               5 32  2.19 0.51 0.09
canopy_diameter           6 32  2.57 0.49 0.09
main_trunk                7 32  1.88 0.75 0.13
bough_50_cm               8 32 19.38 5.91 1.05
phan_than                 9 32  0.94 0.25 0.04
song_chet                10 32  1.00 0.00 0.00
stump_diameter_growth    11 32  2.73 0.76 0.13
tree_height_growth       12 32  1.09 0.25 0.05
canopy_diameter_growth   13 32  1.29 0.25 0.04
litter_fall              14 32  0.27 0.08 0.01
---------------------------------------------------------------

Tương tự ở các độ tuổi khác.

Thứ ba, phân tích các chỉ tiêu bách phân vị 25%, bách phân vị 75%, median, max, min. Chúng ta sử dụng tiếp lệnh summary (data). Tuy nhiên ta chưa thể phân tích các chỉ tiêu trên cho tất cả các biến ở cùng độ tuổi trong cùng một công thức thí nghiệm. Nếu ta sử dụng lệnh summary (data=cd) thì cho kết quả các thông tin cần phân tích, nhưng lại phân tích chung cho tất cả các CTTN. Kết quả như sau:


> head(CamDuong)
         Local Age CTTN stump_diameter tree_height
1417 Cam_Duong 1.6   DC           5.51        1.54
1418 Cam_Duong 1.6 CT 1           6.11        1.76
1419 Cam_Duong 1.6 CT 1           3.63        1.38
1420 Cam_Duong 1.6 CT 1           4.20        1.65
1421 Cam_Duong 1.6   DC             NA          NA
1422 Cam_Duong 1.6   DC           6.24        2.15
     canopy_diameter main_trunk bough_50_cm phan_than
1417            2.29          3           1         1
1418            2.15          1           2         1
1419            2.03          3           1         0
1420            1.97          5           1         1
1421              NA         NA          NA        NA
1422            2.47          3           0         1
     song_chet stump_diameter_growth tree_height_growth
1417         1                  3.44               0.96
1418         1                  3.82               1.10
1419         1                  2.27               0.86
1420         1                  2.63               1.03
1421         0                    NA                 NA
1422         1                  3.90               1.34
     canopy_diameter_growth litter_fall
1417                   1.43        0.28
1418                   1.34        0.31
1419                   1.27        0.18
1420                   1.23        0.21
1421                     NA          NA

1422                   1.54        0.32


> summary(CamDuong)

         Local          Age          CTTN     stump_diameter 
 Cam_Duong  :399   Min.   :1.000   CT 1: 59   Min.   : 1.430 
 Le_Thuy    :  0   1st Qu.:1.000   CT 2:117   1st Qu.: 2.960 
 Trieu_Phong:  0   Median :1.600   CT 3:118   Median : 3.950 
                   Mean   :1.497   DC  :105   Mean   : 4.216 
                   3rd Qu.:2.000   DC  :  0   3rd Qu.: 5.160 
                   Max.   :2.000              Max.   :10.700 
                                              NA's   :30     
  tree_height    canopy_diameter   main_trunk     bough_50_cm   
 Min.   :0.400   Min.   :0.64    Min.   :1.000   Min.   : 0.000 
 1st Qu.:0.940   1st Qu.:1.38    1st Qu.:1.000   1st Qu.: 1.000 
 Median :1.500   Median :1.85    Median :2.000   Median : 2.000 
 Mean   :1.573   Mean   :1.87    Mean   :2.664   Mean   : 7.434 
 3rd Qu.:2.100   3rd Qu.:2.35    3rd Qu.:4.000   3rd Qu.:15.000 
 Max.   :3.500   Max.   :3.80    Max.   :8.000   Max.   :38.000 
 NA's   :30      NA's   :30      NA's   :30      NA's   :30     
   phan_than        song_chet      stump_diameter_growth
 Min.   :0.0000   Min.   :0.0000   Min.   :1.230       
 1st Qu.:0.0000   1st Qu.:1.0000   1st Qu.:2.320        
 Median :1.0000   Median :1.0000   Median :2.790       
 Mean   :0.5583   Mean   :0.9248   Mean   :2.896       
 3rd Qu.:1.0000   3rd Qu.:1.0000   3rd Qu.:3.340       
 Max.   :1.0000   Max.   :1.0000   Max.   :6.330       
 NA's   :30                        NA's   :30          
 tree_height_growth canopy_diameter_growth  litter_fall   
 Min.   :0.400      Min.   :0.640          Min.   :0.0600 
 1st Qu.:0.830      1st Qu.:1.080          1st Qu.:0.1400 
 Median :1.010      Median :1.280          Median :0.1900 
 Mean   :1.036      Mean   :1.266          Mean   :0.2086 
 3rd Qu.:1.210      3rd Qu.:1.440          3rd Qu.:0.2600 
 Max.   :1.940      Max.   :1.900          Max.   :0.5500 
 NA's   :30         NA's   :30             NA's   :30      

Tương tự cho các công thức thí nghiệm còn lại (CT1, CT2 và CT3)


Thứ sáu
, từ đây ta có thể vẽ các loại biểu đồ cho từng địa phương, cụ thể như sau:

 Vẽ biểu đồ boxplot:

> tp=ggplot(data=klltp, aes(klltp$CTTN, y=stump_diameter, fill=CTTN))+ geom_boxplot(aes(fill=CTTN))+ theme_bw()+ theme_classic()+ ylab("stump diameter, cm")+xlab("CTTN")
> tp5=tpp+ geom_rangeframe()+ theme_tufte()+ scale_y_continuous(breaks=extended_range_breaks()(klltp$stump_diameter))
# result



Vẽ biểu đồ tương quan tiếp,

> tp=ggplot(data=klltp, aes(x=stump_diameter, y=tree_height, fill=CTTN))+ geom_point(aes(color=CTTN, size=Main_trunk))+ theme_bw()+ theme_classic()+ xlab("stump diameter, cm")+ ylab("tree height, m")+ geom_smooth(method="lm") + ggtitle("The correlation between tree height with stump diameter of Acacia crassicarpa \n 
in coastal sandy regions of Quang Tri province")
> tp1= tp+ geom_rangeframe()+ theme_tufte()+ scale_x_continuous(breaks=extended_range_breaks()(klltp$stump_diameter))+ scale_y_continuous(breaks=extended_range_breaks()(klltp$tree_height))
# result



Vẽ biểu đồ tương quan tiếp,

 > ggMarginal(tp1, type="histogram", color="violet", size=2.5)
# result



Vẽ biểu đồ tương quan tiếp

 > ggMarginal(tp1, type="density", color="red", size=2.5)
# result




0 comments:

chủ đề

Ăn của rừng bài báo khoa học bản quyền bành trướng Bảo vệ cây là bảo vệ chính mình biến đổi khí hậu Biển Đông Biết sai vẫn cứ làm biểu đồ biểu đồ hộp biểu đồ sai số chuẩn Biểu đồ tương quan Biểu đồ với nhãn bon-sai boxplot buoc-dau-nghien-cuu-khoa-hoc but-ky-doi-toi Cái tài Cái tâm Cái tầm canh tác đất dốc Cây xanh đô thị Cha chung không ai khóc cha nào con nấy Chân thiện mỹ chân trong chân ngoài chạy chức chạy quyền Che chở Chết toàn tập chọn cách ta sống chữ tín chuyện giờ mới kể có vấn đề Cơm áo gạo tiền Con cháu các cụ con người biến thái Con ông cháu cha công nghệ 4.0 correlation matrix corrgram corrplot Cứ đi rồi sẽ tới cuộc cách mạng 4.0 Đam mê đàn gảy tai trâu danh dự danh xưng phù phiếm Đạo đức sống đào tạo sau đại học Đạo văn Đấu tranh sinh tồn day-do Đẹp trong tâm hồn Đi tắt đón đầu dở khóc dở cười đọc nghe nhìn và cảm nhận Dồn điền đổi thửa Động lực dựa vào nhau mà sống error bar plot GGalyy ggcorplot ggExtra ggiraph ggplot2 ggrepel ggthemes Giáng sinh Giáo dục giàu nghèo giục tốc bất đạt Góc quê gridExtra Hài lòng Hai mặt một lời hãy là chính mình hãy sống có trách nhiệm hơn hèn nhát Hiệu sau ứng bão hiệu ứng domino formosa Hiệu ứng sau bão Hòa cả làng học giả bằng thật hoc-lam-tho hoc-r-moi-ngay Ích kỷ KH&CN khả năng Khoán chi Không lối thoát Kiểm định thống kê kỹ năng mềm Kỷ niệm vùng miền Label lan rừng Lão Hạc thế kỷ 21 Liêm chính lính đánh thuê Lợi dụng lợi ích nhóm lừa trên gạt dưới lười suy nghĩ Lương thiện giả vờ Lương y Ma trận tương quan Mẹ Miền cát trắng miền đất hứa Mộc Châu món ăn địa phương Mùa gặt Mục đích sống Mường La Nghịch lý chất lượng - số lượng Nghiên cứu khoa học Ngồi chơi xơi nước Nhân cách nhu cầu Những cung đường tôi đã qua NN&PTNT phân cấp sinh trưởng phân tích hậu định phan-bien-xa-hoi plot3D psych Quán Nha R Rừng ngập mặn rước hổ về nhà rvg sach-hay SARS-CoV-2 sau-luy-tre-lang sciplot Số cây Số liệu trống không Sông Châu sống chết mặc ai sức ỳ sức ỳ bản thân suy thoái Tầm lùn tâm sự tâm sự buồn thảm họa formosa thảm họa môi trường tham nhũng Thân cô thế cô thắng cố ngựa Thăng trầm Thấy vậy mà không phải vậy Thế cây Thế cây cổ Thế cây thế người Thông điệp cuộc đời Thống kê mô tả Thông tư Thước đo lòng người Thủy điện Tiên trách kỷ hậu trách nhân Tình bạn cao đẹp Tình người Tố chất làm khoa học tội đếch gì mà phải ghét ai Tôi sợ giầu lắm track changes Trải nghiệm tre già măng mọc trở mặt Trung thực tư duy Tự sự Tư tưởng thụt lùi tuy duy nhiệm kỳ Ứng dụng R trong lâm nghiệp Văn hóa cảm ơn Văn hóa giao thông văn hóa ngầm Văn hóa xin lỗi Xấu khen đẹp chê Xỏ nhầm giầy xoay đầu đổi đít Ý tưởng

bài đã đăng

Powered by Blogger.

Disqus Shortname

Widget Recent Post No.

Widget Random Post No.

Widget Recent Comment No.

PageNavi Results No.

Labels Max-Results No.

Comments system

Contact Form

Name

Email *

Message *

bài đăng phổ biến

số lượt ghé qua trang blog

Bài đăng nổi bật

Thế cây thế người

T hế trong CÂY CẢNH thể hiện các chi tiết về CẤU TRÚC ở mọi phương diện, đa góc nhìn (trên dưới trái phải ngang dọc), trong đ...

Bài đăng phổ biến

bài xem nhiều nhất