Project ini dilakukan untuk tugas Learning By Building sebagai pendalaman dan pembelajaran mandiri atas materi Regresi Data Panel pada Data sosio demografis. Data socio demografis adalah data yang menggambarkan karakteristik sosial dan demografis dari suatu populasi. Dataset yang digunakan adalah The World Happiness Report 2023 yang dapat diakses di Kaggle (https://www.kaggle.com/datasets/usamabuttar/world-happiness-report-2005-present).
The World Happiness Report adalah publikasi dari Sustainable Development Solutions Network, yang dilakukan oleh Gallup World Poll data. Report ini menggambarkan kebutuhan untuk dapat lebih memperhatikan dan melibatkan kebahagiaan dan perasaan sebagai manusia dala proses pembuatan kebijakan oleh pemerintah. Report ini melakukan review terhadap kondisi kebahagiaan dan variasinya di setiap negara.
Informasi mengenai variabel Prediktor:
Log GDP per capita is in terms of Purchasing Power Parity (PPP) adjusted to a constant 2017 international dollars, taken from the World Development Indicators (WDI) by the World Bank (version 17, metadata last updated on January 22, 2023).
The time series for Healthy life expectancy at birth is constructed based on data from the World Health Organization (WHO) Global Health Observatory data repository, with data available for 2005, 2010, 2015, 2016, and 2019.
Social support (0-1) is the national average of the binary responses (0=no, 1=yes) to the Gallup World Poll (GWP) question “If you were in trouble, do you have relatives or friends you can count on to help you whenever you need them, or not?”
Freedom to make life choices (0-1) is the national average of binary responses to the GWP question “Are you satisfied or dissatisfied with your freedom to choose what you do with your life?”
Generosity is the residual of regressing the national average of GWP responses to the donation question “Have you donated money to a charity in the past month?” on log GDP per capita.
Perceptions of corruption (0-1) are the average of binary answers to two GWP questions: “Is corruption widespread throughout the government or not?” and “Is corruption widespread within businesses or not?” Where data for government corruption are missing, the perception of business corruption is used as the overall corruption perception measure.
Positive affect is defined as the average of previous-day effects measures for laughter, enjoyment, and interest.
Negative affect is defined as the average of previous-day effects measures for worry, sadness, and anger.
<-
Happy read.csv("data_input/World_Happiness_Report.csv")
#head(Happy)
Dalam proyek ini, data negara yang diambil ada data negara yang berada di area Asia Timur (East Asia)
<-
Happy_EA %>%
Happy filter(Regional.Indicator == "East Asia") %>%
select(-Regional.Indicator)
Untuk memeriksa apakah data yang digunakan apakah sudah balance dapat menggunakan 2 cara, yakni:
1. Melihat frekuensi data berdasarkan index individu
table(Happy_EA$Country.Name)
##
## China Hong Kong S.A.R. of China Japan
## 16 12 17
## Mongolia South Korea Taiwan Province of China
## 15 17 15
2. Menggunakan fungsi is.pbalanced()
is.pbalanced(Happy_EA, index = c("Country.Name", "Year"))
## [1] FALSE
Terlihat dari 2 cara di atas, data yang akan digunakan belum dalam kondisi balance. Selain itu, Hongkong dikeluarkan dari dataset karena kehilangan banyak data dibandingkan data terlengkap (South Korea).
<-
Happy_EA %>%
Happy_EA filter(Country.Name != "Hong Kong S.A.R. of China")
unique(Happy_EA$Country.Name)
## [1] "China" "Japan"
## [3] "Mongolia" "South Korea"
## [5] "Taiwan Province of China"
1. Membuat Panel Data Frame
#membuat pdata.frame
<-
Happy_EA %>%
Happy_EA pdata.frame(index = c("Country.Name", "Year"))
#memeriksa struktur data
glimpse(Happy_EA)
## Rows: 80
## Columns: 12
## $ Country.Name <fct> China, China, China, China, China, C…
## $ Year <fct> 2006, 2007, 2008, 2009, 2010, 2011, …
## $ Life.Ladder <pseries> 4.560495, 4.862862, 4.846295, 4.…
## $ Log.GDP.Per.Capita <pseries> 8.696139, 8.823968, 8.910974, 8.…
## $ Social.Support <pseries> 0.7470113, 0.8108524, 0.7482873,…
## $ Healthy.Life.Expectancy.At.Birth <pseries> 65.660, 65.920, 66.180, 66.440, …
## $ Freedom.To.Make.Life.Choices <pseries> NA, NA, 0.8530720, 0.7711433, 0.…
## $ Generosity <pseries> NA, -0.17888285, -0.09518377, -0…
## $ Perceptions.Of.Corruption <pseries> NA, NA, NA, NA, NA, NA, NA, NA, …
## $ Positive.Affect <pseries> 0.6576588, 0.6639774, 0.7051333,…
## $ Negative.Affect <pseries> 0.1695804, 0.1586135, 0.1469630,…
## $ Confidence.In.National.Government <pseries> NA, NA, NA, NA, NA, NA, NA, NA, …
2. Mememeriksa Dimensi Data
pdim(Happy_EA)
## Unbalanced Panel: n = 5, T = 15-17, N = 80
<-
Happy_EA_balance %>% make.pbalanced(balance.type = "fill")
Happy_EA
table(Happy_EA_balance$Country.Name)
##
## China Japan Mongolia
## 18 18 18
## South Korea Taiwan Province of China
## 18 18
unique(Happy_EA_balance$Year)
## [1] 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017 2018 2019
## [16] 2020 2021 2022
## 18 Levels: 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 ... 2022
#memeriksa kembali keseimbangan data
is.pbalanced(Happy_EA_balance)
## [1] TRUE
Kita perlu mengetahui berapa banyak informasi waktu yang ditambahkan dari tahapan sebelumnya.
# jml missing data balance - jml missing data unbalance
colSums(is.na(Happy_EA)) - colSums(is.na(Happy_EA_balance))
## Country.Name Year
## 0 0
## Life.Ladder Log.GDP.Per.Capita
## -10 -10
## Social.Support Healthy.Life.Expectancy.At.Birth
## -10 -10
## Freedom.To.Make.Life.Choices Generosity
## -10 -10
## Perceptions.Of.Corruption Positive.Affect
## -10 -10
## Negative.Affect Confidence.In.National.Government
## -10 -10
Dari informasi di atas terlihat bahwa jumlah informasi waktu yang ditambahkan sebanyak 10 buah untuk masing-masing negara. Selanjutnya dilakukan pemeriksaan kelengkapan data hasil balancing.
colSums(is.na(Happy_EA_balance))
## Country.Name Year
## 0 0
## Life.Ladder Log.GDP.Per.Capita
## 10 13
## Social.Support Healthy.Life.Expectancy.At.Birth
## 10 22
## Freedom.To.Make.Life.Choices Generosity
## 15 17
## Perceptions.Of.Corruption Positive.Affect
## 26 10
## Negative.Affect Confidence.In.National.Government
## 10 30
Karena memiliki missing values yang sangat banyak, yakni lebih besar dari 22, maka kolom “Confidence.In.National.Government”, “Perceptions.Of.Corruption” dan “Healthy.Life.Expectancy.At.Birth” tidak akan digunakan.
<-
Happy_EA_balance %>%
Happy_EA_balance select(c(-"Confidence.In.National.Government", -"Perceptions.Of.Corruption",-"Healthy.Life.Expectancy.At.Birth"))
colSums(is.na(Happy_EA_balance))
## Country.Name Year
## 0 0
## Life.Ladder Log.GDP.Per.Capita
## 10 13
## Social.Support Freedom.To.Make.Life.Choices
## 10 15
## Generosity Positive.Affect
## 17 10
## Negative.Affect
## 10
Selanjutnya akan dilakukan pemeriksaan dan pengisian nilai yang
hilang pada masing-masing negara dengan cara interpolasi data secara
terpisah untuk setiap negara. Untuk mengisi nilai yang hilang dengan
nilai rata-rata dari nilai yang dekat dengan nilai missing menggunakan
fungsi na.fill()
dengan fill = "extend"
dilanjutkan dengan pengecekan missing value (NA) kembali dan diharapkan
memberi nilai False
yang artinya sudah tidak ada nilai
missing.
1.China
#periksa nilai missing
<- Happy_EA_balance %>%
China filter(Country.Name == "China")
colSums(is.na(China))
## Country.Name Year
## 0 0
## Life.Ladder Log.GDP.Per.Capita
## 2 2
## Social.Support Freedom.To.Make.Life.Choices
## 2 7
## Generosity Positive.Affect
## 3 2
## Negative.Affect
## 2
#mengisi nilai missing
<- China %>%
China mutate(
Life.Ladder = na.fill(Life.Ladder, fill = "extend"),
Log.GDP.Per.Capita = na.fill(Log.GDP.Per.Capita, fill = "extend"),
Social.Support = na.fill(Social.Support, fill = "extend"),
Freedom.To.Make.Life.Choices = na.fill(Freedom.To.Make.Life.Choices, fill = "extend"),
Generosity = na.fill(Generosity, fill = "extend"),
Positive.Affect = na.fill(Positive.Affect, fill = "extend"),
Negative.Affect = na.fill(Negative.Affect, fill = "extend")
)
anyNA(China)
## [1] FALSE
2.Japan
#periksa nilai missing
<- Happy_EA_balance %>%
Japan filter(Country.Name == "Japan")
colSums(is.na(Japan))
## Country.Name Year
## 0 0
## Life.Ladder Log.GDP.Per.Capita
## 1 1
## Social.Support Freedom.To.Make.Life.Choices
## 1 1
## Generosity Positive.Affect
## 3 1
## Negative.Affect
## 1
#mengisi nilai missing
<- Japan %>%
Japan mutate(
Life.Ladder = na.fill(Life.Ladder, fill = "extend"),
Log.GDP.Per.Capita = na.fill(Log.GDP.Per.Capita, fill = "extend"),
Social.Support = na.fill(Social.Support, fill = "extend"),
Freedom.To.Make.Life.Choices = na.fill(Freedom.To.Make.Life.Choices, fill = "extend"),
Generosity = na.fill(Generosity, fill = "extend"),
Positive.Affect = na.fill(Positive.Affect, fill = "extend"),
Negative.Affect = na.fill(Negative.Affect, fill = "extend")
)
anyNA(Japan)
## [1] FALSE
3.Mongolia
#periksa nilai missing
<- Happy_EA_balance %>%
Mongolia filter(Country.Name == "Mongolia")
colSums(is.na(Mongolia))
## Country.Name Year
## 0 0
## Life.Ladder Log.GDP.Per.Capita
## 3 3
## Social.Support Freedom.To.Make.Life.Choices
## 3 3
## Generosity Positive.Affect
## 3 3
## Negative.Affect
## 3
#mengisi nilai missing
<- Mongolia %>%
Mongolia mutate(
Life.Ladder = na.fill(Life.Ladder, fill = "extend"),
Log.GDP.Per.Capita = na.fill(Log.GDP.Per.Capita, fill = "extend"),
Social.Support = na.fill(Social.Support, fill = "extend"),
Freedom.To.Make.Life.Choices = na.fill(Freedom.To.Make.Life.Choices, fill = "extend"),
Generosity = na.fill(Generosity, fill = "extend"),
Positive.Affect = na.fill(Positive.Affect, fill = "extend"),
Negative.Affect = na.fill(Negative.Affect, fill = "extend")
)
anyNA(Mongolia)
## [1] FALSE
4.South Korea
#periksa nilai missing
<- Happy_EA_balance %>%
South_Korea filter(Country.Name == "South Korea")
colSums(is.na(South_Korea))
## Country.Name Year
## 0 0
## Life.Ladder Log.GDP.Per.Capita
## 1 1
## Social.Support Freedom.To.Make.Life.Choices
## 1 1
## Generosity Positive.Affect
## 2 1
## Negative.Affect
## 1
#mengisi nilai missing
<- South_Korea %>%
South_Korea mutate(
Life.Ladder = na.fill(Life.Ladder, fill = "extend"),
Log.GDP.Per.Capita = na.fill(Log.GDP.Per.Capita, fill = "extend"),
Social.Support = na.fill(Social.Support, fill = "extend"),
Freedom.To.Make.Life.Choices = na.fill(Freedom.To.Make.Life.Choices, fill = "extend"),
Generosity = na.fill(Generosity, fill = "extend"),
Positive.Affect = na.fill(Positive.Affect, fill = "extend"),
Negative.Affect = na.fill(Negative.Affect, fill = "extend")
)
anyNA(South_Korea)
## [1] FALSE
5.Taiwan
#periksa nilai missing
<- Happy_EA_balance %>%
Taiwan filter(Country.Name == "Taiwan Province of China")
colSums(is.na(Taiwan))
## Country.Name Year
## 0 0
## Life.Ladder Log.GDP.Per.Capita
## 3 6
## Social.Support Freedom.To.Make.Life.Choices
## 3 3
## Generosity Positive.Affect
## 6 3
## Negative.Affect
## 3
# mengisi nilai missing
<- Taiwan %>%
Taiwan mutate(
Life.Ladder = na.fill(Life.Ladder, fill = "extend"),
Log.GDP.Per.Capita = na.fill(Log.GDP.Per.Capita, fill = "extend"),
Social.Support = na.fill(Social.Support, fill = "extend"),
Freedom.To.Make.Life.Choices = na.fill(Freedom.To.Make.Life.Choices, fill = "extend"),
Generosity = na.fill(Generosity, fill = "extend"),
Positive.Affect = na.fill(Positive.Affect, fill = "extend"),
Negative.Affect = na.fill(Negative.Affect, fill = "extend")
)
anyNA(Taiwan)
## [1] FALSE
Setelah semua negara tidak lagi terdapat nilai missing, selanjutnya
data masing-masing negara akan digabungkan kembali dan akan disimpan
pada objek baru dengan nama Happy_EA_balance_2
<-
Happy_EA_balance_2 bind_rows(China, Japan, Mongolia, South_Korea, Taiwan)
pdim(Happy_EA_balance_2)
## Balanced Panel: n = 5, T = 18, N = 90
#memeriksa kembali kelengkapan data
colSums(is.na(Happy_EA_balance_2))
## Country.Name Year
## 0 0
## Life.Ladder Log.GDP.Per.Capita
## 0 0
## Social.Support Freedom.To.Make.Life.Choices
## 0 0
## Generosity Positive.Affect
## 0 0
## Negative.Affect
## 0
unique(Happy_EA_balance$Country.Name)
## [1] China Japan Mongolia
## [4] South Korea Taiwan Province of China
## Levels: China Japan Mongolia South Korea Taiwan Province of China
Dalam proses ini akan dilihat deskripsi singkat untuk masing-masing negara.
summary(Happy_EA_balance_2)
## Country.Name Year Life.Ladder Log.GDP.Per.Capita
## China :18 2005 : 5 Min. :4.454 Min. : 8.696
## Japan :18 2006 : 5 1st Qu.:5.157 1st Qu.: 9.365
## Mongolia :18 2007 : 5 Median :5.854 Median :10.513
## South Korea :18 2008 : 5 Mean :5.671 Mean :10.058
## Taiwan Province of China:18 2009 : 5 3rd Qu.:6.115 3rd Qu.:10.629
## 2010 : 5 Max. :6.947 Max. :10.797
## (Other):60
## Social.Support Freedom.To.Make.Life.Choices Generosity
## Min. :0.7378 Min. :0.4841 Min. :-0.26659
## 1st Qu.:0.8080 1st Qu.:0.6831 1st Qu.:-0.15041
## Median :0.8738 Median :0.7526 Median :-0.05837
## Mean :0.8551 Mean :0.7426 Mean :-0.05856
## 3rd Qu.:0.9017 3rd Qu.:0.8145 3rd Qu.: 0.02133
## Max. :0.9513 Max. :0.9274 Max. : 0.21715
##
## Positive.Affect Negative.Affect
## Min. :0.4832 Min. :0.08274
## 1st Qu.:0.5632 1st Qu.:0.14773
## Median :0.6696 Median :0.17507
## Mean :0.6437 Mean :0.17850
## 3rd Qu.:0.7050 3rd Qu.:0.20653
## Max. :0.7792 Max. :0.33815
##
Dari data beberapa negara asia timur di atas ditemukan informasi:
Selanjutnya akan dibuat plot untuk mengetahui seberapa besar tingkat hubungan antar variabel prediktor terhadap variabel target
%>%
Happy_EA_balance_2 select(-Country.Name, -Year) %>%
cor() %>% ggcorrplot(type = "lower", lab = TRUE)
Dari plot di atas terlihat bahwa variabel yang paling berhubungan dengan
kebahagiaan di beberapa negaar asia timur adalah Log.GDP.Per.Capita
diikuti oleh Positive.Affect, dimana kedua variabel tersebut memiliki
hubungan yang searah terhadap kebahagiaan. Selanjutnya semua variabel
tersebut akan didalami lebih lanjut dengan menggunakan grafik
coplot
.
1. Life.ladder
coplot(Life.Ladder ~ Year|Country.Name,
type = "b",
data = Happy_EA_balance_2,
rows = 1,
col = "blue")
2. Log.GDP.Per.Capita
coplot(Log.GDP.Per.Capita ~ Year|Country.Name,
type = "b",
data = Happy_EA_balance_2,
rows = 1,
col = "blue")
3. Social.Support
coplot(Social.Support ~ Year|Country.Name,
type = "b",
data = Happy_EA_balance_2,
rows = 1,
col = "blue")
4. Freedom.To.Make.Life.Choices
coplot(Freedom.To.Make.Life.Choices ~ Year|Country.Name,
type = "b",
data = Happy_EA_balance_2,
rows = 1,
col = "blue")
5. Generosity
coplot(Generosity ~ Year|Country.Name,
type = "b",
data = Happy_EA_balance_2,
rows = 1,
col = "blue")
6. Positive.Affect
coplot(Positive.Affect ~ Year|Country.Name,
type = "b",
data = Happy_EA_balance_2,
rows = 1,
col = "blue")
7. Negative.Affect
coplot(Negative.Affect ~ Year|Country.Name,
type = "b",
data = Happy_EA_balance_2,
rows = 1,
col = "blue")
Selanjutnya akan dilihat apakah ada efek Individu dan Waktu dengan
menggunakan grafik
plotmeans
untuk melihat
Heterogenitasnya.
1. Heterogenitas antar negara
plotmeans(
~ Country.Name,
Life.Ladder data = Happy_EA_balance_2,
main="Heterogenitas Life.Ladder antar Negara")
dari grafik di atas disimpulkan data individu memiliki
heterogenitas.
2. Heterogenitas antar Waktu
plotmeans(
~ Year,
Life.Ladder data = Happy_EA_balance_2,
main="Heterogenitas Life.Ladder antar Negara")
Dari grafik di atas disimpulkan data tahun memiliki heterogenitas.
Data akan dibagi menjadi data train dan data test. Dikarenakan data panel memiliki informasi keterangan waktu maka pembagian data tidak diambil secara acak melainkan dibagi dengan cara dipisah secara berurutan.
#membuat data train
<- Happy_EA_balance_2 %>% filter(Year != 2022)
ladder_train
#membuat data test
<- Happy_EA_balance_2 %>% filter(Year == 2022)
ladder_test
#memastikan kembali bahwa data train sudah balance dengan melakukan balancing
<-
ladder_train %>%
ladder_train droplevels() %>%
make.pbalanced()
Asumsi Uji nilai VIF > 10: terjadi multicollinearity pada model nilai VIF < 10: tidak terjadi multicollinearity pada model
lm(Life.Ladder ~.-Country.Name -Year, ladder_train) %>% vif()
## Log.GDP.Per.Capita Social.Support
## 2.263397 1.663773
## Freedom.To.Make.Life.Choices Generosity
## 2.560800 2.430170
## Positive.Affect Negative.Affect
## 4.284035 2.228092
Dari uji di atas disimpulkan tidak terjadi multicollinearity pada model
Model Gabungan (CEM)
#membuat Common effect model
<-
cem plm(Life.Ladder ~ Log.GDP.Per.Capita + Social.Support + Positive.Affect,
data = ladder_train,
index = c("Country.Name", "Year"),
model = "pooling")
Model Pengaruh Tetap (FEM)
<-
fem plm(Life.Ladder ~ Log.GDP.Per.Capita + Social.Support + Positive.Affect,
data = ladder_train,
index = c("Country.Name", "Year"),
model = "within")
Uji Chow
Uji chow dilakukan untuk memilih model terbaik antara model gabungan (cem) dengan model fixed effec (fem)
Hipotesis yang diuji adalah sebagai berikut:
H0 ditolak jika P-value < α. Nilai α yang digunakan sebesar 5%.
pooltest(cem,fem)
##
## F statistic
##
## data: Life.Ladder ~ Log.GDP.Per.Capita + Social.Support + Positive.Affect
## F = 4.0844, df1 = 4, df2 = 77, p-value = 0.004692
## alternative hypothesis: unstability
Berdasarkan hasil uji chow diatas, kita peroleh nilai p-value < α. artinya Model terbaik untuk digunakan pada data World Happines adalah fixed effect model (fem).
Model Pengaruh Acak (REM)
<-
rem plm(Life.Ladder ~ Log.GDP.Per.Capita + Social.Support + Positive.Affect,
data = ladder_train,
index = c("Country.Name", "Year"),
model = "random")
Uji Hausman
Uji Hausman dilakukan untuk memilih model terbaik antara model random effect (rem) dengan model fixed effect (fem)
Keputusan tolak H0 (model pengaruh tetap terpilih) apabila nilai p-value < α.
phtest(rem,fem)
##
## Hausman Test
##
## data: Life.Ladder ~ Log.GDP.Per.Capita + Social.Support + Positive.Affect
## chisq = 9.9096, df = 3, p-value = 0.01935
## alternative hypothesis: one model is inconsistent
Berdasarkan hasil uji hausman di atas, kita peroleh nilai p-value < α. artinya Model terbaik untuk digunakan pada data World Happines adalah fixed effect model.
Normalitas
Hipotesis yang diuji adalah sebagai berikut.
H0 ditolak jika P-value < α. Nilai α yang digunakan sebesar 5%.
$residuals %>% shapiro.test() fem
##
## Shapiro-Wilk normality test
##
## data: .
## W = 0.92206, p-value = 7.335e-05
Berdasarkan hasil pengujian Normalitas diperoleh nilai p-value < 0.05, artinya sisaan tidak menyebar normal. Walaupun demikian, penggunaan model masih bisa tetap dilanjutkan.
Homogenitas
Hipotesis yang diuji adalah sebagai berikut.
H0 ditolak jika P-value < α. Nilai α yang digunakan sebesar 5%.
%>% bptest() fem
##
## studentized Breusch-Pagan test
##
## data: .
## BP = 1.2401, df = 3, p-value = 0.7434
Berdasarkan hasil pengujian homogenitas diperoleh nilai p-value > 0.05, artinya sisaan memiliki ragam yang homogen.
Autokorelasi
Hipotesis yang diuji adalah sebagai berikut.
H0 ditolak jika P-value < α. Nilai α yang digunakan sebesar 5%.
$residuals %>% Box.test(type = "Ljung-Box") fem
##
## Box-Ljung test
##
## data: .
## X-squared = 12.671, df = 1, p-value = 0.0003713
Berdasarkan hasil pengujian autokorelasi diperoleh nilai p-value < 0.05, artinya terjadi permasalahan autokorelasi antar sisaan.
1. Koefisien
summary(fem)
## Oneway (individual) effect Within Model
##
## Call:
## plm(formula = Life.Ladder ~ Log.GDP.Per.Capita + Social.Support +
## Positive.Affect, data = ladder_train, model = "within", index = c("Country.Name",
## "Year"))
##
## Balanced Panel: n = 5, T = 17, N = 85
##
## Residuals:
## Min. 1st Qu. Median 3rd Qu. Max.
## -0.560074 -0.154161 -0.007793 0.121149 1.038890
##
## Coefficients:
## Estimate Std. Error t-value Pr(>|t|)
## Log.GDP.Per.Capita 0.86556 0.15406 5.6182 2.944e-07 ***
## Social.Support 3.41926 1.19979 2.8499 0.005609 **
## Positive.Affect 2.30139 1.02821 2.2382 0.028094 *
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Total Sum of Squares: 9.9668
## Residual Sum of Squares: 4.5325
## R-Squared: 0.54524
## Adj. R-Squared: 0.5039
## F-statistic: 30.7739 on 3 and 77 DF, p-value: 3.5208e-13
2. Mengekstrak informasi Efek dari model fix
fixef(fem)
## China Japan Mongolia
## -7.2336 -7.8178 -7.2786
## South Korea Taiwan Province of China
## -7.2764 -7.6335
<- predict(fem, ladder_test, na.fill = F) pred
Untuk menguji apakah model yang dibangun sudah baik dalam memprediksi
data baru maka akan dievaluasi dengan menggunakan nilai error, salah
satu metric eror yang biasa digunakan adalah MAPE. Kita dapat
melakukannya menggunakan fungsi MAPE()
dengan
parameter:
MAPE(y_pred = pred,
y_true = ladder_test$Life.Ladder)
## [1] 0.05425516
Berdasarkan hasil pengujian MAPE terlihat bahwa tingkat kesalahan prediski model fem dalam memprediksi nilai baru adalah sebesar 5,42%, artinya model sudah cukup baik untuk digunakan dalam memprediksi data yang baru.
Dari serangkaian proses analisis yang telah dilakukan, dapat diambil kesimpulan sebagai berikut: