Search This Blog

Sunday, February 9, 2020

Partial Least Squares (PLS) Path Modeling dengan R

Partial Least Squares Path Modeling (PLS-PM) merupakan salah satu metode analisis data statistik yang termasuk di dalamnya mengunakan pendekatan pengolahan data dengan PLS-SEM (Sanchez, 2013). Pengolahan data statistik PLS-PM dalam pemrograman R menggunakan package plspm yang dikembangkan oleh Sanchez beserta tim yang diluncurkan pada tahun 2009. Anda mungkin perlu menginstal terlebih dahulu package plspm jika belum terinstal di RStudio anda.

Artikel kali ini akan membahas proses PLS-PM disertai dengan contoh.

Tahapan proses PLS-PM ada 3 (tiga), sebagai berikut:

1. Measurement Model Assessment, akan menguji tiga aspek pada outer model yang meliputi uji:
  • Unidimensionality dari indikator tiap variabel, 
  • Pengujian keeratan hubungan dan reliability indikator dengan variabel nya melalui outer loading dan communality test, di mana communality = loading2,
  • Pengujian cross-loadings indikator dari tiap variabel dalam model.
2. Structural Model Assessment, akan menguji inner model untuk:
  • Persamaan regresi tiap variabel endogen
  • Koefisien determinasi R2
  • Redundancy, kemampuan variabel independent mengukur variasi variabel endogen nya
  • the Goodness-of-Fit (GoF) dari model.
3. Bootstrapping, untuk pengujian signifikansi pengaruh variabel independent ke variabel endogen.

Berikut ini contoh langkah pemrograman R untuk PLS-PM, kita memiliki model seperti pada gambar di bawah ini,


dengan outer model dan inner model seperti gambar di bawah ini



kita akan menggunakan data yang diakses dari website pengembang package plspm, silahkan klik file education.csv untuk mendownload data . Seperti biasa, terlebih dahulu kita import data ke dalam R, akan ada 26 kolom dan 181 data sample pada file education.csv.

Tahap Persiapan Model

Menggunakan baris perintah seperti di bawah ini,

#memanggil package plspm
> library(plspm)

#Menyusun matrik inner model, Advising pada baris pertama, dan seterusnya.
#angka 1 artinya ada pengaruh, contoh Satisfaction <- c(1, 1, 1, 0) artinya variabel satisfaction mendapat pengaruh dari 3 variabel
> Advising <- c(0, 0, 0, 0)
> Tutoring <- c(0, 0, 0, 0)
> Value <- c(1, 1, 0, 0)
> Satisfaction <- c(1, 1, 1, 0)

#Kita beri nama matrik "innerModelku", dan urutan dalam fungsi rbind() sesuai urutan baris matrik di atas
> innerModelku <- rbind(Advising, Tutoring, Value, Satisfaction)
> colnames(innerModelku) <- rownames(innerModelku)

#Jalankan perintah di bawah untuk melihat gambar model kita
> innerplot(innerModelku, box.size = 0.1)

maka di Windows Plots akan muncul tampilan seperti di bawah ini,

Gambar model

Lanjutkan pemrograman kita dengan perintah di bawah ini,

#Membangun outer model dengan nama "outerModelku"
#angka dalam list sesuai urutan kolom dari tabel education
#Variabel Advising dalam tabel education indikatornya berada pada kolom 5-8
> outerModelku <- list(5:8, 9:12, 13:16, 17:19)

#Mode "A" artinya model variabel kita adalah reflective dan kita beri nama "modenya"
> modenya <- rep("A", 4)

#Menjalankan fungsi plspm()
> plskita <- plspm(education, innerModelku, outerModelku, modes = modenya)

Measurement Model Assessment

*Unidimensionality, salah satunya dapat di lihat dari nilai Cronbach alpha, dengan perintah di bawah ini,

> plskita$unidim
ModeMVsC.alphaDG.rhoeig.1steig.2nd
AdvisingA40.92826650.94920693.295520.3429636
TutoringA40.85453820.90207582.7914390.5376909
ValueA40.91030540.93713173.15430.5090336
SatisfactionA30.90249560.93898072.5105830.2699962

dari tabel di atas tampak bahwa, nilai Cronbach alpha utk semua variabel berada di atas 0.7, hal ini menunjukkan bahwa indikator mewakili dengan baik variabel yang diukurnya.

*Pengujian keeratan hubungan dan reliability indikator dengan variabel nya melalui outer loading dan communality test, dengan perintah di bawah ini,

> plskita$outer_model
nameblockweightloadingcommunalityredundancy
1adv.compAdvising0.26515380.90605290.82093180
2adv.accesAdvising0.25756090.85662950.73381410
3adv.commAdvising0.2877750.91646940.83991620
4adv.qualAdvising0.29017050.9490470.90069010
5tut.profTutoring0.30210180.87713720.76936970
6tut.schedTutoring0.31533660.84659750.71672730
7tut.studTutoring0.29762270.77467070.60011470
8tut.qualTutoring0.28313930.83878330.70355730
9val.develValue0.25656490.89131840.79444840.2804875
10val.deciValue0.27085180.88570630.78447570.2769666
11val.meetValue0.27193590.90510280.81921110.2892302
12val.infoValue0.32931770.86631810.75050710.2649736
13sat.gladSatisfaction0.33431540.89899090.80818460.505913
14sat.expeSatisfaction0.3589320.91409940.83557770.5230607
15sat.overSatisfaction0.39907390.93053930.86590340.5420442

tabel hasil uji di atas menunjukkan nilai loading dari setiap indikator berada di atas 0.7 dan nilai communality di atas 0.5, mengartikan bahwa setiap indikator memiliki hubungan dan reliability yang bagus untuk mengukur variabelnya masing-masing.

