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
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
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
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
# 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