ANALISIS DATA STUNTING BALITA

Praktik Pengolahan Data Menggunakan RStudio

1. Import Data

data_balita <- read.csv("D:/data_balita.txt")
dim(data_balita)
## [1] 120999      4
str(data_balita)
## 'data.frame':    120999 obs. of  4 variables:
##  $ Umur..bulan.     : int  0 0 0 0 0 0 0 0 0 0 ...
##  $ Jenis.Kelamin    : chr  "laki-laki" "laki-laki" "laki-laki" "laki-laki" ...
##  $ Tinggi.Badan..cm.: num  44.6 56.7 46.9 47.5 42.7 ...
##  $ Status.Gizi      : chr  "stunted" "tinggi" "normal" "normal" ...
head(data_balita)
##   Umur..bulan. Jenis.Kelamin Tinggi.Badan..cm.      Status.Gizi
## 1            0     laki-laki          44.59197          stunted
## 2            0     laki-laki          56.70520           tinggi
## 3            0     laki-laki          46.86336           normal
## 4            0     laki-laki          47.50803           normal
## 5            0     laki-laki          42.74349 severely stunted
## 6            0     laki-laki          44.25772          stunted
summary(data_balita)
##   Umur..bulan.   Jenis.Kelamin      Tinggi.Badan..cm. Status.Gizi       
##  Min.   : 0.00   Length:120999      Min.   : 40.01    Length:120999     
##  1st Qu.:15.00   Class :character   1st Qu.: 77.00    Class :character  
##  Median :30.00   Mode  :character   Median : 89.80    Mode  :character  
##  Mean   :30.17                      Mean   : 88.66                      
##  3rd Qu.:45.00                      3rd Qu.:101.20                      
##  Max.   :60.00                      Max.   :128.00
colSums(is.na(data_balita))
##      Umur..bulan.     Jenis.Kelamin Tinggi.Badan..cm.       Status.Gizi 
##                 0                 0                 0                 0
table(data_balita$Status.Gizi)
## 
##           normal severely stunted          stunted           tinggi 
##            67755            19869            13815            19560
range(data_balita$Umur..bulan.)
## [1]  0 60
range(data_balita$Tinggi.Badan..cm.)
## [1]  40.01044 128.00000
unique(data_balita$Jenis.Kelamin)
## [1] "laki-laki" "perempuan"
unique(data_balita$Status.Gizi)
## [1] "stunted"          "tinggi"           "normal"           "severely stunted"
sum(duplicated(data_balita))
## [1] 81574
table(data_balita$Jenis.Kelamin)
## 
## laki-laki perempuan 
##     59997     61002
nrow(unique(data_balita))
## [1] 39425
head(data_balita[duplicated(data_balita), ])
##      Umur..bulan. Jenis.Kelamin Tinggi.Badan..cm.      Status.Gizi
## 6013            3     laki-laki              62.1           normal
## 6015            3     laki-laki              59.2           normal
## 6028            3     laki-laki              61.4           normal
## 6032            3     laki-laki              71.0           tinggi
## 6033            3     laki-laki              51.5 severely stunted
## 6042            3     laki-laki              56.5          stunted
sort(table(apply(data_balita, 1, paste, collapse = "|")), decreasing = TRUE)[1:10]
## 
##          12|perempuan| 67.20000|stunted          11|laki-laki| 67.80000|stunted 
##                                      15                                      14 
##           12|laki-laki| 79.50000|normal           12|perempuan| 76.00000|normal 
##                                      13                                      13 
##           13|perempuan| 76.70000|normal           41|laki-laki|100.00000|normal 
##                                      13                                      13 
##           44|perempuan|113.60000|tinggi  3|laki-laki| 51.40000|severely stunted 
##                                      13                                      12 
##            7|laki-laki| 80.00000|tinggi           30|laki-laki|105.60000|tinggi 
##                                      12                                      12
round(nrow(unique(data_balita)) / nrow(data_balita) * 100, 2)
## [1] 32.58
nrow(unique(data_balita))
## [1] 39425
round(nrow(unique(data_balita)) / nrow(data_balita) * 100, 2)
## [1] 32.58
data_analisis <- data_balita
dim(data_analisis)
## [1] 120999      4
colSums(is.na(data_analisis))
##      Umur..bulan.     Jenis.Kelamin Tinggi.Badan..cm.       Status.Gizi 
##                 0                 0                 0                 0
table(data_analisis$Jenis.Kelamin)
## 
## laki-laki perempuan 
##     59997     61002
table(data_analisis$Status.Gizi)
## 
##           normal severely stunted          stunted           tinggi 
##            67755            19869            13815            19560
range(data_analisis$Umur..bulan.)
## [1]  0 60
range(data_analisis$Tinggi.Badan..cm.)
## [1]  40.01044 128.00000
str(data_analisis)
## 'data.frame':    120999 obs. of  4 variables:
##  $ Umur..bulan.     : int  0 0 0 0 0 0 0 0 0 0 ...
##  $ Jenis.Kelamin    : chr  "laki-laki" "laki-laki" "laki-laki" "laki-laki" ...
##  $ Tinggi.Badan..cm.: num  44.6 56.7 46.9 47.5 42.7 ...
##  $ Status.Gizi      : chr  "stunted" "tinggi" "normal" "normal" ...
# 2. Membuat Variabel Stunting
data_analisis$Status.Gizi <- factor(data_analisis$Status.Gizi)
str(data_analisis)
## 'data.frame':    120999 obs. of  4 variables:
##  $ Umur..bulan.     : int  0 0 0 0 0 0 0 0 0 0 ...
##  $ Jenis.Kelamin    : chr  "laki-laki" "laki-laki" "laki-laki" "laki-laki" ...
##  $ Tinggi.Badan..cm.: num  44.6 56.7 46.9 47.5 42.7 ...
##  $ Status.Gizi      : Factor w/ 4 levels "normal","severely stunted",..: 3 4 1 1 2 3 4 2 3 4 ...
data_analisis$Stunting <- ifelse(
  data_analisis$Status.Gizi %in% c("stunted", "severely stunted"),
  "Stunting",
  "Tidak Stunting"
)
table(data_analisis$Stunting)
## 
##       Stunting Tidak Stunting 
##          33684          87315
table(data_analisis$Jenis.Kelamin)
## 
## laki-laki perempuan 
##     59997     61002
table(data_analisis$Status.Gizi)
## 
##           normal severely stunted          stunted           tinggi 
##            67755            19869            13815            19560
table(data_analisis$Jenis.Kelamin, data_analisis$Stunting)
##            
##             Stunting Tidak Stunting
##   laki-laki    17183          42814
##   perempuan    16501          44501
prop.table(
  table(data_analisis$Jenis.Kelamin, data_analisis$Stunting),
  margin = 1
) * 100
##            
##             Stunting Tidak Stunting
##   laki-laki 28.63977       71.36023
##   perempuan 27.04993       72.95007
barplot(
  table(data_analisis$Stunting),
  main = "Distribusi Status Stunting",
  xlab = "Status",
  ylab = "Jumlah Balita"
)

