Dasar Pengolahan Data

1. Persiapan R dan RStudio

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:

  1. Mengunduh dan memasang R dari situs resmi CRAN.

  2. Mengunduh dan memasang RStudio Desktop.

  3. Memastikan RStudio terintegrasi dengan R agar siap digunakan untuk menjalankan perintah pemrograman.

2. Dasar-Dasar Pemrograman R

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

3. Struktur Data dalam R

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.

a. Vector 

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

b. Data Frame

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

c. Fungsi dan Packages dalam R

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

e. Analisis Korelasi dan Regresi Linier dengan R

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.

4. Analisis Korelasi

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 

5. Analisis Regresi Linier

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

6. Pengertian Regresi Data Panel

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

a. Keunggulan Data Panel

Menurut Econometric Analysis of Panel Data dan Analysis of Panel Data, data panel memiliki beberapa keunggulan:

  1. Mengakomodasi heterogenitas individu

  2. Jumlah observasi lebih banyak

  3. Variabilitas data lebih besar

  4. Mengurangi multikolinearitas

  5. Efisien dalam estimasi parameter

  6. Dapat melihat dinamika perubahan antar waktu

b. Bentuk Umum Model Regresi Panel

Keterangan:

  • ii = individu

  • tt = waktu

  • YY = variabel dependen

  • XX = variabel independen

  • εε = error

c. Model Regresi Data Panel

Terdapat tiga pendekatan utama:


  1. Common Effect Model (CEM)

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:

  • mengabaikan perbedaan karakteristik tiap individu

2. Random Effect Model (REM)

REM menganggap perbedaan individu bersifat acak dan masuk ke error component.

Persamaan:

Keterangan:

  • μi = error khusus individu

Karakteristik:

  • efek individu dianggap random

  • estimasi menggunakan GLS (Generalized Least Square)

Keunggulan:

  • lebih efisien jika asumsi terpenuhi

Kelemahan:

  • bias jika efek individu berkorelasi dengan variabel independen

c1. Regresi Common Effect Model (CEM)

#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

c2. Regresi Fixed Effect Model (FEM)

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

c3. Regresi Random Effect Model (REM)

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

d. Pemilihan Model Regresi

d1. Uji Chow (CEM vs FEM)

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

d2. Hipotesis Uji Hausman:

  • 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

d3. Uji Lagrange Multiplier (CEM vs REM)

  • H0: Model Common Effect (CEM) lebih baik daripada Random Effect (REM). (Tidak ada efek random atau efek random tidak signifikan/varian error sama dengan 0).
  • H1: Model Random Effect (REM) lebih baik daripada Common Effect (CEM). (Terdapat efek random yang signifikan)
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