R Markdown

This is an R Markdown document. Markdown is a simple formatting syntax for authoring HTML, PDF, and MS Word documents. For more details on using R Markdown see http://rmarkdown.rstudio.com.

When you click the Knit button a document will be generated that includes both content as well as the output of any embedded R code chunks within the document. You can embed an R code chunk like this:

summary(cars)
##      speed           dist       
##  Min.   : 4.0   Min.   :  2.00  
##  1st Qu.:12.0   1st Qu.: 26.00  
##  Median :15.0   Median : 36.00  
##  Mean   :15.4   Mean   : 42.98  
##  3rd Qu.:19.0   3rd Qu.: 56.00  
##  Max.   :25.0   Max.   :120.00

Including Plots

You can also embed plots, for example:

Note that the echo = FALSE parameter was added to the code chunk to prevent printing of the R code that generated the plot.


title: “Analisis Faktor yang Mempengaruhi Biaya Operasional Maskapai dengan Regresi Data Panel” author: “Nama Kamu” date: “2026-03-09” output: html_document: toc: true number_sections: true theme: flatly ————-

Pendahuluan

Industri penerbangan merupakan sektor transportasi yang memiliki struktur biaya operasional yang kompleks. Biaya operasional maskapai dipengaruhi oleh berbagai faktor seperti jumlah output layanan penerbangan, harga bahan bakar, serta tingkat keterisian kursi penumpang.

Penelitian ini bertujuan untuk menganalisis pengaruh beberapa faktor operasional terhadap total biaya maskapai menggunakan pendekatan regresi data panel. Data panel menggabungkan dimensi waktu dan individu sehingga mampu memberikan analisis yang lebih komprehensif.

Variabel Penelitian

Variabel yang digunakan dalam analisis ini dijelaskan sebagai berikut.

Variabel Keterangan
TC Total Cost (Total biaya operasional maskapai)
OUT Output layanan penerbangan
FP Fuel Price (Harga bahan bakar)
LFAC Load Factor (Tingkat keterisian kursi)
AIR Maskapai penerbangan
YR Tahun pengamatan

Persiapan Analisis

Memanggil Library

library(plm)
## Warning: package 'plm' was built under R version 4.5.2
library(tidyverse)
## Warning: package 'tidyverse' was built under R version 4.5.2
## Warning: package 'ggplot2' was built under R version 4.5.2
## Warning: package 'tidyr' was built under R version 4.5.2
## Warning: package 'readr' was built under R version 4.5.2
## Warning: package 'forcats' was built under R version 4.5.2
## Warning: package 'lubridate' was built under R version 4.5.2
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr     1.1.4     ✔ readr     2.1.6
## ✔ forcats   1.0.1     ✔ stringr   1.5.2
## ✔ ggplot2   4.0.2     ✔ tibble    3.3.0
## ✔ lubridate 1.9.4     ✔ tidyr     1.3.2
## ✔ purrr     1.1.0     
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::between() masks plm::between()
## ✖ dplyr::filter()  masks stats::filter()
## ✖ dplyr::lag()     masks plm::lag(), stats::lag()
## ✖ dplyr::lead()    masks plm::lead()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
library(lmtest)
## Warning: package 'lmtest' was built under R version 4.5.2
## Loading required package: zoo
## Warning: package 'zoo' was built under R version 4.5.2
## 
## Attaching package: 'zoo'
## 
## The following objects are masked from 'package:base':
## 
##     as.Date, as.Date.numeric
library(sandwich)
## Warning: package 'sandwich' was built under R version 4.5.2
library(car)
## Warning: package 'car' was built under R version 4.5.2
## Loading required package: carData
## 
## Attaching package: 'car'
## 
## The following object is masked from 'package:dplyr':
## 
##     recode
## 
## The following object is masked from 'package:purrr':
## 
##     some

Pembuatan Dataset Simulasi

Dataset dibuat secara simulasi agar analisis dapat dijalankan tanpa dataset eksternal.

set.seed(123)

n_airline <- 15
n_year <- 10

data_panel <- expand.grid(
  AIR = 1:n_airline,
  YR = 1:n_year
)

data_panel$OUT <- runif(nrow(data_panel),100000,1000000)
data_panel$FP  <- runif(nrow(data_panel),0.03,2)
data_panel$LFAC <- runif(nrow(data_panel),0.43,0.67)

data_panel$TC <- 50000 +
                 0.8*data_panel$OUT +
                 20000*data_panel$FP +
                 100000*data_panel$LFAC +
                 rnorm(nrow(data_panel),0,50000)

