class: inverse, middle, title-slide, spaced class: title-slide, spaced <img src="libs/unair.png" style="width:15%;" class="fancyimage"/> <img src="libs/STUA.png" style="width:23%;" class="fancyimage"/> <img src="libs/ina-logo.jpg" style="width:7%;" class="fancyimage"/> <img src="libs/igdore.png" style="width:23%;" class="fancyimage"/> # Multigroup Structural Equation Modeling (SEM) ## Menggunakan `JASP`: Bagian 4 - *Confirmatory Factor Analysis* <br> ### <b>Rizqy Amelia Zein</b> * Dosen, [Fakultas Psikologi, Universitas Airlangga](https://psikologi.unair.ac.id) * Anggota, [#SainsTerbuka Airlangga](https://sainsterbukaua.github.io/) <svg style="height:0.8em;top:.04em;position:relative;" viewBox="0 0 512 512"><path d="M256 48c114.953 0 208 93.029 208 208 0 114.953-93.029 208-208 208-114.953 0-208-93.029-208-208 0-114.953 93.029-208 208-208m0-40C119.033 8 8 119.033 8 256s111.033 248 248 248 248-111.033 248-248S392.967 8 256 8zm0 56C149.961 64 64 149.961 64 256s85.961 192 192 192 192-85.961 192-192S362.039 64 256 64zm0 44c19.882 0 36 16.118 36 36s-16.118 36-36 36-36-16.118-36-36 16.118-36 36-36zm117.741 98.023c-28.712 6.779-55.511 12.748-82.14 15.807.851 101.023 12.306 123.052 25.037 155.621 3.617 9.26-.957 19.698-10.217 23.315-9.261 3.617-19.699-.957-23.316-10.217-8.705-22.308-17.086-40.636-22.261-78.549h-9.686c-5.167 37.851-13.534 56.208-22.262 78.549-3.615 9.255-14.05 13.836-23.315 10.217-9.26-3.617-13.834-14.056-10.217-23.315 12.713-32.541 24.185-54.541 25.037-155.621-26.629-3.058-53.428-9.027-82.141-15.807-8.6-2.031-13.926-10.648-11.895-19.249s10.647-13.926 19.249-11.895c96.686 22.829 124.283 22.783 220.775 0 8.599-2.03 17.218 3.294 19.249 11.895 2.029 8.601-3.297 17.219-11.897 19.249z"/></svg> * Relawan, [INA-Rxiv](https://inarxiv.id) * Researcher-in-training, [Institute for Globally Distributed Open Research and Education (IGDORE)](https://igdore.org/) --- # Analisis faktor .pull-left[ * Awalnya dikembangkan oleh Charles Spearman (1904) untuk menyelidiki [*g factor theory of intelligence*](https://en.wikipedia.org/wiki/G_factor_(psychometrics)) * Terdiri dari: - *Exploratory factor analysis* (EFA) - *Confirmatory factor analysis* (CFA) * Analisis faktor digunakan untuk menguji model *common variance* * Mengasumsikan bahwa dua atau lebih *observed variable* memiliki *shared/common variance* (*commonality* atau *common factor*) <svg style="height:0.8em;top:.04em;position:relative;" viewBox="0 0 512 512"><path d="M256 8c137 0 248 111 248 248S393 504 256 504 8 393 8 256 119 8 256 8zm-28.9 143.6l75.5 72.4H120c-13.3 0-24 10.7-24 24v16c0 13.3 10.7 24 24 24h182.6l-75.5 72.4c-9.7 9.3-9.9 24.8-.4 34.3l11 10.9c9.4 9.4 24.6 9.4 33.9 0L404.3 273c9.4-9.4 9.4-24.6 0-33.9L271.6 106.3c-9.4-9.4-24.6-9.4-33.9 0l-11 10.9c-9.5 9.6-9.3 25.1.4 34.4z"/></svg> ditunjukkan dengan ***factor loading*** ] .pull-right[ ![](https://media.giphy.com/media/l0IyjeA5mmMZjhyPm/giphy.gif) ] --- # EFA vs CFA | EFA | CFA | | --- | --- | | Mencari model yang cocok menggambarkan data, sehingga peneliti **mengeksplorasi berbagai pilihan model** yang cocok kemudian mencari rasionalisasi teoritisnya | Menguji hipotesis yang **sudah ditentukan sebelumnya**, sehingga peneliti ingin tahu apakah hipotesisnya didukung oleh data | | Jumlah faktor belum diketahui sampai peneliti melakukan analisisnya | Jumlah faktor sudah ditentukan sebelum mengambil data | | Peneliti **tidak memiliki** model yang dihipotesiskan *a priori* | Peneliti **sudah memiliki** model hipotesis yang ditentukan *a priori* | --- # *Confirmatory factor analysis* * Menyediakan solusi untuk mengkoreksi bias karena *measurement error* ketika mengestimasi korelasi antar-variabel * Cara kerjanya adalah dengan membandingkan *variance-covariance matrix* yang dihipotesiskan dengan *variance-covariance matrix* pada data (sampel) * **Perhatian**🔊 - **Sangat tidak disarankan** untuk melakukan EFA kemudian CFA pada **sampel yang sama** - Karena *generating hypothesis* dengan *testing hypothesis* adalah dua proses yang berbeda yang **tidak seharusnya** dilakukan pada sampel yang sama - Kalau hal tsb dilakukan, maka tentu saja peneliti akan mendapatkan hasil yang 'sesuai prediksinya' - Ingat [Texas Sharpshooter Fallacy](https://en.wikipedia.org/wiki/Texas_sharpshooter_fallacy#:~:targetText=The%20Texas%20sharpshooter%20fallacy%20is,a%20false%20conclusion%20is%20inferred.) --- class: middle, center ![](https://i0.wp.com/www.bayesianspectacles.org/wp-content/uploads/2018/01/TexasSharpShooter.png?fit=357%2C300&ssl=1) --- # [*Constraining parameter* model](https://psycnet.apa.org/record/2008-06808-005) * **Membatasi/menentukan varians** untuk setiap **variabel/faktor laten** - Dilakukan untuk mengeluarkan ***standardised estimates*** - ...yang interpretasinya sama seperti *standardised estimates* di regresi linear - *Factor loading* di *z-score*kan - Sehingga *default*nya, *mean* variabel laten = 0, *variance* = 1 * Membatasi/menentukan ***error covariance*** untuk setiap variabel/faktor laten - Dilakukan untuk **menentukan *error variance*** --- # Jenis-jenis model pengukuran * *Congeneric* - Model yang paling moderat dan *default* di berbagai perangkat lunak SEM - Asumsinya, **skala, *error variance*, dan *factor loading* boleh berbeda (dibebaskan)** - **Teknik reliabilitas skala** yang mengasumsikan model pengukuran *congeneric* <svg style="height:0.8em;top:.04em;position:relative;" viewBox="0 0 512 512"><path d="M256 8c137 0 248 111 248 248S393 504 256 504 8 393 8 256 119 8 256 8zm-28.9 143.6l75.5 72.4H120c-13.3 0-24 10.7-24 24v16c0 13.3 10.7 24 24 24h182.6l-75.5 72.4c-9.7 9.3-9.9 24.8-.4 34.3l11 10.9c9.4 9.4 24.6 9.4 33.9 0L404.3 273c9.4-9.4 9.4-24.6 0-33.9L271.6 106.3c-9.4-9.4-24.6-9.4-33.9 0l-11 10.9c-9.5 9.6-9.3 25.1.4 34.4z"/></svg> ω, McDonald's ω, ω total (ω<sub>*t*</sub>), Revelle's ω, Raju's *coefficient*, *composite reliability*. * *Tau equivalence* - Model yang sedikit lebih rigid daripada *congeneric* - Asumsinya, **skala dan *error variance* boleh berbeda (dibebaskan)**, namun ***factor loading* harus sama (dibatasi)** - Ketika asumsi *tau equivalence* dipenuhi, maka [Cronbach's α dapat digunakan](https://www.ncbi.nlm.nih.gov/pubmed/28557467) - Selain Cronbach's α, **teknik reliabilitas skala** yang mengasumsikan model pengukuran *tau equivalence* <svg style="height:0.8em;top:.04em;position:relative;" viewBox="0 0 512 512"><path d="M256 8c137 0 248 111 248 248S393 504 256 504 8 393 8 256 119 8 256 8zm-28.9 143.6l75.5 72.4H120c-13.3 0-24 10.7-24 24v16c0 13.3 10.7 24 24 24h182.6l-75.5 72.4c-9.7 9.3-9.9 24.8-.4 34.3l11 10.9c9.4 9.4 24.6 9.4 33.9 0L404.3 273c9.4-9.4 9.4-24.6 0-33.9L271.6 106.3c-9.4-9.4-24.6-9.4-33.9 0l-11 10.9c-9.5 9.6-9.3 25.1.4 34.4z"/></svg> Formula Rulon, KR-20, Flanagan-Rulon Formula, Guttman's λ<sub>3</sub>, Guttman's λ<sub>4</sub> dan Hoyt *method*. * Paralel - Model yang paling rigid - Asumsinya, **skala, *error variance*, dan *factor loading* harus sama (dibatasi)** - **Teknik reliabilitas skala** yang mengasumsikan model pengukuran paralel <svg style="height:0.8em;top:.04em;position:relative;" viewBox="0 0 512 512"><path d="M256 8c137 0 248 111 248 248S393 504 256 504 8 393 8 256 119 8 256 8zm-28.9 143.6l75.5 72.4H120c-13.3 0-24 10.7-24 24v16c0 13.3 10.7 24 24 24h182.6l-75.5 72.4c-9.7 9.3-9.9 24.8-.4 34.3l11 10.9c9.4 9.4 24.6 9.4 33.9 0L404.3 273c9.4-9.4 9.4-24.6 0-33.9L271.6 106.3c-9.4-9.4-24.6-9.4-33.9 0l-11 10.9c-9.5 9.6-9.3 25.1.4 34.4z"/></svg> Spearman-Brown's Formula, Standardised α. --- class: center, middle <center><img src="libs/congeneric.png" style="width=100%;" class="fancyimage"/></center><br> --- class: center, middle <center><img src="libs/tau.png" style="width=100%;" class="fancyimage"/></center><br> --- class: center, middle <center><img src="libs/paralel.png" style="width=100%;" class="fancyimage"/></center><br> --- # Reflektif vs Formatif * Reflektif - **Variabel laten menjelaskan** mengapa **variabel indikator bervariasi** - Misalnya <svg style="height:0.8em;top:.04em;position:relative;" viewBox="0 0 512 512"><path d="M256 8c137 0 248 111 248 248S393 504 256 504 8 393 8 256 119 8 256 8zm-28.9 143.6l75.5 72.4H120c-13.3 0-24 10.7-24 24v16c0 13.3 10.7 24 24 24h182.6l-75.5 72.4c-9.7 9.3-9.9 24.8-.4 34.3l11 10.9c9.4 9.4 24.6 9.4 33.9 0L404.3 273c9.4-9.4 9.4-24.6 0-33.9L271.6 106.3c-9.4-9.4-24.6-9.4-33.9 0l-11 10.9c-9.5 9.6-9.3 25.1.4 34.4z"/></svg> individu dengan intelegensi yang tinggi akan mendapatkan nilai yang berbeda dalam tes matematika - Dalam hal ini, variasi **intelegensi**lah yang menjelaskan mengapa nilai tes matematika bervariasi - Biasanya mengasumsikan bahwa **korelasi antar-variabel indikator = 0**, karena seharusnya ketika (misalnya) nilai tes matematika dan fisika berkorelasi, korelasi tersebut **dijelaskan oleh faktor laten yang sama (intelegensi)** * Formatif - **Variabel *observed* menjelaskan** mengapa **variabel laten bervariasi** - Misalnya <svg style="height:0.8em;top:.04em;position:relative;" viewBox="0 0 512 512"><path d="M256 8c137 0 248 111 248 248S393 504 256 504 8 393 8 256 119 8 256 8zm-28.9 143.6l75.5 72.4H120c-13.3 0-24 10.7-24 24v16c0 13.3 10.7 24 24 24h182.6l-75.5 72.4c-9.7 9.3-9.9 24.8-.4 34.3l11 10.9c9.4 9.4 24.6 9.4 33.9 0L404.3 273c9.4-9.4 9.4-24.6 0-33.9L271.6 106.3c-9.4-9.4-24.6-9.4-33.9 0l-11 10.9c-9.5 9.6-9.3 25.1.4 34.4z"/></svg> gengsi sebuah mobil ditentukan oleh usia mobil, kondisi, harga, dan intensitas pemakaian - Korelasi antara variabel *observed* tidak diketahui. Bisa jadi = 0, positif, atau negatif - Biasanya digunakan untuk menentukan indeks pada konstruk yang *orthogonal* (contoh <svg style="height:0.8em;top:.04em;position:relative;" viewBox="0 0 512 512"><path d="M256 8c137 0 248 111 248 248S393 504 256 504 8 393 8 256 119 8 256 8zm-28.9 143.6l75.5 72.4H120c-13.3 0-24 10.7-24 24v16c0 13.3 10.7 24 24 24h182.6l-75.5 72.4c-9.7 9.3-9.9 24.8-.4 34.3l11 10.9c9.4 9.4 24.6 9.4 33.9 0L404.3 273c9.4-9.4 9.4-24.6 0-33.9L271.6 106.3c-9.4-9.4-24.6-9.4-33.9 0l-11 10.9c-9.5 9.6-9.3 25.1.4 34.4z"/></svg> kepribadian pada *Five Factor model*) --- class: center, middle <center><img src="libs/reflektif.png" style="width=100%;" class="fancyimage"/></center><br> --- class: center, middle <center><img src="libs/formatif.png" style="width=60%;" class="fancyimage"/></center><br> --- # Apa yang terjadi ketika *error variance* berkorelasi? <center><img src="libs/correlated-error.png" style="width=6%;" class="fancyimage"/></center><br> * Kedua variabel indikator tersebut mengukur variabel laten lain di luar model (*unique factor*) * Bisa jadi karena ada aitem *unfavourable* dalam skala * Kemungkinan konstruk laten **bukan konstruk tunggal** (multidimensi) * Perhatikan justifikasi teori ketika menambah *error covariance* (korelasi antar-varians *error*) --- # Skor faktor (*factor scores*) * Apabila kita memiliki informasi tentang *factor loading*, maka kita bisa menghitung *factor scores* <svg style="height:0.8em;top:.04em;position:relative;" viewBox="0 0 512 512"><path d="M256 8c137 0 248 111 248 248S393 504 256 504 8 393 8 256 119 8 256 8zm-28.9 143.6l75.5 72.4H120c-13.3 0-24 10.7-24 24v16c0 13.3 10.7 24 24 24h182.6l-75.5 72.4c-9.7 9.3-9.9 24.8-.4 34.3l11 10.9c9.4 9.4 24.6 9.4 33.9 0L404.3 273c9.4-9.4 9.4-24.6 0-33.9L271.6 106.3c-9.4-9.4-24.6-9.4-33.9 0l-11 10.9c-9.5 9.6-9.3 25.1.4 34.4z"/></svg> **estimasi** (*fitted*) skor variabel laten * Caranya dengan mengali *factor loading* dengan skor kasar <svg style="height:0.8em;top:.04em;position:relative;" viewBox="0 0 512 512"><path d="M256 8c137 0 248 111 248 248S393 504 256 504 8 393 8 256 119 8 256 8zm-28.9 143.6l75.5 72.4H120c-13.3 0-24 10.7-24 24v16c0 13.3 10.7 24 24 24h182.6l-75.5 72.4c-9.7 9.3-9.9 24.8-.4 34.3l11 10.9c9.4 9.4 24.6 9.4 33.9 0L404.3 273c9.4-9.4 9.4-24.6 0-33.9L271.6 106.3c-9.4-9.4-24.6-9.4-33.9 0l-11 10.9c-9.5 9.6-9.3 25.1.4 34.4z"/></svg> metode regresi * Namun ingat, mengalikan *factor loading* dengan skor kasar **masih berisiko mendapatkan estimasi yang bias**, karena kedua parameter berasal dari distribusi data yang berbeda, sehingga ***standard error*nya akan berbeda di berbagai kelompok sampel**. Itulah yang menyebabkan *factor scores* akan berubah, ketika model diujikan pada kelompok sampel yang berbeda. * Ada tiga cara yang bisa digunakan untuk meghitung *factor scores*: - **Metode Regresi** <svg style="height:0.8em;top:.04em;position:relative;" viewBox="0 0 512 512"><path d="M256 8c137 0 248 111 248 248S393 504 256 504 8 393 8 256 119 8 256 8zm-28.9 143.6l75.5 72.4H120c-13.3 0-24 10.7-24 24v16c0 13.3 10.7 24 24 24h182.6l-75.5 72.4c-9.7 9.3-9.9 24.8-.4 34.3l11 10.9c9.4 9.4 24.6 9.4 33.9 0L404.3 273c9.4-9.4 9.4-24.6 0-33.9L271.6 106.3c-9.4-9.4-24.6-9.4-33.9 0l-11 10.9c-9.5 9.6-9.3 25.1.4 34.4z"/></svg> dengan mengoptimalisasi validitas konstruk (*variance explained*) - **Metode Bartlett** <svg style="height:0.8em;top:.04em;position:relative;" viewBox="0 0 512 512"><path d="M256 8c137 0 248 111 248 248S393 504 256 504 8 393 8 256 119 8 256 8zm-28.9 143.6l75.5 72.4H120c-13.3 0-24 10.7-24 24v16c0 13.3 10.7 24 24 24h182.6l-75.5 72.4c-9.7 9.3-9.9 24.8-.4 34.3l11 10.9c9.4 9.4 24.6 9.4 33.9 0L404.3 273c9.4-9.4 9.4-24.6 0-33.9L271.6 106.3c-9.4-9.4-24.6-9.4-33.9 0l-11 10.9c-9.5 9.6-9.3 25.1.4 34.4z"/></svg> mengasumsikan variabel indikator **tidak saling berkorelasi** - **Metode Anderson-Rubin** <svg style="height:0.8em;top:.04em;position:relative;" viewBox="0 0 512 512"><path d="M256 8c137 0 248 111 248 248S393 504 256 504 8 393 8 256 119 8 256 8zm-28.9 143.6l75.5 72.4H120c-13.3 0-24 10.7-24 24v16c0 13.3 10.7 24 24 24h182.6l-75.5 72.4c-9.7 9.3-9.9 24.8-.4 34.3l11 10.9c9.4 9.4 24.6 9.4 33.9 0L404.3 273c9.4-9.4 9.4-24.6 0-33.9L271.6 106.3c-9.4-9.4-24.6-9.4-33.9 0l-11 10.9c-9.5 9.6-9.3 25.1.4 34.4z"/></svg> mengasumsikan variabel indikator **saling berkorelasi** --- # Memilih metode estimasi * *Maximum Likelihood* <svg style="height:0.8em;top:.04em;position:relative;" viewBox="0 0 512 512"><path d="M256 8c137 0 248 111 248 248S393 504 256 504 8 393 8 256 119 8 256 8zm-28.9 143.6l75.5 72.4H120c-13.3 0-24 10.7-24 24v16c0 13.3 10.7 24 24 24h182.6l-75.5 72.4c-9.7 9.3-9.9 24.8-.4 34.3l11 10.9c9.4 9.4 24.6 9.4 33.9 0L404.3 273c9.4-9.4 9.4-24.6 0-33.9L271.6 106.3c-9.4-9.4-24.6-9.4-33.9 0l-11 10.9c-9.5 9.6-9.3 25.1.4 34.4z"/></svg> distribusi data (*multivariate*) normal, level pengukuran harus interval, tidak ada data *missing* * *Generalized least squares* <svg style="height:0.8em;top:.04em;position:relative;" viewBox="0 0 512 512"><path d="M256 8c137 0 248 111 248 248S393 504 256 504 8 393 8 256 119 8 256 8zm-28.9 143.6l75.5 72.4H120c-13.3 0-24 10.7-24 24v16c0 13.3 10.7 24 24 24h182.6l-75.5 72.4c-9.7 9.3-9.9 24.8-.4 34.3l11 10.9c9.4 9.4 24.6 9.4 33.9 0L404.3 273c9.4-9.4 9.4-24.6 0-33.9L271.6 106.3c-9.4-9.4-24.6-9.4-33.9 0l-11 10.9c-9.5 9.6-9.3 25.1.4 34.4z"/></svg> menggunakan asumsi yang sama dengan `ML` namun performanya kurang baik apabila dibandingkan dengan `ML` * *Weighted least squares* <svg style="height:0.8em;top:.04em;position:relative;" viewBox="0 0 512 512"><path d="M256 8c137 0 248 111 248 248S393 504 256 504 8 393 8 256 119 8 256 8zm-28.9 143.6l75.5 72.4H120c-13.3 0-24 10.7-24 24v16c0 13.3 10.7 24 24 24h182.6l-75.5 72.4c-9.7 9.3-9.9 24.8-.4 34.3l11 10.9c9.4 9.4 24.6 9.4 33.9 0L404.3 273c9.4-9.4 9.4-24.6 0-33.9L271.6 106.3c-9.4-9.4-24.6-9.4-33.9 0l-11 10.9c-9.5 9.6-9.3 25.1.4 34.4z"/></svg> dapat digunakan pada data kategorikal (nominal dan ordinal), estimasi menggunakan *polychoric correlation matrix* * *Diagonally weighted least squares* <svg style="height:0.8em;top:.04em;position:relative;" viewBox="0 0 512 512"><path d="M256 8c137 0 248 111 248 248S393 504 256 504 8 393 8 256 119 8 256 8zm-28.9 143.6l75.5 72.4H120c-13.3 0-24 10.7-24 24v16c0 13.3 10.7 24 24 24h182.6l-75.5 72.4c-9.7 9.3-9.9 24.8-.4 34.3l11 10.9c9.4 9.4 24.6 9.4 33.9 0L404.3 273c9.4-9.4 9.4-24.6 0-33.9L271.6 106.3c-9.4-9.4-24.6-9.4-33.9 0l-11 10.9c-9.5 9.6-9.3 25.1.4 34.4z"/></svg> dapat digunakan pada data kategorikal, estimasi menggunakan *polychoric correlation matrix* yang kemudian dikonversi menjadi *asymptotic covariance matrix*, berkerja dengan baik pada sampel yang relatif kecil dan data yang tidak berdistribusi normal --- class: inverse, middle, center # Demonstrasi CFA ![](https://media.giphy.com/media/3oEjHZPivwdJ0syhKE/giphy.gif) ### [Unduh Dataset Contoh CFA](https://rameliaz.github.io/mg-sem-workshop/contoh-cfa.jasp) --- # TUGAS 4: Mencoba *confirmatory factor analysis* * Unduh [Dataset Latihan SEM](https://rameliaz.github.io/mg-sem-workshop/dataset-wave1.csv) * Unduh [Kamus Data disini](https://rameliaz.github.io/mg-sem-workshop/codebook-kamusdata.xlsx) * Lakukan CFA pada skala *right-wing authoritarianism* - Diukur dengan skala *Likert*, 15 aitem dengan 9 pilihan jawaban * Laporkan *model fit*, *factor loading*, dan *multivariate normality* * Lakukan penyesuaian apabila perlu * *Export* datasetnya menjadi `.htm` kemudian ### [Kumpulkan tugasnya disini](https://forms.gle/eNGD2LSzqaZc2nXM7) --- class: center, middle # Terima kasih banyak! 😉 ![](https://media.giphy.com/media/hrBSJ2So6iTo4/giphy.gif) Paparan disusun dengan menggunakan <svg style="height:0.8em;top:.04em;position:relative;" viewBox="0 0 581 512"><path d="M581 226.6C581 119.1 450.9 32 290.5 32S0 119.1 0 226.6C0 322.4 103.3 402 239.4 418.1V480h99.1v-61.5c24.3-2.7 47.6-7.4 69.4-13.9L448 480h112l-67.4-113.7c54.5-35.4 88.4-84.9 88.4-139.7zm-466.8 14.5c0-73.5 98.9-133 220.8-133s211.9 40.7 211.9 133c0 50.1-26.5 85-70.3 106.4-2.4-1.6-4.7-2.9-6.4-3.7-10.2-5.2-27.8-10.5-27.8-10.5s86.6-6.4 86.6-92.7-90.6-87.9-90.6-87.9h-199V361c-74.1-21.5-125.2-67.1-125.2-119.9zm225.1 38.3v-55.6c57.8 0 87.8-6.8 87.8 27.3 0 36.5-38.2 28.3-87.8 28.3zm-.9 72.5H365c10.8 0 18.9 11.7 24 19.2-16.1 1.9-33 2.8-50.6 2.9v-22.1z"/></svg> *package* [**xaringan**](https://github.com/yihui/xaringan) dengan *template* dan *fonts* dari `R-Ladies`. *Chakra* dibuat dengan [remark.js](https://remarkjs.com), [**knitr**](http://yihui.name/knitr), dan [R Markdown](https://rmarkdown.rstudio.com).