barplot(
  table(data_analisis$Jenis.Kelamin, data_analisis$Stunting),
  beside = TRUE,
  main = "Status Stunting Berdasarkan Jenis Kelamin",
  xlab = "Jenis Kelamin",
  ylab = "Jumlah Balita",
  legend.text = TRUE
)

data_analysis <- data_balita

data_analysis$Jenis.Kelamin <- factor(data_analysis$Jenis.Kelamin)

data_analysis$Status.Gizi <- factor(data_analysis$Status.Gizi)

data_analysis$Stunting <- ifelse(
  data_analysis$Status.Gizi %in% c("stunted", "severely stunted"),
  "Stunting",
  "Tidak Stunting"
)

table(data_analysis$Stunting)
## 
##       Stunting Tidak Stunting 
##          33684          87315

3. Membuat Kelompok Umur

data_analysis$Kelompok_Umur <- cut(
  data_analysis$Umur..bulan.,
  breaks = c(-1, 11, 23, 35, 47, 60),
  labels = c(
    "0-11 bulan",
    "12-23 bulan",
    "24-35 bulan",
    "36-47 bulan",
    "48-60 bulan"
  )
)

table(data_analysis$Kelompok_Umur)
## 
##  0-11 bulan 12-23 bulan 24-35 bulan 36-47 bulan 48-60 bulan 
##       22999       24000       24000       24000       26000

