Monday, 19 September 2016

Hôm nay, đang ngồi xử lý số liệu thì gặp trường hợp số liệu trống không (missing value). Để thuận tiện cho các phân tích tiếp theo, thì loại bỏ “số liệu trống không” trong data.frame là rất cần thiết. Vì R không tính toán được các phân tích tiếp theo.


Trong nghiên cứu, vì nhiều lý do, số liệu không thể thu thập được cho tất cả các đối tượng, hay không thể đo lường tất cả các biến số cho một đối tượng, đặc biệt các nghiên cứu theo thời gian (số liệu theo thời gian). Trong phạm vi bài viết, số liệu về sinh trưởng cây Keo lá liềm được thử nghiệm trên vùng cát ven biển (3 huyện của 3 tỉnh vùng BTB), với 4 công thức thí nghiệm (CTTN) khác nhau, theo dõi qua các độ tuổi khác nhau. Trong trường hợp đó, số liệu trống được xem là “missing value”, có thể gọi là số liệu trống không. Trong R xem các số liệu trống không là NA (xem hình dưới đây, ví dụ các đối tượng (id) từ 171 đến 177).


Có một số kiểm định thống kê đòi hỏi phải loại các số liệu trống không ra (vì không tính toán được) trước khi phân tích. Số liệu trống không trong ví dụ, là các biến của cây Keo lá liềm bị chết, nên không có số liệu. Vậy câu hỏi đặt ra, tại sao không loại bỏ trước khi nhập số liệu? Như trên mình có nói, trường hợp nghiên cứu là đánh giá các biến (các chỉ tiêu sinh trưởng) của cây Keo lá liềm ở các CTTN theo thời gian (qua các năm, các độ tuổi khác nhau). Trong quá trình theo dõi việc đối tượng bị mất, hay bị chết, đặc biệt trong công tác trồng vùng đất cát ven biển là điều khó tránh khỏi. Vấn đề được đặt ra tiếp theo, loại bỏ các số liệu trống không ra khỏi data để phân tích tiếp theo? Thông thường, mình hay vào file gốc xóa bỏ các dòng (đối tượng) trống không. Như vậy rất mất thời gian (thủ công), dễ sai sót. Tuy nhiên, trong R có một lệnh rất có ích cho việc này: na.omit. Cách sử dụng như sau:

> LeThuy_Age1.3=na.omit(LT_Age1.3)
Trong lệnh trên, chúng ta yêu cầu R loại bỏ các số liệu trống không trong data.frame (LT_Age1.3) và data.frame (LeThuy_Age1.3) mới đã được loại bỏ các số liệu trống không. Kết quả thể hiện trong hình dưới đây (để ý cột id và cột mới row.names). 


Kết quả hình trên cho thấy (để ý dòng cuối cùng), cột id có số thứ tự cuối cùng là 227 và cột row.names có số thứ tự 243. Tức là, có 16 đối tượng có số liệu trống không đã được loại bỏ.

Từ đây (data.frame đã loại bỏ số liệu trống không – LeThuy_Age1.3) có thể xử lý thống kê thông thường.

Trong phạm vi bài viết, mục tiêu là phân tích một số thông số thống kê thông thường như: mean, sd (độ lệch chuẩn), se (sai số chuẩn), median, bách phân vị 75%, bách phân vị 25%, max, min...

Kết quả tính thông số thống kê: mean, sd, se như sau:
attach(LeThuy_Age1.3)
head(LeThuy_Age1.3)

> library(psych)
> describeBy(LeThuy_Age2.3, group=CTTN, skew=F, range=F)

# result

group: CT 1
                       vars  n  mean   sd   se
Local*                    1 67  2.00 0.00 0.00
Age                       2 67  2.30 0.00 0.00
CTTN*                     3 67  1.00 0.00 0.00
stump_diameter            4 67  3.52 1.37 0.17
tree_height               5 67  1.47 0.45 0.05
canopy_diameter           6 67  1.99 0.48 0.06
main_trunk                7 67  2.00 0.78 0.10
bough_50_cm               8 67 13.73 5.24 0.64
phan_than                 9 67  0.67 0.47 0.06
song_chet                10 67  1.00 0.00 0.00
stump_diameter_growth    11 67  1.53 0.60 0.07
tree_height_growth       12 67  0.64 0.19 0.02
canopy_diameter_growth   13 67  0.86 0.21 0.03
litter_fall              14 67  0.19 0.05 0.01
-------------------------------------------
group: CT 2
                       vars  n  mean   sd   se
Local*                    1 80  2.00 0.00 0.00
Age                       2 80  2.30 0.00 0.00
CTTN*                     3 80  2.00 0.00 0.00
stump_diameter            4 80  3.77 1.37 0.15
tree_height               5 80  1.58 0.51 0.06
canopy_diameter           6 80  2.06 0.46 0.05
main_trunk                7 80  1.91 0.92 0.10
bough_50_cm               8 80 12.40 5.85 0.65
phan_than                 9 80  0.79 0.41 0.05
song_chet                10 80  1.00 0.00 0.00
stump_diameter_growth    11 80  1.64 0.60 0.07
tree_height_growth       12 80  0.69 0.22 0.02
canopy_diameter_growth   13 80  0.89 0.20 0.02
litter_fall              14 80  0.20 0.06 0.01
-------------------------------------------
group: CT 3
                       vars  n  mean   sd   se
