Pada kali ini kami akan mencari nilai prediksi curah hujan kabupaten tegal tahun 2020 menggunakan data iklim pada tahun 2017, 2018, dan 2019. Data iklim yang kami gunakan bersifat resmi dan legal karena bersumber dari hasil publikasi web bps kabupaten tegal( https://tegalkab.bps.go.id/ ) yang berbentuk pdf yang kemudian kami masukan kedalam format excel(https://drive.google.com/file/d/1DYSu8BtRjkFJybogpyXP0cQW6WEdIFkM/view?usp=sharing)

Pada data iklim ini, terdapat 5 variabel data rata-rata yang terdiri dari rata rata curah hujan,suhu udara, kecepatan angin, kelembaban udara, dan tekanan udara yang mana Y = rata rata curah hujan,X1 = suhu udara, x2 = kecepatan angin, x3 = tekanan udara, x4 = kelembaban udara

Pertama tama kita import dulu data excelnya

library(readxl)
## Warning: package 'readxl' was built under R version 4.0.3
data_iklim = read_excel("C:/data-iklim.xlsx")


Kemudian kita masukan data yang berada di dalam file excel ke variabel yang kita buat

View(data_iklim)

suhu_udara = data_iklim$suhu.udara
kecepatang_angin = data_iklim$kecepatan.angin
tekanan_udara = data_iklim$tekanan.udara
curah_hujan = data_iklim$curah.hujan
kelembaban_udara = data_iklim$kelembaban.udara


Setelah itu kita menyusun model regresi linear berganda untuk mengecek apakah datanya linear karna datanya digunakan untuk melakukan prediksi data

model_reg_curah_hujan <- lm(curah_hujan ~ suhu_udara + kecepatang_angin + tekanan_udara + kelembaban_udara , data = data_iklim)


Melakukan uji setiap asumsi regresi linear
Uji asumsi Normalitas
Pengujian ini digunakan untuk mengetahui model regresi berdistribusi normal atau tidak

par(mfrow = c(2,2))
plot(model_reg_curah_hujan)


Uji asumsi Multikolinieritas
Pengujian ini dilakukan untuk melihat korelasi antar variabel , pengujian ini dilakukan menggunakan perintah vif() di dalam package car

library(car)
## Warning: package 'car' was built under R version 4.0.3
## Loading required package: carData
## Warning: package 'carData' was built under R version 4.0.3
vif(model_reg_curah_hujan)
##       suhu_udara kecepatang_angin    tekanan_udara kelembaban_udara 
##         1.723872         3.618943         2.024064         4.876170


Uji asumsi Heteroskedastisitas
Pengujian ini dilakukan untuk mengukur ketidaksamaan varians residual dari data data pengukuran dengan melihat persebaran residual vs fitted

par(mfrow = c(2,2))
plot(model_reg_curah_hujan)


Uji asumsi Autokorelasi
Pengujian ini dilakukan untuk mengetahui apakah ada hubungan antara data sebelumnya dengan data selanjutnmya, ini dilakukan karena data iklim adalah data yang berbentuk time series atau bisa dibilang data bekelanjutan, uji ini dilakukan menggunalan perintah dwtest() di package lmtest

library(lmtest)
## Warning: package 'lmtest' was built under R version 4.0.3
## Loading required package: zoo
## Warning: package 'zoo' was built under R version 4.0.3
## 
## Attaching package: 'zoo'
## The following objects are masked from 'package:base':
## 
##     as.Date, as.Date.numeric
dwtest(model_reg_curah_hujan)
## 
##  Durbin-Watson test
## 
## data:  model_reg_curah_hujan
## DW = 1.1736, p-value = 0.001919
## alternative hypothesis: true autocorrelation is greater than 0


Uji asumsi linearitas
Uji ini dilakukan untuk menguji hubungan linear antar variabel dependen dan independen

library(conf)
## Warning: package 'conf' was built under R version 4.0.3
crPlots(model_reg_curah_hujan)


Hasil regresi linear berganda

summary(model_reg_curah_hujan)
## 
## Call:
## lm(formula = curah_hujan ~ suhu_udara + kecepatang_angin + tekanan_udara + 
##     kelembaban_udara, data = data_iklim)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -179.006  -58.874   -0.441   48.876  183.713 
## 
## Coefficients:
##                    Estimate Std. Error t value Pr(>|t|)   
## (Intercept)      -22605.818  19397.299  -1.165    0.253   
## suhu_udara          -12.434     32.914  -0.378    0.708   
## kecepatang_angin    -26.318     39.441  -0.667    0.510   
## tekanan_udara        21.046     18.361   1.146    0.260   
## kelembaban_udara     25.479      7.015   3.632    0.001 **
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 93.43 on 31 degrees of freedom
## Multiple R-squared:  0.6937, Adjusted R-squared:  0.6541 
## F-statistic: 17.55 on 4 and 31 DF,  p-value: 1.278e-07


Memprediksi Data Curah Hujan

predict(model_reg_curah_hujan);
##          1          2          3          4          5          6          7 
## 381.069598 348.214527 289.774605 210.491506 181.664820 225.605974 142.918423 
##          8          9         10         11         12         13         14 
##   2.919575  25.529079  44.631734 164.954874 214.827552 183.258565 404.910122 
##         15         16         17         18         19         20         21 
## 241.145364 211.171856 118.079924 143.238499   1.961798  -2.056622 -50.045711 
##         22         23         24         25         26         27         28 
## -70.516199  69.706110 104.591167 318.601291 321.343591 275.223225 222.556014 
##         29         30         31         32         33         34         35 
## 109.916954  55.981476  55.661400  10.156733  12.357947 -67.168163 -30.464167 
##         36 
## 201.286561
prediksi_data = data.frame(suhu_udara,kecepatang_angin,tekanan_udara,kelembaban_udara,curah_hujan,prediksi_curah_hujan=predict(model_reg_curah_hujan));


Mencari selisih antara data prediksi curah hujan dengan data curah hujan

library(dplyr)
## Warning: package 'dplyr' was built under R version 4.0.3
## 
## Attaching package: 'dplyr'
## The following object is masked from 'package:car':
## 
##     recode
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
prediksi_data = prediksi_data%>% mutate(selisih=abs(curah_hujan-predict(model_reg_curah_hujan)));
head(prediksi_data)
##   suhu_udara kecepatang_angin tekanan_udara kelembaban_udara curah_hujan
## 1       27.3                3        1009.2               85       363.2
## 2       27.3                4        1010.1               84       394.3
## 3       27.8                3        1010.0               81       149.5
## 4       28.3                4        1010.2               79       108.1
## 5       28.4                4        1010.1               78        86.1
## 6       28.1                4        1010.8               79        46.6
##   prediksi_curah_hujan   selisih
## 1             381.0696  17.86960
## 2             348.2145  46.08547
## 3             289.7746 140.27460
## 4             210.4915 102.39151
## 5             181.6648  95.56482
## 6             225.6060 179.00597