*Pengujian cross-loadings, dengan perintah di bawah ini,

> plskita$crossloadings
nameblockAdvisingTutoringValueSatisfaction
1adv.compAdvising0.90605290.40279570.45636020.5938755
2adv.accesAdvising0.85662950.3848430.45180180.5683614
3adv.commAdvising0.91646940.44501730.51345310.6263815
4adv.qualAdvising0.9490470.47297550.49910960.6502128
5tut.profTutoring0.47932890.87713720.41147770.4404338
6tut.schedTutoring0.34528450.84659750.43886410.4503704
7tut.studTutoring0.34873870.77467070.40305770.4362253
8tut.qualTutoring0.40175340.83878330.36758910.4308519
9val.develValue0.44235940.36416670.89131840.5593182
10val.deciValue0.46484830.4302370.88570630.546817
11val.meetValue0.40271960.40855670.90510280.6363958
12val.infoValue0.54975830.50307640.86631810.700314
13sat.gladSatisfaction0.54931520.45731260.57772780.8989909
14sat.expeSatisfaction0.5808150.47509880.64510320.9140994
15sat.overSatisfaction0.70329790.50988290.67807230.9305393

tabel uji di atas menunjukkan indikator dari setiap variabel mengukur dengan baik variabelnya, terlihat dari tabel loading masing-masing variabel lebih tinggi dibanding di variabel lainnya, terlihat dari angka-angka yang dibold. Hasil pengolahan data dapat kita lihat dalam bagan model kita dengan perintah,

> plot(plskita)

dan akan ditampilkan gambar di bawah ini di windows Plot,



Structural Model Assessment

*Persamaan regresi tiap variabel endogen, dengan perintah di bawah ini,

> plskita$inner_model
$Value
EstimateStd. Errort valuePr(>|t|)
Intercept -1.127154e-170.06028679-1.869653e-16 1.000000e+00
Advising3.863951e-010.068351645.653048e+006.168069e-08
Tutoring3.046544e-010.068351644.457164e+001.465845e-05
$Satisfaction
EstimateStd. Errort valuePr(>|t|)
Intercept-7.479350e-180.04596812-1.627073e-161.000000e+00
Advising3.815310e-010.056602906.740485e+002.145682e-10
Tutoring1.403484e-010.054948962.554159e+001.148710e-02
Value4.247845e-010.057151107.432656e+004.377194e-12

*Koefisien determinasi R2, dengan perintah di bawah ini,

> plskita$inner_summary
TypeR2Block_
Communality
Mean_
Redundancy
AVE
AdvisingExogenous00.823838100.8238381
TutoringExogenous00.697442300.6974423
ValueEndogenous0.35305950.78716060.27791450.7871606
SatisfactionEndogenous0.62598690.83655530.52367260.8365553

Nilai  Rdi atas 0.6 menunjukkan bahwa 60% lebih dependent telah dapat dijelaskan oleh variabel independent-nya.

*Redundancy, dihitung dengan yang sama untuk  R2, nilai mean_redundancy yang semakin besar menunjukkan kemampuan variabel independent semakin mampu mengukur variasi variabel endogen nya.

*the Goodness-of-Fit (GoF) model, dihitung dengan perintah,

> plskita$gof
[1] 0.6190682

Semakin besar nilai GoF menunjukkan semakin bagusnya kinerja dan kualitas secara umum dari model pengukuran baik inner maupun outer model.

Bootstrapping

Langkah berikutnya PLS-PM adalah pengujian bootstraping, dilakukan untuk menguji signifikansi pengaruh dari satu variabel ke variabel lainnya, dengan perintah di bawah ini,

> bootstrapnya = plspm(education, innerModelku, outerModelku, modes = modenya, boot.val = TRUE, br = 200)
> bootstrapnya$boot$paths
OriginalMean.BootStd.Errorperc.025perc.975
Advising -> Value0.38640.38290.06690.25900.5148
Advising -> Satisfaction0.38150.36450.08680.20980.5135
Tutoring -> Value0.30470.30960.06660.18420.4291
Tutoring -> Satisfaction0.14030.13630.05750.01590.2543
Value -> Satisfaction0.42480.43390.07410.30070.5882

dari pengujian pada tabel di atas tampak bahwa tidak ada nilai 0 di antara lower percentile (perc.025) dan upper percentiles (perc.975) menurut Guderdan et al. (2008) dan Garson (2016) jika tidak ada nilai 0 di antara range ini maka dapat dikatakan signifikan, kita lihat salah satu pengaruh variabel Advising pada Value dengan nilai perc.025 dan perc.975 adalah antara 0.2590-0.5148, tidak ada nilai 0 di antara range ini, artinya Advising berpengaruh signifikan pada Value, dari tabel di atas dapat dikatakan bahwa 5 (lima) arah pengaruh dari variabel independent ke variabel dependent adalah signifikan.

References:

Garson, G. D. 2016. Partial Least Squares: Regression and Structural Equation Models. Asheboro, NC: Statistical Associates Publishers.

Gudergan, Siegfried P. & Ringle, Christian M. & Wende, Sven & Will, Alexander, 2008. "Confirmatory tetrad analysis in PLS path modeling," Journal of Business Research, Elsevier, vol. 61(12), pages 1238-1249, December.

Sanchez, G. 2013. PLS Path Modeling with R, Trowchez Editions. Berkeley, 2013. http://www.gastonsanchez.com/PLS Path Modeling with R.pdf

Data education.csv, http://www.gastonsanchez.com/education.csv

No comments:

Post a Comment