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
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")
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
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)
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
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
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