Data

Data yang akan digunakan pada latihan studi kasus ini adalah dataset bernama longley yang sudah terdapat pada library datasets. Data ini merupakan data time series makroekonomi dengan 7 variabel dan tahun amatan 1947-1962 (n=16).

library(datasets)
data("longley")
summary(longley)
##   GNP.deflator         GNP          Unemployed     Armed.Forces  
##  Min.   : 83.00   Min.   :234.3   Min.   :187.0   Min.   :145.6  
##  1st Qu.: 94.53   1st Qu.:317.9   1st Qu.:234.8   1st Qu.:229.8  
##  Median :100.60   Median :381.4   Median :314.4   Median :271.8  
##  Mean   :101.68   Mean   :387.7   Mean   :319.3   Mean   :260.7  
##  3rd Qu.:111.25   3rd Qu.:454.1   3rd Qu.:384.2   3rd Qu.:306.1  
##  Max.   :116.90   Max.   :554.9   Max.   :480.6   Max.   :359.4  
##    Population         Year         Employed    
##  Min.   :107.6   Min.   :1947   Min.   :60.17  
##  1st Qu.:111.8   1st Qu.:1951   1st Qu.:62.71  
##  Median :116.8   Median :1954   Median :65.50  
##  Mean   :117.4   Mean   :1954   Mean   :65.32  
##  3rd Qu.:122.3   3rd Qu.:1958   3rd Qu.:68.29  
##  Max.   :130.1   Max.   :1962   Max.   :70.55

Plot Jumlah Pengangguran 1947-1962

Jumlah pengangguran dari tahun 1947-1962 terlihat berfluktuasi namun memiliki tren yang meningkat.

plot(longley$Year, longley$Unemployed,  type = "l", main = "Jumlah Pengangguran 1947-1962", ylab="Unemployed", xlab="Tahun")

Penggunaan Fungsi select()

variabel penjelas yang akan digunakan untuk memprediksi jumlah pengangguran adalah GNP, Armed.Forces, dan Population.

library(tidyverse)
## -- Attaching packages --------------------------------------- tidyverse 1.3.0 --
## v ggplot2 3.3.3     v purrr   0.3.4
## v tibble  3.1.0     v dplyr   1.0.3
## v tidyr   1.1.2     v stringr 1.4.0
## v readr   1.3.1     v forcats 0.5.0
## Warning: package 'ggplot2' was built under R version 4.0.4
## Warning: package 'tibble' was built under R version 4.0.4
## -- Conflicts ------------------------------------------ tidyverse_conflicts() --
## x dplyr::filter() masks stats::filter()
## x dplyr::lag()    masks stats::lag()
data1 <- longley %>% select(Unemployed, GNP, Armed.Forces, Population)
head(data1)
##      Unemployed     GNP Armed.Forces Population
## 1947      235.6 234.289        159.0    107.608
## 1948      232.5 259.426        145.6    108.632
## 1949      368.2 258.054        161.6    109.773
## 1950      335.1 284.599        165.0    110.929
## 1951      209.9 328.975        309.9    112.075
## 1952      193.2 346.999        359.4    113.270

Model Regresi Berganda untuk Prediksi

model1 <- lm(Unemployed ~ GNP + Armed.Forces + Population, data=data1)
summary(model1)
## 
## Call:
## lm(formula = Unemployed ~ GNP + Armed.Forces + Population, data = data1)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -81.033 -15.900   0.312  26.797  79.740 
## 
## Coefficients:
##                Estimate Std. Error t value Pr(>|t|)   
## (Intercept)  -5166.9239  1557.3658  -3.318  0.00614 **
## GNP             -3.4293     1.2336  -2.780  0.01665 * 
## Armed.Forces    -0.1805     0.2520  -0.716  0.48746   
## Population      58.4449    16.9374   3.451  0.00480 **
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 45.93 on 12 degrees of freedom
## Multiple R-squared:  0.8067, Adjusted R-squared:  0.7584 
## F-statistic: 16.69 on 3 and 12 DF,  p-value: 0.0001398
yhat <- predict(model1)

Penggunaan Fungsi mutate()

Varibel jumlah pengangguran hasil prediksi yaitu yhat akan dimasukan ke data1.

data1new <- data1 %>% mutate(yhat)
head(data1new)
##      Unemployed     GNP Armed.Forces Population     yhat
## 1947      235.6 234.289        159.0    107.608 290.0721
## 1948      232.5 259.426        145.6    108.632 266.1374
## 1949      368.2 258.054        161.6    109.773 334.6395
## 1950      335.1 284.599        165.0    110.929 310.5581
## 1951      209.9 328.975        309.9    112.075 199.1998
## 1952      193.2 346.999        359.4    113.270 198.2960

Penggunaan Fungsi summarize() dan Arrange()

Selanjutnya, peneliti akan menhitung galat dengan mengkuadratkan selisih nilai aktual dan dugaan. Kemudian akan mengurutkannya dari nilai galat terkecil.

data1new %>% summarize(data1new, galat = (Unemployed-yhat)^2) %>% arrange(galat)
##    Unemployed     GNP Armed.Forces Population     yhat       galat
## 1       282.2 419.180        285.7    118.734 283.4165    1.479925
## 2       480.6 518.173        257.2    127.852 481.9892    1.929958
## 3       393.1 502.601        251.4    125.368 391.2597    3.386806
## 4       193.2 346.999        359.4    113.270 198.2960   25.969077
## 5       293.6 442.769        279.8    120.445 303.5880   99.759956
## 6       209.9 328.975        309.9    112.075 199.1998  114.495175
## 7       290.4 397.469        304.8    117.388 275.7543  214.497965
## 8       335.1 284.599        165.0    110.929 310.5581  602.302993
## 9       368.2 258.054        161.6    109.773 334.6395 1126.310323
## 10      232.5 259.426        145.6    108.632 266.1374 1131.474057
## 11      357.8 363.112        335.0    116.219 319.7993 1444.054184
## 12      381.3 482.704        255.2    123.366 341.7990 1560.328091
## 13      235.6 234.289        159.0    107.608 290.0721 2967.207119
## 14      187.0 365.385        354.7    115.094 242.6976 3102.217225
## 15      468.1 444.546        263.7    121.950 388.3604 6358.411338
## 16      400.7 554.894        282.7    130.081 481.7333 6566.400611

Penggunaan Fungsi filter()

Dengan fungsi filter, diketahui bahwa galat terkecil atau hasil dugaan terbaik terjadi pada tahun 1956.

longley %>% filter(Unemployed == 282.2) %>% head()
##   GNP.deflator    GNP Unemployed Armed.Forces Population Year Employed
## 1        104.6 419.18      282.2        285.7    118.734 1956   67.857