options(repos = c(CRAN = "https://cloud.r-project.org"))
install.packages("readxl")
## Installing package into 'C:/Users/Acer/AppData/Local/R/win-library/4.5'
## (as 'lib' is unspecified)
## package 'readxl' successfully unpacked and MD5 sums checked
## Warning: cannot remove prior installation of package 'readxl'
## Warning in file.copy(savedcopy, lib, recursive = TRUE): problem copying
## C:\Users\Acer\AppData\Local\R\win-library\4.5\00LOCK\readxl\libs\x64\readxl.dll
## to C:\Users\Acer\AppData\Local\R\win-library\4.5\readxl\libs\x64\readxl.dll:
## Permission denied
## Warning: restored 'readxl'
##
## The downloaded binary packages are in
## C:\Users\Acer\AppData\Local\Temp\RtmpUlomhz\downloaded_packages
library(readxl)
## Warning: package 'readxl' was built under R version 4.5.2
data <- read_excel("D:/2025/IZIN BELAJAR/SEMESTER 2/ANALISIS DAN VISUALISASI DATA/Tugas 2 - data_pendapatan.xlsx")
head(data)
## # A tibble: 6 × 2
## pendapatan kebahagiaan
## <dbl> <dbl>
## 1 3.63 2.31
## 2 4.79 3.23
## 3 4.92 4.60
## 4 3.21 2.66
## 5 7.25 5.60
## 6 3.73 2.46
View(data)
install.packages(“ggplot2”) install.packages(“dplyr”) install.packages(“broom”) install.packages(“ggpubr”) library(ggplot2) library(dplyr) library(broom) library(ggpubr)
install.packages("ggplot2")
## Installing package into 'C:/Users/Acer/AppData/Local/R/win-library/4.5'
## (as 'lib' is unspecified)
## package 'ggplot2' successfully unpacked and MD5 sums checked
##
## The downloaded binary packages are in
## C:\Users\Acer\AppData\Local\Temp\RtmpUlomhz\downloaded_packages
install.packages("dplyr")
## Installing package into 'C:/Users/Acer/AppData/Local/R/win-library/4.5'
## (as 'lib' is unspecified)
## package 'dplyr' successfully unpacked and MD5 sums checked
##
## The downloaded binary packages are in
## C:\Users\Acer\AppData\Local\Temp\RtmpUlomhz\downloaded_packages
install.packages("broom")
## Installing package into 'C:/Users/Acer/AppData/Local/R/win-library/4.5'
## (as 'lib' is unspecified)
## package 'broom' successfully unpacked and MD5 sums checked
##
## The downloaded binary packages are in
## C:\Users\Acer\AppData\Local\Temp\RtmpUlomhz\downloaded_packages
install.packages("ggpubr")
## Installing package into 'C:/Users/Acer/AppData/Local/R/win-library/4.5'
## (as 'lib' is unspecified)
## package 'ggpubr' successfully unpacked and MD5 sums checked
##
## The downloaded binary packages are in
## C:\Users\Acer\AppData\Local\Temp\RtmpUlomhz\downloaded_packages
library(ggplot2)
## Warning: package 'ggplot2' was built under R version 4.5.2
library(dplyr)
##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
library(broom)
## Warning: package 'broom' was built under R version 4.5.2
library(ggpubr)
## Warning: package 'ggpubr' was built under R version 4.5.2
head(data)
## # A tibble: 6 × 2
## pendapatan kebahagiaan
## <dbl> <dbl>
## 1 3.63 2.31
## 2 4.79 3.23
## 3 4.92 4.60
## 4 3.21 2.66
## 5 7.25 5.60
## 6 3.73 2.46
#a. Gunakan (plot) histogram untuk cek apakah variabel terikat berdistribusi normal atau tidak. Jelaskan interpretasi histogram tersebut!
hist(data$kebahagiaan,
main = "Histogram Variabel kebahagiaan",
xlab = "Nilai kebahagiaan",
col = "skyblue", border = "white")
Histogram di atas menunjukkan distribusi nilai kebahagiaan responden. Bentuk histogram tampak mendekati simetris dengan sebagian besar nilai berada pada rentang 2 hingga 5. Frekuensi tertinggi berada di sekitar nilai 3–4, sedangkan frekuensi di sisi kiri (nilai kecil) dan kanan (nilai besar) tampak menurun secara bertahap.
Hal ini mengindikasikan bahwa:
Data tidak terlalu miring (skewness kecil), sehingga dapat dikatakan mendekati distribusi normal.
Sebagian besar responden memiliki tingkat kebahagiaan sedang hingga cukup tinggi.
Tidak terdapat outlier ekstrem yang signifikan pada sisi kiri atau kanan.
Dengan demikian, asumsi normalitas untuk variabel terikat (Y = kebahagiaan) dapat dianggap cukup terpenuhi, sehingga data layak digunakan untuk analisis regresi linear sederhana.
#b. b. Gunakan scatter plot untuk cek apakah variabel terikat dan bebas memiliki hubungan linear. Interpretasikan hasil grafik tersebut!
plot(data$pendapatan, data$kebahagiaan,
main = "Scatter Plot pendapatan vs kebahagiaan",
xlab = "pendapatan",
ylab = "kebahagiaan",
pch = 19, col = "darkblue")
Grafik scatter plot di atas menampilkan hubungan antara variabel pendapatan (X) dan kebahagiaan (Y). Terlihat bahwa titik-titik data menyebar membentuk pola yang cenderung naik dari kiri bawah ke kanan atas. Pola ini menunjukkan bahwa semakin tinggi nilai pendapatan, maka nilai kebahagiaan juga cenderung meningkat.
Interpretasi rinci:
Hubungan antara pendapatan dan kebahagiaan tampak positif (berbanding lurus).
Sebaran data cukup rapat di sekitar garis imajiner yang menaik, menandakan bahwa hubungan linear cukup kuat.
Tidak tampak adanya pola melengkung atau penyimpangan besar, sehingga asumsi hubungan linear terpenuhi.
Dengan demikian, scatter plot ini menunjukkan bahwa pendapatan berpotensi memiliki pengaruh positif terhadap kebahagiaan, dan hubungan tersebut dapat dianalisis lebih lanjut menggunakan regresi linear sederhana.
#c. Lakukan regresi linear sederhana dan jelaskan hasil regresi tersebut!
model <- lm(kebahagiaan ~ pendapatan, data = data)
summary(model)
##
## Call:
## lm(formula = kebahagiaan ~ pendapatan, data = data)
##
## Residuals:
## Min 1Q Median 3Q Max
## -2.02292 -0.47796 0.03729 0.44564 2.38002
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 0.20906 0.08962 2.333 0.0201 *
## pendapatan 0.71239 0.01870 38.089 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.724 on 496 degrees of freedom
## Multiple R-squared: 0.7452, Adjusted R-squared: 0.7447
## F-statistic: 1451 on 1 and 496 DF, p-value: < 2.2e-16
Model regresi yang digunakan:
Y=a+bX
atau
Kebahagiaan=0.20906+0.71239×Pendapatan Kebahagiaan=0.20906+0.71239×Pendapatan 1. Koefisien Regresi
Intercept (a) = 0.20906 Artinya, ketika nilai pendapatan = 0, maka nilai kebahagiaan diperkirakan sebesar 0.209. Walaupun nilai ini tidak terlalu bermakna secara praktis (karena pendapatan 0 jarang terjadi), nilai ini tetap berguna sebagai titik awal model.
Koefisien Pendapatan (b) = 0.71239 Ini menunjukkan bahwa setiap kenaikan 1 satuan pendapatan (Rp10.000) akan meningkatkan kebahagiaan sebesar 0.712 satuan, dengan asumsi faktor lain konstan. Karena koefisiennya positif, maka hubungan antara pendapatan dan kebahagiaan bersifat positif dan searah.
Nilai p-value untuk pendapatan < 2e-16, yang jauh lebih kecil dari 0.05. Ini berarti pendapatan berpengaruh signifikan terhadap kebahagiaan. Nilai t = 38.089 menunjukkan pengaruh pendapatan yang sangat kuat.
R-squared = 0.7452 Artinya sekitar 74,52% variasi dalam kebahagiaan dapat dijelaskan oleh variabel pendapatan.
Adjusted R-squared = 0.7447 (menyesuaikan jumlah variabel dan sampel). Nilai ini juga sangat tinggi, yang berarti model regresi ini fit (cocok) dengan data.
F-statistic = 1451, p-value < 2.2e-16 Model regresi secara keseluruhan signifikan. Artinya, pendapatan sebagai prediktor memang mampu menjelaskan variasi kebahagiaan secara statistik.
#d. Gunakan perintah plot(nama variabel regresi kalian) untuk cek homoskedastisitas. Interpretasikan hasil plot
plot(model, which = 1)
Plot residual di atas menunjukkan hubungan antara nilai residual
(selisih antara data aktual dan hasil prediksi) terhadap nilai fitted
(hasil prediksi model regresi).
Dari grafik dapat diamati bahwa:
Titik-titik residual menyebar secara acak di sekitar garis horizontal nol (garis merah).
Tidak terlihat adanya pola tertentu seperti pola kipas (fan shape), pola melengkung, atau penyempitan/penggelembungan pada bagian tertentu dari sumbu X.
Sebaran residual tampak merata di sepanjang nilai fitted, dengan kepadatan relatif seragam.
Interpretasi Statistik
Pola acak seperti ini menunjukkan bahwa asumsi homoskedastisitas terpenuhi, artinya varians residual konstan di seluruh rentang nilai fitted. Dengan kata lain, model regresi ini tidak menunjukkan gejala heteroskedastisitas, sehingga hasil estimasi koefisien dapat dianggap stabil dan reliabel.
Kesimpulan
-Model regresi linear sederhana antara pendapatan (X) dan kebahagiaan (Y) telah memenuhi asumsi homoskedastisitas.
-Tidak ditemukan pola sistematis pada residual, sehingga model regresi yang digunakan layak dan valid untuk digunakan dalam interpretasi hubungan kedua variabel.
#e. Visualisasikan hasil regresi menggunakan grafik dengan langkah-langkah berikut: 1. Plot data points pada grafik 2. Tambahkan garis regresi linear pada data yang sudah diplot 3. Tambah persamaan untuk garis linear 4. Beri judul dan label yang sesuai untuk sumbu x dan y
install.packages("ggplot2")
## Warning: package 'ggplot2' is in use and will not be installed
library(ggplot2)
ggplot(data, aes(x = pendapatan, y = kebahagiaan)) +
geom_point(color = "blue") +
geom_smooth(method = "lm", se = FALSE, color = "red") +
labs(title = "Regresi Linear: Pendapatan terhadap Kebahagiaan",
x = "pendapatan",
y = "kebahagiaan") +
theme_minimal()
## `geom_smooth()` using formula = 'y ~ x'
# Tambahkan persamaan garis regresi ke dalam grafik
eq <- paste0("y = ",
round(coef(model)[1], 2), " + ",
round(coef(model)[2], 2), "x")
ggplot(data, aes(x = pendapatan, y = kebahagiaan)) +
geom_point(color = "darkblue") +
geom_smooth(method = "lm", se = FALSE, color = "red") +
annotate("text", x = mean(data$pendapatan), y = max(data$kebahagiaan),
label = eq, hjust = 0, size = 5, color = "black") +
labs(title = "Garis Regresi Linear Sederhana",
x = "Pendapatan",
y = "Kebahagiaan") +
theme_minimal()
## `geom_smooth()` using formula = 'y ~ x'