4. Analisis Deskriptif

table(data_analysis$Kelompok_Umur)
## 
##  0-11 bulan 12-23 bulan 24-35 bulan 36-47 bulan 48-60 bulan 
##       22999       24000       24000       24000       26000
table(
  data_analysis$Kelompok_Umur,
  data_analysis$Stunting
)
##              
##               Stunting Tidak Stunting
##   0-11 bulan      7244          15755
##   12-23 bulan     7001          16999
##   24-35 bulan     6536          17464
##   36-47 bulan     6196          17804
##   48-60 bulan     6707          19293
length(data_analysis$Kelompok_Umur)
## [1] 120999
prop.table(
  table(
    data_analysis$Kelompok_Umur,
    data_analysis$Stunting
  ),
  margin = 1
) * 100
##              
##               Stunting Tidak Stunting
##   0-11 bulan  31.49702       68.50298
##   12-23 bulan 29.17083       70.82917
##   24-35 bulan 27.23333       72.76667
##   36-47 bulan 25.81667       74.18333
##   48-60 bulan 25.79615       74.20385

5. Visualisasi Data

barplot(
  prop.table(
    table(
      data_analysis$Kelompok_Umur,
      data_analysis$Stunting
    ),
    margin = 1
  )[, "Stunting"] * 100,
  main = "Persentase Stunting Berdasarkan Kelompok Umur",
  xlab = "Kelompok Umur",
  ylab = "Persentase Stunting (%)",
  ylim = c(0, 40)
)

## 6. Analisis Hubungan

6.1 Hubungan Jenis Kelamin dengan Stunting

# Tabel silang Jenis Kelamin dan Stunting
tabel_jenis_kelamin <- table(
  data_analysis$Jenis.Kelamin,
  data_analysis$Stunting
)

tabel_jenis_kelamin
##            
##             Stunting Tidak Stunting
##   laki-laki    17183          42814
##   perempuan    16501          44501
# Persentase baris
prop.table(tabel_jenis_kelamin, margin = 1) * 100
##            
##             Stunting Tidak Stunting
##   laki-laki 28.63977       71.36023
##   perempuan 27.04993       72.95007
# Uji Chi-Square
uji_jenis_kelamin <- chisq.test(tabel_jenis_kelamin)

uji_jenis_kelamin
## 
##  Pearson's Chi-squared test with Yates' continuity correction
## 
## data:  tabel_jenis_kelamin
## X-squared = 37.979, df = 1, p-value = 7.151e-10
# Tabel silang Kelompok Umur dan Stunting
tabel_kelompok_umur <- table(
  data_analysis$Kelompok_Umur,
  data_analysis$Stunting
)

tabel_kelompok_umur
##              
##               Stunting Tidak Stunting
##   0-11 bulan      7244          15755
##   12-23 bulan     7001          16999
##   24-35 bulan     6536          17464
##   36-47 bulan     6196          17804
##   48-60 bulan     6707          19293
# Persentase baris
prop.table(tabel_kelompok_umur, margin = 1) * 100
##              
##               Stunting Tidak Stunting
##   0-11 bulan  31.49702       68.50298
##   12-23 bulan 29.17083       70.82917
##   24-35 bulan 27.23333       72.76667
##   36-47 bulan 25.81667       74.18333
##   48-60 bulan 25.79615       74.20385
# Uji Chi-Square
uji_kelompok_umur <- chisq.test(tabel_kelompok_umur)

uji_kelompok_umur
## 
##  Pearson's Chi-squared test
## 
## data:  tabel_kelompok_umur
## X-squared = 281.65, df = 4, p-value < 2.2e-16