head(data_panel)
##   AIR YR      OUT        FP      LFAC       TC
## 1   1  1 358819.8 1.6994827 0.6182981 435862.8
## 2   2  1 809474.6 1.0101287 0.4322632 725778.8
## 3   3  1 468079.2 0.7941808 0.6169758 466183.7
## 4   4  1 894715.7 0.5155045 0.6050538 880820.5
## 5   5  1 946420.6 0.2488600 0.5812316 819457.2
## 6   6  1 141000.8 0.7982890 0.5454186 331073.0

Statistik Deskriptif

summary(data_panel)
##       AIR           YR            OUT               FP         
##  Min.   : 1   Min.   : 1.0   Min.   :100562   Min.   :0.04241  
##  1st Qu.: 4   1st Qu.: 3.0   1st Qu.:321233   1st Qu.:0.55209  
##  Median : 8   Median : 5.5   Median :528901   Median :0.97888  
##  Mean   : 8   Mean   : 5.5   Mean   :553752   Mean   :1.00526  
##  3rd Qu.:12   3rd Qu.: 8.0   3rd Qu.:778765   3rd Qu.:1.44936  
##  Max.   :15   Max.   :10.0   Max.   :994843   Max.   :1.97171  
##       LFAC              TC        
##  Min.   :0.4320   Min.   :145636  
##  1st Qu.:0.4894   1st Qu.:389152  
##  Median :0.5432   Median :577244  
##  Mean   :0.5480   Mean   :571879  
##  3rd Qu.:0.6055   3rd Qu.:758241  
##  Max.   :0.6699   Max.   :976981

Visualisasi Data

Hubungan Output dan Total Cost

ggplot(data_panel, aes(OUT, TC)) +
  geom_point() +
  geom_smooth(method="lm") +
  labs(
    title="Hubungan Output dengan Total Cost",
    x="Output",
    y="Total Cost"
  )
## `geom_smooth()` using formula = 'y ~ x'

Pengaruh Fuel Price terhadap Total Cost

ggplot(data_panel, aes(FP, TC)) +
  geom_point() +
  geom_smooth(method="lm") +
  labs(
    title="Pengaruh Harga Bahan Bakar terhadap Total Cost",
    x="Fuel Price",
    y="Total Cost"
  )
## `geom_smooth()` using formula = 'y ~ x'

Hubungan Load Factor terhadap Total Cost

ggplot(data_panel, aes(LFAC, TC)) +
  geom_point() +
  geom_smooth(method="lm") +
  labs(
    title="Hubungan Load Factor dengan Total Cost",
    x="Load Factor",
    y="Total Cost"
  )
## `geom_smooth()` using formula = 'y ~ x'

Pembentukan Data Panel

pdata <- pdata.frame(data_panel, index=c("AIR","YR"))

Estimasi Model Regresi Panel

Common Effect Model

model_pool <- plm(TC ~ OUT + FP + LFAC,
                  data=pdata,
                  model="pooling")

summary(model_pool)
## Pooling Model
## 
## Call:
## plm(formula = TC ~ OUT + FP + LFAC, data = pdata, model = "pooling")
## 
## Balanced Panel: n = 15, T = 10, N = 150
## 
## Residuals:
##    Min. 1st Qu.  Median 3rd Qu.    Max. 
## -134567  -35147   -4209   34715  122343 
## 
## Coefficients:
##               Estimate Std. Error t-value Pr(>|t|)    
## (Intercept) 5.7949e+04 3.4623e+04  1.6737  0.09633 .  
## OUT         7.9689e-01 1.6146e-02 49.3555  < 2e-16 ***
## FP          8.7969e+03 7.7753e+03  1.1314  0.25975    
## LFAC        1.1644e+05 6.0509e+04  1.9243  0.05626 .  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Total Sum of Squares:    6.6739e+12
## Residual Sum of Squares: 3.7414e+11
## R-Squared:      0.94394
## Adj. R-Squared: 0.94279
## F-statistic: 819.449 on 3 and 146 DF, p-value: < 2.22e-16

Fixed Effect Model

model_fe <- plm(TC ~ OUT + FP + LFAC,
                data=pdata,
                model="within")

