#PACKAGE
library(lmtest)
## Loading required package: zoo
##
## Attaching package: 'zoo'
## The following objects are masked from 'package:base':
##
## as.Date, as.Date.numeric
library(ggplot2)
library(car)
## Loading required package: carData
#MEMANGGIL DATA
data=read.table(file.choose(), header=T)
data
## Petak Y X1 X2
## 1 1 34.4 100 140
## 2 2 38.7 110 180
## 3 3 34.2 120 150
## 4 4 41.7 130 200
## 5 5 39.0 140 170
## 6 6 41.5 150 220
## 7 7 40.9 160 190
## 8 8 44.0 170 240
## 9 9 43.9 180 200
## 10 10 47.6 190 230
## 11 11 49.7 200 260
## 12 12 48.7 210 220
#SCATTER PLOT Y (Hasil Panen Padi) DAN X1 (Dosis Pupuk)
ggplot(data, aes(x = X1, y = Y)) +
geom_point(color = "hotpink", size = 2) +
geom_smooth(method = "lm", se = FALSE,
color = "springgreen4", linewidth = 1.2) +
ggtitle("Scatter Plot Antara Dosis Pupuk dan Hasil Panen Padi") +
ylab("Hasil Panen Padi") +
xlab("Dosis Pupuk") +
theme(plot.title = element_text(hjust = 0.5))
## `geom_smooth()` using formula = 'y ~ x'

#SCATTER PLOT Y (Hasil Panen Padi) DAN X2 (Curah Hujan)
ggplot(data, aes(x = X2, y = Y)) +
geom_point(color = "hotpink", size = 2) +
geom_smooth(method = "lm", se = FALSE,
color = "springgreen4", linewidth = 1.2) +
ggtitle("Scatter Plot Antara Curah Hujan dan Hasil Panen Padi") +
ylab("Hasil Panen Padi") +
xlab("Curah Hujan") +
theme(plot.title = element_text(hjust = 0.5))
## `geom_smooth()` using formula = 'y ~ x'

#REGRESI LINIER BERGANDA
model=lm(Y~X1+X2,data=data)
summary(model)
##
## Call:
## lm(formula = Y ~ X1 + X2, data = data)
##
## Residuals:
## Min 1Q Median 3Q Max
## -1.8540 -1.0105 0.1800 0.9349 1.6401
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 16.96176 2.30605 7.355 4.3e-05 ***
## X1 0.07860 0.01965 4.000 0.00311 **
## X2 0.06440 0.01958 3.289 0.00940 **
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 1.361 on 9 degrees of freedom
## Multiple R-squared: 0.9412, Adjusted R-squared: 0.9281
## F-statistic: 71.99 on 2 and 9 DF, p-value: 2.905e-06
#PENDETEKSIAN MULTIKOLINIERITAS
#<10
vif(model)
## X1 X2
## 2.983051 2.983051
#PENGUJIAN ASUMSI
bptest(model,varformula=~fitted.values(model), studentize=FALSE)
##
## Breusch-Pagan test
##
## data: model
## BP = 0.2226, df = 1, p-value = 0.6371
dwtest(model,alternative='two.sided')
##
## Durbin-Watson test
##
## data: model
## DW = 2.0988, p-value = 0.9478
## alternative hypothesis: true autocorrelation is not 0
shapiro.test(resid(model))
##
## Shapiro-Wilk normality test
##
## data: resid(model)
## W = 0.92837, p-value = 0.3631
#Mengubah data menjadi matriks
n<-nrow(data)
n
## [1] 12
k<-ncol(data)
k
## [1] 4
#Membuat matriks
x0<-as.matrix(rep(1,n))
x1<-as.matrix(data$X1)
x2<-as.matrix(data$X2)
X<-as.matrix(cbind(x0,x1,x2))
X
## [,1] [,2] [,3]
## [1,] 1 100 140
## [2,] 1 110 180
## [3,] 1 120 150
## [4,] 1 130 200
## [5,] 1 140 170
## [6,] 1 150 220
## [7,] 1 160 190
## [8,] 1 170 240
## [9,] 1 180 200
## [10,] 1 190 230
## [11,] 1 200 260
## [12,] 1 210 220
Y<-as.matrix(data$Y)
Y
## [,1]
## [1,] 34.4
## [2,] 38.7
## [3,] 34.2
## [4,] 41.7
## [5,] 39.0
## [6,] 41.5
## [7,] 40.9
## [8,] 44.0
## [9,] 43.9
## [10,] 47.6
## [11,] 49.7
## [12,] 48.7
#Penaksiran parameter dengan matriks
x.trans<-t(X)
a<-x.trans %*% X
a
## [,1] [,2] [,3]
## [1,] 12 1860 2400
## [2,] 1860 302600 383700
## [3,] 2400 383700 494400
a.inv<-solve(a)
a.inv
## [,1] [,2] [,3]
## [1,] 2.872845140 0.0015645372 -0.0151600753
## [2,] 0.001564537 0.0002086050 -0.0001694915
## [3,] -0.015160075 -0.0001694915 0.0002071563
b<-x.trans %*% Y
b
## [,1]
## [1,] 504.3
## [2,] 80044.0
## [3,] 102707.0
b.topi<-a.inv %*% b
b.topi
## [,1]
## [1,] 16.96175938
## [2,] 0.07860495
## [3,] 0.06439736
#Membuat nama koefisien
var_names<-c("intercept","Beta_1","Beta_2")
#Membuat tabel hasil
hasil<-data.frame(
Estimate=as.numeric(b.topi),
row.names = var_names
)
print(hasil)
## Estimate
## intercept 16.96175938
## Beta_1 0.07860495
## Beta_2 0.06439736
model=lm(Y~X1+X2,data=data)
summary(model)
##
## Call:
## lm(formula = Y ~ X1 + X2, data = data)
##
## Residuals:
## Min 1Q Median 3Q Max
## -1.8540 -1.0105 0.1800 0.9349 1.6401
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 16.96176 2.30605 7.355 4.3e-05 ***
## X1 0.07860 0.01965 4.000 0.00311 **
## X2 0.06440 0.01958 3.289 0.00940 **
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 1.361 on 9 degrees of freedom
## Multiple R-squared: 0.9412, Adjusted R-squared: 0.9281
## F-statistic: 71.99 on 2 and 9 DF, p-value: 2.905e-06
#Koefisien determinasi
Y.topi<-X %*% b.topi
Y.topi
## [,1]
## [1,] 33.83789
## [2,] 37.19983
## [3,] 36.05396
## [4,] 40.05988
## [5,] 38.91400
## [6,] 42.91992
## [7,] 41.77405
## [8,] 45.77997
## [9,] 43.99012
## [10,] 46.70809
## [11,] 49.42606
## [12,] 47.63622
JKT<-sum ((Y-mean(Y))^2)
JKT
## [1] 283.1825
JKR<-sum((Y.topi-mean(Y))^2)
JKR
## [1] 266.5227
R2<-JKR/JKT
R2
## [1] 0.9411695
#Uji F dengan matriks
F.hitung<-(R2/(k-1))/((1-R2)/(n-k))
F.hitung
## [1] 42.6613
#Nilai f tabel
df1<-k-1
df2<-n-k
f.tabel<-qf(0.05,df1,df2,lower.tail=FALSE)
f.tabel
## [1] 4.066181