Local*                    1 75  2.00 0.00 0.00
Age                       2 75  2.30 0.00 0.00
CTTN*                     3 75  3.00 0.00 0.00
stump_diameter            4 75  4.52 1.43 0.16
tree_height               5 75  1.92 0.58 0.07
canopy_diameter           6 75  2.20 0.44 0.05
main_trunk                7 75  1.83 0.88 0.10
bough_50_cm               8 75 14.33 5.59 0.65
phan_than                 9 75  0.95 0.23 0.03
song_chet                10 75  1.00 0.00 0.00
stump_diameter_growth    11 75  1.97 0.62 0.07
tree_height_growth       12 75  0.83 0.25 0.03
canopy_diameter_growth   13 75  0.96 0.19 0.02
litter_fall              14 75  0.23 0.07 0.01
-------------------------------------------
group: DC
                       vars  n  mean   sd   se
Local*                    1 50  2.00 0.00 0.00
Age                       2 50  2.30 0.00 0.00
CTTN*                     3 50  4.00 0.00 0.00
stump_diameter            4 50  4.19 0.79 0.11
tree_height               5 50  1.50 0.44 0.06
canopy_diameter           6 50  1.91 0.33 0.05
main_trunk                7 50  1.50 0.65 0.09
bough_50_cm               8 50 11.84 4.24 0.60
phan_than                 9 50  0.90 0.30 0.04
song_chet                10 50  1.00 0.00 0.00
stump_diameter_growth    11 50  1.82 0.34 0.05
tree_height_growth       12 50  0.65 0.19 0.03
canopy_diameter_growth   13 50  0.83 0.14 0.02
litter_fall              14 50  0.21 0.04 0.01
-------------------------------------------

# Tương tự cho các độ tuổi còn lại.

Subset dữ liệu theo mục đích phân tích

Tuy nhiên, để phân tích được các thông số thống kê như: bách phân vị 75%, bách phân vị 25%, max, min... Chúng ta lại sử dụng lệnh subset trong R mà bài trước mình đã giới thiệu. Sau khi subset riêng cho từng CTTN, thì việc tiếp theo rất đơn giản cho phân tích thống kê cũng như vẽ các biểu đồ theo ý muốn.

# > LeThuy_DC=subset(LeThuy_Age1.3, CTTN=="DC")
# > attach(LeThuy_DC)
# > head(LeThuy_DC)

> summary(LeThuy_DC)

         Local         Age        CTTN    stump_diameter
 Cam_Duong  : 0   Min.   :1.3   CT 1: 0   Min.   :1.460 
 Le_Thuy    :34   1st Qu.:1.3   CT 2: 0   1st Qu.:1.995 
 Trieu_Phong: 0   Median :1.3   CT 3: 0   Median :2.530 
                  Mean   :1.3   DC  :34   Mean   :2.601 
                  3rd Qu.:1.3   DC  : 0   3rd Qu.:2.913 
                  Max.   :1.3             Max.   :4.620 
 ------------------------------------------------------
 tree_height     canopy_diameter   main_trunk  
 Min.   :0.6000   Min.   :0.450   Min.   :1.000 
 1st Qu.:0.8050   1st Qu.:0.935   1st Qu.:2.000 
 Median :0.9400   Median :1.050   Median :2.500 
 Mean   :0.9859   Mean   :1.055   Mean   :2.676 
 3rd Qu.:1.2300   3rd Qu.:1.188   3rd Qu.:3.000 
 Max.   :1.4700   Max.   :1.650   Max.   :6.000 
 ---------------------------------------------
 bough_50_cm      phan_than        song_chet
 Min.   :1.000   Min.   :0.0000   Min.   :1 
 1st Qu.:1.000   1st Qu.:0.0000   1st Qu.:1 
 Median :2.000   Median :0.0000   Median :1 
 Mean   :1.912   Mean   :0.3529   Mean   :1 
 3rd Qu.:2.000   3rd Qu.:1.0000   3rd Qu.:1 
 Max.   :4.000   Max.   :1.0000   Max.   :1 
 ------------------------------------------
 stump_diameter_growth tree_height_growth
 Min.   :1.130         Min.   :0.4600   
 1st Qu.:1.538         1st Qu.:0.6225   
 Median :1.945         Median :0.7250   
 Mean   :2.001         Mean   :0.7585   
 3rd Qu.:2.237         3rd Qu.:0.9425   
 Max.   :3.550         Max.   :1.1300   
 ------------------------------------
canopy_diameter_growth  litter_fall   
 Min.   :0.3500         Min.   :0.0600 
 1st Qu.:0.7225         1st Qu.:0.0900 
 Median :0.8100         Median :0.1200 
 Mean   :0.8121         Mean   :0.1235 
 3rd Qu.:0.9100         3rd Qu.:0.1400 
 Max.   :1.2700         Max.   :0.2300 
# Tương tự cho các CTTN còn lại.

0 nhận xét:

Post a Comment

Powered by Blogger.

Contact Form

Name

Email *

Message *

Pages - Menu

Popular

Total Pageviews

Popular Posts

Recent Posts

Text Widget