nilai <- 150
nilai[1] 150
R adalah perangkat lunak open-source yang menjadi standar dalam analisis data dan riset ilmiah. Untuk mengoptimalkan penggunaannya, diperlukan RStudio, sebuah Integrated Development Environment (IDE) yang menyediakan antarmuka lebih intuitif sehingga penulisan kode, pemrosesan, dan visualisasi data menjadi lebih praktis.
Proses instalasi harus dilakukan secara berurutan: pasang perangkat lunak R terlebih dahulu sebagai mesin utama, kemudian instal RStudio sebagai antarmuka pendukungnya. Tahapan instalasinya meliputi:
Mengunduh dan memasang R dari situs resmi CRAN.
Mengunduh dan memasang RStudio Desktop.
Memastikan RStudio terintegrasi dengan R agar siap digunakan untuk menjalankan perintah pemrograman.
Materi ini menjadi langkah untuk memahami cara kerja bahasa R. Fokus utama dalam bab ini meliputi:
Manajemen Variabel: Cara menyimpan dan mengelola data dalam R.
Tipe Data: Memahami berbagai format data yang dapat diolah.
Pengelolaan Data: Teknik manipulasi data dasar.
Penguasaan materi ini sangat krusial sebagai prasyarat bagi Anda untuk melakukan analisis statistika yang akurat serta menciptakan visualisasi data yang efektif di bab-bab selanjutnya.
nilai <- 150
nilai[1] 150
jumlah <- nilai + 10
kurang <- nilai - 100
kali <- nilai*4
bagi <- nilai/2
#Menampilkan nilai dari variabel kurang, kali, bagi
kurang[1] 50
kali[1] 600
bagi[1] 75
nama <- "Ibrahim"
umur <- 20
lulus <- TRUE
#Menampilkan nilai dari variabel
nama[1] "Ibrahim"
umur[1] 20
lulus[1] TRUE
Struktur Data dalam R Selain tipe data, R juga mendefinisikan struktur data sebagai metode organisasi dan penyimpanan informasi. Melalui struktur data, kita dapat menyimpan banyak nilai di dalam satu objek secara terorganisir. Dalam konteks statistika, dua struktur data yang paling fundamental adalah vector dan data frame.
Vector merupakan struktur data yang menampung sekumpulan nilai dengan tipe data yang seragam. Struktur ini sangat efisien untuk menyimpan deret data yang homogen, misalnya kumpulan nilai ujian mahasiswa dalam satu variabel tunggal.
umur <- c(17, 20, 21, 18, 19)
umur[1] 17 20 21 18 19
Data frame digunakan untuk menyimpan data dalam bentuk tabel yang terdiri dari baris dan kolom. Setiap kolom dapat memiliki tipe data yang berbeda.
data_siswa <- data.frame(
Nama = c("Anwar", "Intan", "Budi"),
umur <- c(17, 20, 21)
)
data_siswa Nama umur....c.17..20..21.
1 Anwar 17
2 Intan 20
3 Budi 21
mean(nilai)[1] 150
max(nilai)[1] 150
min(nilai)[1] 150
Selain fungsi bawaan, R juga memiliki packages yang berisi kumpulan fungsi tambahan. Packages perlu diinstal terlebih dahulu sebelum digunakan.
contoh install packages di R
#install.packages("tidyverse")
#setelah di install lalu dipanggill dengan fungsi library
library(tidyverse)── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
✔ dplyr 1.2.1 ✔ readr 2.2.0
✔ forcats 1.0.1 ✔ stringr 1.6.0
✔ ggplot2 4.0.1 ✔ tibble 3.3.1
✔ lubridate 1.9.5 ✔ tidyr 1.3.2
✔ purrr 1.2.1
── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
✖ dplyr::filter() masks stats::filter()
✖ dplyr::lag() masks stats::lag()
ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
Bab ini membahas analisis hubungan antar variabel menggunakan korelasi dan regresi linier. Melalui analisis ini, siswa dapat mengetahui apakah terdapat hubungan antara dua variabel serta bagaimana suatu variabel dapat memengaruhi variabel lainnya. Perhitungan dilakukan menggunakan bahasa pemrograman R untuk mempermudah analisis data.
Analisis korelasi digunakan untuk mengukur kekuatan dan arah hubungan antara dua variabel. Nilai koefisien korelasi berada pada rentang -1 sampai 1.
Nilai mendekati 1 menunjukkan hubungan positif yang kuat.
Nilai mendekati -1 menunjukkan hubungan negatif yang kuat.
Nilai mendekati 0 menunjukkan hubungan yang lemah atau tidak ada hubungan.
Contoh analisis korelasi antara jam belajar dan nilai ujian:
#Input Data
nilai_ujian <- c(65, 60, 68, 72, 80, 78, 82, 85, 88, 90, 60)
jam_belajar <- c(3, 2, 4, 5, 6, 10, 8, 9, 10, 11, 15)
data <- data.frame(jam_belajar, nilai_ujian)
data jam_belajar nilai_ujian
1 3 65
2 2 60
3 4 68
4 5 72
5 6 80
6 10 78
7 8 82
8 9 85
9 10 88
10 11 90
11 15 60
plot(jam_belajar, nilai_ujian,
main = "Scatter Plot Jam Belajar vs Nilai Ujian",
xlab = "Jam Belajar (x1)",
ylab = "Nilai Ujian (x2)",
pch = 19)cor(jam_belajar, nilai_ujian)[1] 0.3512774
cor.test(jam_belajar, nilai_ujian)
Pearson's product-moment correlation
data: jam_belajar and nilai_ujian
t = 1.1256, df = 9, p-value = 0.2895
alternative hypothesis: true correlation is not equal to 0
95 percent confidence interval:
-0.3149686 0.7856073
sample estimates:
cor
0.3512774
Regresi linier digunakan untuk memodelkan hubungan antara satu variabel bebas dan satu variabel terikat. Model regresi linier sederhana dapat dituliskan dalam bentuk persamaan garis lurus.
Contoh pembentukan model regresi linier menggunakan fungsi lm():
model <- lm(nilai_ujian ~ jam_belajar)
model
Call:
lm(formula = nilai_ujian ~ jam_belajar)
Coefficients:
(Intercept) jam_belajar
67.9401 0.9718
summary(model)
Call:
lm(formula = nilai_ujian ~ jam_belajar)
Residuals:
Min 1Q Median 3Q Max
-22.517 -4.841 0.342 7.300 11.370
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 67.9401 7.2750 9.339 6.3e-06 ***
jam_belajar 0.9718 0.8634 1.126 0.289
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Residual standard error: 10.74 on 9 degrees of freedom
Multiple R-squared: 0.1234, Adjusted R-squared: 0.026
F-statistic: 1.267 on 1 and 9 DF, p-value: 0.2895
Regresi data panel adalah metode analisis yang menggabungkan data cross section dan time series secara simultan. Data panel mengamati banyak individu (kabupaten, perusahaan, rumah tangga, negara, dll.) dalam beberapa periode waktu.
Secara umum:
Cross section → banyak objek pada satu waktu
Time series → satu objek pada banyak waktu
Panel → banyak objek pada banyak waktu
Pada contoh tersebut:
individu = kabupaten
waktu = tahun
Menurut Econometric Analysis of Panel Data dan Analysis of Panel Data, data panel memiliki beberapa keunggulan:
Mengakomodasi heterogenitas individu
Jumlah observasi lebih banyak
Variabilitas data lebih besar
Mengurangi multikolinearitas
Efisien dalam estimasi parameter
Dapat melihat dinamika perubahan antar waktu
Keterangan:
ii = individu
tt = waktu
YY = variabel dependen
XX = variabel independen
εε = error
Terdapat tiga pendekatan utama:
Disebut juga:
Pooled Least Square
Pooled OLS
Model ini mengasumsikan:
seluruh individu homogen
tidak ada efek individu maupun waktu
Persamaan:
Karakteristik:
intercept sama
slope sama
paling sederhana
Kelemahan:
2. Random Effect Model (REM)
REM menganggap perbedaan individu bersifat acak dan masuk ke error component.
Persamaan:
Keterangan:
Karakteristik:
efek individu dianggap random
estimasi menggunakan GLS (Generalized Least Square)
Keunggulan:
Kelemahan:
#install.packages("plm")
#install.packages("readxl")
#install.packages("lmtest")
#install.packages("sandwich")
library(plm)
Attaching package: 'plm'
The following objects are masked from 'package:dplyr':
between, lag, lead
library(readxl)
library(lmtest)Loading required package: zoo
Attaching package: 'zoo'
The following objects are masked from 'package:base':
as.Date, as.Date.numeric
library(sandwich)data <- read.csv("data_panel_regresi.csv", sep = ";")
head(data) kabupaten tahun produksi pupuk irigasi
1 Karawang 2019 120 45 80
2 Karawang 2020 125 47 82
3 Karawang 2021 130 50 84
4 Karawang 2022 135 52 85
5 Karawang 2023 140 55 87
6 Subang 2019 110 40 75
pdata <- pdata.frame(data,
index = c("kabupaten", "tahun"))cem <- plm(produksi ~ pupuk + irigasi,
data = pdata,
model = "pooling")
summary(cem)Pooling Model
Call:
plm(formula = produksi ~ pupuk + irigasi, data = pdata, model = "pooling")
Balanced Panel: n = 5, T = 5, N = 25
Residuals:
Min. 1st Qu. Median 3rd Qu. Max.
-6.512756 -2.147709 0.026376 2.459273 4.228432
Coefficients:
Estimate Std. Error t-value Pr(>|t|)
(Intercept) -62.53206 29.42336 -2.1253 0.04504 *
pupuk 1.40990 0.63257 2.2288 0.03636 *
irigasi 1.51150 0.72487 2.0852 0.04887 *
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Total Sum of Squares: 8543
Residual Sum of Squares: 216.81
R-Squared: 0.97462
Adj. R-Squared: 0.97231
F-statistic: 422.436 on 2 and 22 DF, p-value: < 2.22e-16
fem <- plm(produksi ~ pupuk + irigasi,
data = pdata,
model = "within")
summary(fem)Oneway (individual) effect Within Model
Call:
plm(formula = produksi ~ pupuk + irigasi, data = pdata, model = "within")
Balanced Panel: n = 5, T = 5, N = 25
Residuals:
Min. 1st Qu. Median 3rd Qu. Max.
-1.107883 -0.332457 -0.020535 0.444185 0.951971
Coefficients:
Estimate Std. Error t-value Pr(>|t|)
pupuk 2.019221 0.184994 10.9150 2.284e-09 ***
irigasi 0.078345 0.273568 0.2864 0.7779
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Total Sum of Squares: 1030
Residual Sum of Squares: 5.5644
R-Squared: 0.9946
Adj. R-Squared: 0.9928
F-statistic: 1656.94 on 2 and 18 DF, p-value: < 2.22e-16
rem <- plm(produksi ~ pupuk + irigasi,
data = pdata,
model = "random")
summary(rem)Oneway (individual) effect Random Effect Model
(Swamy-Arora's transformation)
Call:
plm(formula = produksi ~ pupuk + irigasi, data = pdata, model = "random")
Balanced Panel: n = 5, T = 5, N = 25
Effects:
var std.dev share
idiosyncratic 0.3091 0.5560 0.037
individual 8.0787 2.8423 0.963
theta: 0.9129
Residuals:
Min. 1st Qu. Median 3rd Qu. Max.
-0.95528 -0.44145 -0.11926 0.32163 1.31753
Coefficients:
Estimate Std. Error z-value Pr(>|z|)
(Intercept) 9.34272 15.91934 0.5869 0.5573
pupuk 1.85961 0.21969 8.4648 <2e-16 ***
irigasi 0.34904 0.32118 1.0868 0.2771
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Total Sum of Squares: 1087.1
Residual Sum of Squares: 10.372
R-Squared: 0.99046
Adj. R-Squared: 0.98959
Chisq: 2283.68 on 2 DF, p-value: < 2.22e-16
Hipotesis :
Hipotesis Uji Chow:
H0 : Common Effect Model (CEM) lebih tepat digunakan.
H1 : Fixed Effect Model (FEM) lebih tepat digunakan
pFtest(fem, cem)
F test for individual effects
data: produksi ~ pupuk + irigasi
F = 170.84, df1 = 4, df2 = 18, p-value = 4.72e-14
alternative hypothesis: significant effects
H0 : Random Effect Model (REM) lebih efisien/tepat.
H1 : Fixed Effect Model (FEM) lebih
phtest(fem, rem)
Hausman Test
data: produksi ~ pupuk + irigasi
chisq = 3.7599, df = 2, p-value = 0.1526
alternative hypothesis: one model is inconsistent
plmtest(cem, type = "bp")
Lagrange Multiplier Test - (Breusch-Pagan)
data: produksi ~ pupuk + irigasi
chisq = 28.775, df = 1, p-value = 8.128e-08
alternative hypothesis: significant effects