{r setup, include=FALSE} knitr::opts_chunk$set(echo = TRUE)

required_packages <- c("tidyverse", "broom", "datarium", "ggplot2", "readxl", "lmtest")
new_packages <- required_packages[!(required_packages %in% installed.packages()[,"Package"])]
if(length(new_packages)) install.packages(new_packages)

library(tidyverse)
## Warning: package 'tidyverse' was built under R version 4.4.3
## Warning: package 'ggplot2' was built under R version 4.4.3
## Warning: package 'tidyr' was built under R version 4.4.3
## Warning: package 'readr' was built under R version 4.4.3
## Warning: package 'purrr' was built under R version 4.4.3
## Warning: package 'dplyr' was built under R version 4.4.3
## Warning: package 'stringr' was built under R version 4.4.3
## Warning: package 'forcats' was built under R version 4.4.3
## Warning: package 'lubridate' was built under R version 4.4.3
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr     1.1.4     ✔ readr     2.1.5
## ✔ forcats   1.0.0     ✔ stringr   1.5.1
## ✔ ggplot2   3.5.2     ✔ tibble    3.2.1
## ✔ lubridate 1.9.4     ✔ tidyr     1.3.1
## ✔ purrr     1.0.4     
## ── 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
library(broom)
## Warning: package 'broom' was built under R version 4.4.3
library(datarium)
## Warning: package 'datarium' was built under R version 4.4.3
library(ggplot2)
library(readxl)
## Warning: package 'readxl' was built under R version 4.4.3
library(lmtest)
## Warning: package 'lmtest' was built under R version 4.4.3
## Loading required package: zoo
## 
## Attaching package: 'zoo'
## 
## The following objects are masked from 'package:base':
## 
##     as.Date, as.Date.numeric
df <- read_xlsx("C:/Latihan Vs Code/Inflasi Tahunan.xlsx")
head(df)
## # A tibble: 6 × 3
##   Provinsi              Januari Februari
##   <chr>                   <dbl>    <dbl>
## 1 PROV ACEH                1.61     0.41
## 2 PROV SUMATERA UTARA      1.78     0.73
## 3 PROV SUMATERA BARAT      1.24    -0.09
## 4 PROV RIAU                1.12     0.02
## 5 PROV JAMBI               0.46    -0.27
## 6 PROV SUMATERA SELATAN    0.92     0.49
str(df)
## tibble [38 × 3] (S3: tbl_df/tbl/data.frame)
##  $ Provinsi: chr [1:38] "PROV ACEH" "PROV SUMATERA UTARA" "PROV SUMATERA BARAT" "PROV RIAU" ...
##  $ Januari : num [1:38] 1.61 1.78 1.24 1.12 0.46 0.92 0.09 1.04 -0.23 2.01 ...
##  $ Februari: num [1:38] 0.41 0.73 -0.09 0.02 -0.27 0.49 -1.26 -0.02 -0.64 2.09 ...
model <- lm(Februari ~ Januari, data = df)
summary(model)
## 
## Call:
## lm(formula = Februari ~ Januari, data = df)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -1.1428 -0.7800 -0.0807  0.4611  3.0704 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  -0.5380     0.1836  -2.930  0.00585 ** 
## Januari       1.1995     0.1563   7.674 4.37e-09 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.9432 on 36 degrees of freedom
## Multiple R-squared:  0.6206, Adjusted R-squared:  0.6101 
## F-statistic:  58.9 on 1 and 36 DF,  p-value: 4.371e-09
bptest(model)
## 
##  studentized Breusch-Pagan test
## 
## data:  model
## BP = 9.974, df = 1, p-value = 0.001588
dwtest(model)
## 
##  Durbin-Watson test
## 
## data:  model
## DW = 0.78421, p-value = 8.091e-06
## alternative hypothesis: true autocorrelation is greater than 0
shapiro.test(residuals(model))
## 
##  Shapiro-Wilk normality test
## 
## data:  residuals(model)
## W = 0.90258, p-value = 0.003016
summary(model)
## 
## Call:
## lm(formula = Februari ~ Januari, data = df)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -1.1428 -0.7800 -0.0807  0.4611  3.0704 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  -0.5380     0.1836  -2.930  0.00585 ** 
## Januari       1.1995     0.1563   7.674 4.37e-09 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.9432 on 36 degrees of freedom
## Multiple R-squared:  0.6206, Adjusted R-squared:  0.6101 
## F-statistic:  58.9 on 1 and 36 DF,  p-value: 4.371e-09