#PACKAGE
library(lmtest)
## Warning: package 'lmtest' was built under R version 4.5.3
## Loading required package: zoo
## Warning: package 'zoo' was built under R version 4.5.3
##
## Attaching package: 'zoo'
## The following objects are masked from 'package:base':
##
## as.Date, as.Date.numeric
library(ggplot2)
## Warning: package 'ggplot2' was built under R version 4.5.3
library(car)
## Warning: package 'car' was built under R version 4.5.3
## Loading required package: carData
## Warning: package 'carData' was built under R version 4.5.3
#MEMANGGIL DATA
data=read.table(file.choose(), header=T)
data
## Y X1 X2
## 1 59 90 70
## 2 60 97 77
## 3 62 97 77
## 4 65 99 77
## 5 69 106 76
## 6 65 110 68
## 7 69 115 78
## 8 70 115 78
## 9 74 118 79
## 10 70 122 80
## 11 75 127 79
## 12 76 127 79
## 13 78 127 79
## 14 81 135 85
## 15 85 140 88
#SCATTER PLOT Y (Hasil belajar mahasiswa) DAN X1 (Tingkat IQ)
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 Tingkat IQ dan Hasil belajar") +
ylab("Hasil belajar mahasiswa") +
xlab("Tingkat IQ") +
theme(plot.title = element_text(hjust = 0.5))
## `geom_smooth()` using formula = 'y ~ x'

#SCATTER PLOT Y (Hasil belajar mahasiswa) DAN X2 (Motivasi)
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 Motivasi dan Hasil belajar") +
ylab("Hasil belajar mahasiswa") +
xlab("Motivasi") +
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
## -4.0542 -0.8326 0.0654 1.4173 2.8417
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 0.69711 9.43046 0.074 0.942
## X1 0.42708 0.05444 7.846 4.59e-06 ***
## X2 0.26567 0.16869 1.575 0.141
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 2.019 on 12 degrees of freedom
## Multiple R-squared: 0.9404, Adjusted R-squared: 0.9304
## F-statistic: 94.59 on 2 and 12 DF, p-value: 4.504e-08
#PENDETEKSIAN MULTIKOLINIERITAS
#<10
vif(model)
## X1 X2
## 2.290752 2.290752
#PENGUJIAN ASUMSI
bptest(model,varformula=~fitted.values(model), studentize=FALSE)
##
## Breusch-Pagan test
##
## data: model
## BP = 0.032304, df = 1, p-value = 0.8574
dwtest(model,alternative='two.sided')
##
## Durbin-Watson test
##
## data: model
## DW = 2.0697, p-value = 0.7751
## alternative hypothesis: true autocorrelation is not 0
shapiro.test(resid(model))
##
## Shapiro-Wilk normality test
##
## data: resid(model)
## W = 0.96508, p-value = 0.7797
#2.
#Mengubah data menjadi matriks
n<-nrow(data)
n
## [1] 15
k<-ncol(data)
k
## [1] 3
#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 90 70
## [2,] 1 97 77
## [3,] 1 97 77
## [4,] 1 99 77
## [5,] 1 106 76
## [6,] 1 110 68
## [7,] 1 115 78
## [8,] 1 115 78
## [9,] 1 118 79
## [10,] 1 122 80
## [11,] 1 127 79
## [12,] 1 127 79
## [13,] 1 127 79
## [14,] 1 135 85
## [15,] 1 140 88
Y<-as.matrix(data$Y)
Y
## [,1]
## [1,] 59
## [2,] 60
## [3,] 62
## [4,] 65
## [5,] 69
## [6,] 65
## [7,] 69
## [8,] 70
## [9,] 74
## [10,] 70
## [11,] 75
## [12,] 76
## [13,] 78
## [14,] 81
## [15,] 85
#Penaksiran parameter dengan matriks
x.trans<-t(X)
a<-x.trans %*% X
a
## [,1] [,2] [,3]
## [1,] 15 1725 1170
## [2,] 1725 201525 135313
## [3,] 1170 135313 91588
a.inv<-solve(a)
a.inv
## [,1] [,2] [,3]
## [1,] 21.8261023 0.0483204037 -0.350208744
## [2,] 0.0483204 0.0007272227 -0.001691680
## [3,] -0.3502087 -0.0016916797 0.006983999
b<-x.trans %*% Y
b
## [,1]
## [1,] 1058
## [2,] 123218
## [3,] 82937
b.topi<-a.inv %*% b
b.topi
## [,1]
## [1,] 0.6971070
## [2,] 0.4270771
## [3,] 0.2656713
#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 0.6971070
## Beta_1 0.4270771
## Beta_2 0.2656713
model=lm(Y~X1+X2,data=data)
summary(model)
##
## Call:
## lm(formula = Y ~ X1 + X2, data = data)
##
## Residuals:
## Min 1Q Median 3Q Max
## -4.0542 -0.8326 0.0654 1.4173 2.8417
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 0.69711 9.43046 0.074 0.942
## X1 0.42708 0.05444 7.846 4.59e-06 ***
## X2 0.26567 0.16869 1.575 0.141
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 2.019 on 12 degrees of freedom
## Multiple R-squared: 0.9404, Adjusted R-squared: 0.9304
## F-statistic: 94.59 on 2 and 12 DF, p-value: 4.504e-08
#3. Koefisien determinasi
Y.topi<-X %*% b.topi
Y.topi
## [,1]
## [1,] 57.73104
## [2,] 62.58027
## [3,] 62.58027
## [4,] 63.43443
## [5,] 66.15830
## [6,] 65.74123
## [7,] 70.53333
## [8,] 70.53333
## [9,] 72.08024
## [10,] 74.05422
## [11,] 75.92393
## [12,] 75.92393
## [13,] 75.92393
## [14,] 80.93457
## [15,] 83.86697
JKT<-sum((Y-mean(Y))^2)
JKT
## [1] 819.7333
JKR<-sum((Y.topi-mean(Y))^2)
JKR
## [1] 770.8376
R2<-JKR/JKT
R2
## [1] 0.9403516
#Uji F dengan matriks
F_hitung<-(R2/(k-1))/((1-R2)/(n-k))
F_hitung
## [1] 94.58948
#Nilai f tabel
df1<-k-1
df2<-n-k
f_tabel<-qf(0.05,df1,df2,lower.tail = F)
f_tabel
## [1] 3.885294