1. Mengumpulkan Data (Dari File Excel)

library(readxl)

# Sesuaikan path file Excel kamu
data <- read_excel("D:/LAPRAK ANREG BERS/data anreg bers.xlsx")

head(data)
## # A tibble: 6 × 4
##       Y    X1    X2    X3
##   <dbl> <dbl> <dbl> <dbl>
## 1 127.   50.3  31.1  98.8
## 2 116.   52.6  32.9  88.2
## 3 120.   46.0  25.7  83.6
## 4 133.   48.0  25.8  99.0
## 5 117.   37.3  26.7  98.3
## 6  89.2  24.0  29.3 109.

2. Eksplorasi Data

summary(data)
##        Y                X1              X2              X3        
##  Min.   : 65.61   Min.   :24.03   Min.   :20.58   Min.   : 51.86  
##  1st Qu.:103.29   1st Qu.:41.12   1st Qu.:26.96   1st Qu.: 85.43  
##  Median :117.55   Median :46.51   Median :30.48   Median : 95.44  
##  Mean   :120.14   Mean   :47.32   Mean   :30.49   Mean   : 95.35  
##  3rd Qu.:133.54   3rd Qu.:53.00   3rd Qu.:33.51   3rd Qu.:107.81  
##  Max.   :193.57   Max.   :72.48   Max.   :39.08   Max.   :148.93
pairs(data,
      main = "Scatterplot Matrix",
      pch = 19,
      col = "steelblue")

3. Membuat Model Regresi Linear Berganda

model <- lm(Y ~ X1 + X2 + X3, data = data)
summary(model)
## 
## Call:
## lm(formula = Y ~ X1 + X2 + X3, data = data)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -4.3167 -0.8685 -0.0033  0.9304  4.7755 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 27.94871    3.01649   9.265 4.58e-11 ***
## X1           1.80593    0.03263  55.341  < 2e-16 ***
## X2          -2.59649    0.06935 -37.439  < 2e-16 ***
## X3           0.90086    0.01689  53.321  < 2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 2.009 on 36 degrees of freedom
## Multiple R-squared:  0.9957, Adjusted R-squared:  0.9953 
## F-statistic:  2765 on 3 and 36 DF,  p-value: < 2.2e-16

4. Uji Asumsi Model

4.1 Normalitas Residual

par(mfrow=c(1,2))

hist(residuals(model),
     main="Histogram Residual",
     xlab="Residual",
     col="skyblue")

qqnorm(residuals(model))
qqline(residuals(model), col="red")

par(mfrow=c(1,1))

shapiro.test(residuals(model))
## 
##  Shapiro-Wilk normality test
## 
## data:  residuals(model)
## W = 0.98243, p-value = 0.7786

4.2 Homoskedastisitas (Breusch-Pagan)

library(lmtest)
## Loading required package: zoo
## 
## Attaching package: 'zoo'
## The following objects are masked from 'package:base':
## 
##     as.Date, as.Date.numeric
bptest(model)
## 
##  studentized Breusch-Pagan test
## 
## data:  model
## BP = 6.8856, df = 3, p-value = 0.07564

4.3 Autokorelasi (Durbin-Watson)

dwtest(model)
## 
##  Durbin-Watson test
## 
## data:  model
## DW = 1.9688, p-value = 0.4896
## alternative hypothesis: true autocorrelation is greater than 0

4.4 Multikolinearitas (VIF)

library(car)
## Loading required package: carData
vif(model)
##       X1       X2       X3 
## 1.018848 1.008913 1.022359

5. Pengujian Hipotesis

anova(model)
## Analysis of Variance Table
## 
## Response: Y
##           Df  Sum Sq Mean Sq F value    Pr(>F)    
## X1         1 14903.0 14903.0  3693.1 < 2.2e-16 ***
## X2         1  7093.4  7093.4  1757.8 < 2.2e-16 ***
## X3         1 11473.4 11473.4  2843.2 < 2.2e-16 ***
## Residuals 36   145.3     4.0                      
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
summary(model)
## 
## Call:
## lm(formula = Y ~ X1 + X2 + X3, data = data)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -4.3167 -0.8685 -0.0033  0.9304  4.7755 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 27.94871    3.01649   9.265 4.58e-11 ***
## X1           1.80593    0.03263  55.341  < 2e-16 ***
## X2          -2.59649    0.06935 -37.439  < 2e-16 ***
## X3           0.90086    0.01689  53.321  < 2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 2.009 on 36 degrees of freedom
## Multiple R-squared:  0.9957, Adjusted R-squared:  0.9953 
## F-statistic:  2765 on 3 and 36 DF,  p-value: < 2.2e-16

6. Evaluasi Model

summary(model)$r.squared
## [1] 0.9956783
summary(model)$adj.r.squared
## [1] 0.9953181
par(mfrow=c(2,2))
plot(model)

par(mfrow=c(1,1))