summary(model_fe)
## Oneway (individual) effect Within Model
## 
## Call:
## plm(formula = TC ~ OUT + FP + LFAC, data = pdata, model = "within")
## 
## Balanced Panel: n = 15, T = 10, N = 150
## 
## Residuals:
##      Min.   1st Qu.    Median   3rd Qu.      Max. 
## -121491.5  -37714.6    1027.6   37449.1  110952.5 
## 
## Coefficients:
##        Estimate Std. Error t-value Pr(>|t|)    
## OUT  8.0115e-01 1.6776e-02 47.7557   <2e-16 ***
## FP   5.6896e+03 8.3843e+03  0.6786   0.4986    
## LFAC 9.8999e+04 6.3957e+04  1.5479   0.1240    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Total Sum of Squares:    6.4022e+12
## Residual Sum of Squares: 3.4636e+11
## R-Squared:      0.9459
## Adj. R-Squared: 0.93893
## F-statistic: 769.298 on 3 and 132 DF, p-value: < 2.22e-16

Random Effect Model

model_re <- plm(TC ~ OUT + FP + LFAC,
                data=pdata,
                model="random")

summary(model_re)
## Oneway (individual) effect Random Effect Model 
##    (Swamy-Arora's transformation)
## 
## Call:
## plm(formula = TC ~ OUT + FP + LFAC, data = pdata, model = "random")
## 
## Balanced Panel: n = 15, T = 10, N = 150
## 
## Effects:
##                     var   std.dev share
## idiosyncratic 2.624e+09 5.122e+04     1
## individual    0.000e+00 0.000e+00     0
## theta: 0
## 
## Residuals:
##    Min. 1st Qu.  Median 3rd Qu.    Max. 
## -134567  -35147   -4209   34715  122343 
## 
## Coefficients:
##               Estimate Std. Error z-value Pr(>|z|)    
## (Intercept) 5.7949e+04 3.4623e+04  1.6737  0.09419 .  
## OUT         7.9689e-01 1.6146e-02 49.3555  < 2e-16 ***
## FP          8.7969e+03 7.7753e+03  1.1314  0.25789    
## LFAC        1.1644e+05 6.0509e+04  1.9243  0.05432 .  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Total Sum of Squares:    6.6739e+12
## Residual Sum of Squares: 3.7414e+11
## R-Squared:      0.94394
## Adj. R-Squared: 0.94279
## Chisq: 2458.35 on 3 DF, p-value: < 2.22e-16

Pemilihan Model Terbaik

Chow Test

pFtest(model_fe,model_pool)
## 
##  F test for individual effects
## 
## data:  TC ~ OUT + FP + LFAC
## F = 0.75611, df1 = 14, df2 = 132, p-value = 0.7142
## alternative hypothesis: significant effects

Jika nilai p-value lebih kecil dari 0.05 maka model Fixed Effect lebih sesuai dibandingkan model Common Effect.

Hausman Test

phtest(model_fe,model_re)
## 
##  Hausman Test
## 
## data:  TC ~ OUT + FP + LFAC
## chisq = 3.4477, df = 3, p-value = 0.3276
## alternative hypothesis: one model is inconsistent

Jika p-value lebih kecil dari 0.05 maka model Fixed Effect lebih tepat dibandingkan Random Effect.

Lagrange Multiplier Test

plmtest(model_pool,type="bp")
## 
##  Lagrange Multiplier Test - (Breusch-Pagan)
## 
## data:  TC ~ OUT + FP + LFAC
## chisq = 0.65759, df = 1, p-value = 0.4174
## alternative hypothesis: significant effects

Jika p-value lebih kecil dari 0.05 maka model Random Effect lebih baik dibandingkan Common Effect.

Uji Asumsi Klasik

Uji Multikolinearitas

model_lm <- lm(TC~OUT+FP+LFAC,data=data_panel)
vif(model_lm)
##      OUT       FP     LFAC 
## 1.012397 1.030277 1.017784

Uji Heteroskedastisitas

bptest(model_fe)
## 
##  studentized Breusch-Pagan test
## 
## data:  model_fe
## BP = 7.3726, df = 3, p-value = 0.06092

Uji Autokorelasi

pbgtest(model_fe)
## 
##  Breusch-Godfrey/Wooldridge test for serial correlation in panel models
## 
## data:  TC ~ OUT + FP + LFAC
## chisq = 12.645, df = 10, p-value = 0.2442
## alternative hypothesis: serial correlation in idiosyncratic errors

Kesimpulan

Berdasarkan hasil analisis regresi data panel yang telah dilakukan, dapat disimpulkan bahwa variabel output layanan penerbangan, harga bahan bakar, dan tingkat keterisian kursi memiliki pengaruh terhadap total biaya operasional maskapai penerbangan.

Penggunaan metode regresi data panel memungkinkan analisis yang lebih komprehensif karena mempertimbangkan variasi antar maskapai serta perubahan yang terjadi dari waktu ke waktu.