Oleh : Purwoko Haryadi Santoso
Prodi : Penelitian dan Evaluasi Pendidikan
Mata kuliah : Statistik Multivariat
Pada bagian ini kita menentukan lokasi folder yang digunakan untuk menyimpan file R, data, images, atau beberapa file lainnya yang berhubungan dengan pekerjaan kita di dalam R.
dir="D:/DOCUMENTS/Kuliah Strata-3/2. Kuliah Semester 1/5. Statistik Multivariat (Kam, 07.30)/UAS Multivariat/path analysis"
setwd(dir)
Theory of planned behavior (TPB) yang diajukan Ajzen (1991) adalah model teoretik yang menjelaskan bahwa perilaku (behavior) seseorang dipengaruhi oleh niatnya (intention) sedangkan niat seseorang ditentukan oleh sikap (attitude), norma yang berlaku (norms), dan kendali diri (control) yang dimilikinya. Sedangkan menurut TPB tidak ada pengaruh langsung antara attitude, norms, dan control terhadap behavior. Artinya terdapat pengaruh langsung attitude, norms, control terhadap intention dan intention terhadap behavior. Kemudian, terdapat pengaruh tidak langsung attitude, norms, control terhadap behavior melalui variabel mediasi yaitu intention. Penelitian ini akan membuktikan kebenaran teori TPB dengan menggunakan analisis jalur. Gambar di bawah merepresentasikan diagram jalur dari Theory of Planned Behavior.
Pada bagian ini, kita menentukan letak dimana file data berada. Dalam hal ini file data disimpan dalam format “PlannedBehavior.csv”. Karena kita telah menentukan letak direktori kerja pada “D:/path analysis” maka kita cukup mengetik “data/PlannedBehavior.csv” saja.
library(readr)
df <- read_csv("data/PlannedBehavior.csv", show_col_types = FALSE)
Bagian di bawah ini merupakan pratinjau 6 data pertama yang digunakan dimana terdapat 5 variabel dimana 3 variabel eksogen (attitude, norms, control) dan 2 variabel endogen (intention & behahior)
head(df)
Pada bagian ini, ditampilkan statistik deskriptif setiap variabel di dalam dataset. Dapat dilihat bahwa terdapat 100 baris data (dilihat pada kolom n). Kelima variabel memiliki skor dengan skala antara 1 sampai 6 dapat dilihat dari kolom min dan max. Terdapat beberapa variabel memiliki standar deviasi yang hampir mirip seperti attitude (0.77) dan behavior (0.73) serta norms (1.06) dan control (1.01).
library(psych)
describe(df)
Untuk memeriksa normalitas data, kita bisa tinjau dari plot histogram dan boxplot-nya. Berdasarkan plot distribusi histogram, terdapat 3 variabel yang mendekati distribusi normal (norms, control, intention). Sedangkan untuk attitude dan behavior memiliki skewness negatif.
multi.hist(df)
Selain histogram, kita juga bisa menggunakan boxplot untuk mengambarkan distribusi data. Batas garis putus-putus menunjukkan range dari setiap data variabel yaitu (min 1 dan max 6). Kemudian, “box” yang dibuat menggambarkan letak Q3, Q2 (median, garis tebal di tengah), dan Q1. Outlier (pencilan) biasanya akan terdeteksi jika terdapat titik-titik data diluar “box” ini. Berdasarkan boxplot yang ditampilkan, tidak terdapat pencilan yang muncul di dalam data attitude dan intention.
boxplot(df)
Sama seperti asumsi regresi linear yaitu asumsi yang umum digunakan adalah residu yang berdistribusi normal dan ada beberapa asumsi tambahan yang harus dipenuhi dalam analisis jalur antara lain :
1. Variabel data harus memiliki skala pengukuran yang kontinyu (interval atau rasio).
2. Variabel data dalam model bebas kesalahan pengukuran (reliabel).
3. Model hubungan bersifat rekursif (satu arah dan tidak berkebalikan).
4. Residu tidak berhubungan satu sama lain.
5. Hubungan arahnya adalah linear dan additif.
library(corrplot)
corrplot(cor(df), method="number")
Pada model A (intention model), kita ingin memodelkan pengaruh langsung attitude, norms, dan control terhadap intention melalui pendekatan regresi linear berganda.
specmod <- "intention ~ attitude + norms + control"
int.model <- lm(specmod, data=df)
summary(int.model)
Call:
lm(formula = specmod, data = df)
Residuals:
Min 1Q Median 3Q Max
-1.80282 -0.52734 -0.06018 0.51228 1.85202
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 0.58579 0.23963 2.445 0.0154 *
attitude 0.35232 0.05866 6.006 9.13e-09 ***
norms 0.15250 0.05979 2.550 0.0115 *
control 0.27502 0.05862 4.692 5.09e-06 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 0.7356 on 195 degrees of freedom
Multiple R-squared: 0.369, Adjusted R-squared: 0.3593
F-statistic: 38.01 on 3 and 195 DF, p-value: < 2.2e-16
library(QuantPsyc)
lm.beta(int.model)
attitude norms control
0.3701939 0.1515933 0.2907633
Pada model B (behavior model), kita ingin memodelkan pengaruh langsung intention terhadap behavior melalui pendekatan regresi linear berganda.
specmod <- "behavior ~ intention"
bhv.model <- lm(specmod, data=df)
summary(bhv.model)
Call:
lm(formula = specmod, data = df)
Residuals:
Min 1Q Median 3Q Max
-2.03770 -0.55555 0.06686 0.63565 1.75678
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 1.74252 0.20377 8.552 3.37e-15 ***
intention 0.45338 0.06496 6.979 4.43e-11 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 0.8401 on 197 degrees of freedom
Multiple R-squared: 0.1982, Adjusted R-squared: 0.1942
F-statistic: 48.71 on 1 and 197 DF, p-value: 4.427e-11
lm.beta(bhv.model)
intention
0.44523
Model A (Intention Model)
sqrt(1-summary(int.model)$r.squared)
[1] 0.7943479
Model B (Behavior Model)
sqrt(1-summary(bhv.model)$r.squared)
[1] 0.8954163
Latent Variable Analysis atau “lavaan” adalah library open source yang dikembangkan dalam pemrograman R. Library ini digunakan untuk mengerjakan berbagai macam analisis multivariat termasuk analisis jalur, CFA, SEM, dan growth curve model (dokumentasi lebih lengkapnya dapat dilihat di lavaan.ugent.be).
library(lavaan)
specmod <- "
# Jalur langsung model A dan B (pada regresi) dianalisis bersamaan dengan kovariansnya juga
intention ~ attitude + norms + control
behavior ~ intention
# Kovarians (korelasi antar variabel eksogen)
attitude ~~ norms + control
norms ~~ control
"
fitmod <- sem(specmod, data=df)
summary(fitmod, standardized = TRUE)
lavaan 0.6-9 ended normally after 17 iterations
Estimator ML
Optimization method NLMINB
Number of model parameters 12
Number of observations 199
Model Test User Model:
Test statistic 2.023
Degrees of freedom 3
P-value (Chi-square) 0.568
Parameter Estimates:
Standard errors Standard
Information Expected
Information saturated (h1) model Structured
Regressions:
Estimate Std.Err z-value P(>|z|) Std.lv Std.all
intention ~
attitude 0.352 0.058 6.068 0.000 0.352 0.370
norms 0.153 0.059 2.577 0.010 0.153 0.152
control 0.275 0.058 4.740 0.000 0.275 0.291
behavior ~
intention 0.453 0.065 7.014 0.000 0.453 0.445
Covariances:
Estimate Std.Err z-value P(>|z|) Std.lv Std.all
attitude ~~
norms 0.200 0.064 3.128 0.002 0.200 0.227
control 0.334 0.070 4.748 0.000 0.334 0.357
norms ~~
control 0.220 0.065 3.411 0.001 0.220 0.249
Variances:
Estimate Std.Err z-value P(>|z|) Std.lv Std.all
.intention 0.530 0.053 9.975 0.000 0.530 0.631
.behavior 0.699 0.070 9.975 0.000 0.699 0.802
attitude 0.928 0.093 9.975 0.000 0.928 1.000
norms 0.830 0.083 9.975 0.000 0.830 1.000
control 0.939 0.094 9.975 0.000 0.939 1.000
fitmeasures(fitmod)
npar fmin chisq df pvalue
12.000 0.005 2.023 3.000 0.568
baseline.chisq baseline.df baseline.pvalue cfi tli
182.295 10.000 0.000 1.000 1.019
nnfi rfi nfi pnfi ifi
1.019 0.963 0.989 0.297 1.005
rni logl unrestricted.logl aic bic
1.006 -1258.517 -1257.506 2541.035 2580.555
ntotal bic2 rmsea rmsea.ci.lower rmsea.ci.upper
199.000 2542.538 0.000 0.000 0.103
rmsea.pvalue rmr rmr_nomean srmr srmr_bentler
0.735 0.017 0.017 0.019 0.019
srmr_bentler_nomean crmr crmr_nomean srmr_mplus srmr_mplus_nomean
0.019 0.023 0.023 0.019 0.019
cn_05 cn_01 gfi agfi pgfi
769.591 1116.785 0.996 0.980 0.199
mfi ecvi
1.002 0.131
library(semPlot)
Registered S3 method overwritten by 'htmlwidgets':
method from
print.htmlwidget tools:rstudio
Registered S3 method overwritten by 'data.table':
method from
print.data.table
semPaths(fitmod, "std", rotation=2, layout = "tree2", curvature = 2, nCharNodes = 0, nDigits = 3,
sizeMan = 10, sizeInt = 5, sizeLat = 5, edge.label.cex=1.2, exoVar = FALSE, fade=FALSE)
Terdapat lima variabel unique yaitu intention, attitude, norms, control, behavior.
Untuk mengetahui berapa komponen kovarians dan varians unik dalam matriks kovarians (korelasi), kelima variabel ini adalah lower diagonal dari matriks kovarians/ korelasi.
Formula untuk menentukan jumlah informasi unik non redundant = V(V+1)/2 (Meyers, Gamst, & Guarino, 2016).
dimana V = jumlah variabel di dalam data = 5
Maka, jumlah informasi unik non redundant dalam model = 15
Jumlah parameter = menghitung parameter estimate antara lain directional relation (4), error terms(2), varians (3) dan kovarians variabel eksogen (3) = 12 (lihat tabel di atas “number of model parameters”)
derajat kebebasan = 15 - 12 = 3
Lihat “Degrees of freedom” pada model test user output diatas
Nilai ini lebih besar daripada nol (0) yang berarti bahwa model overidentified artinya kita bisa menginterpretasikan model fit dengan beberapa indeks fitting di bawah ini.
Berdasarkan kelima indikator evaluasi ini menyimpulkan bahwa model jalur kita sudah fit terhadap data yang tersedia. Jika kemungkinan model masih belum fit, kita harus kembali ke tahap spesifikasi parameter model dan memotong jalur yang tidak signifikan.
Lihat p-value nya jika < 0.05 berarti berpengaruh secara signifikan.
Nilai koefisien jalur (beta) lihat pada Std.all masing-masing variabel prediktor.
Kemudian errornya lihat pada Variances pada Std.all. Agar nilainya sama dengan error pada pendekatan regresi linear carilah akar daripadanya.
R-squared menjelaskan seberapa besar varians variabel bebas menentukan varians variabel terikat.