Tujuan analisis:
Menganalisis hubungan umur dan dry weight
Menentukan bentuk hubungan yang paling sesuai, apakah linier atau non linier
Melakukan transformasi logaritmik untuk menguji apakah hubungan eksponensial dapat di linierkan
Mengevaluasi kelayakan model melalui uji asumsi regresi
Memberikan interpretasi
#Data
age <- c(6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16)
dry_weight <- c(0.029, 0.052, 0.079, 0.125, 0.181, 0.261, 0.425, 0.738, 1.130, 1.882, 2.812)
#Transformasi log
log_dry_weight <- log(dry_weight)
#Scatterplot Umur vs Dry Weight
plot(age, dry_weight,
main = "Scatterplot of Age vs Dry Weight",
xlab = "Age (Years)",
ylab = "Dry Weight (kg)",
pch = 16,
col = "blue")
abline(lm(dry_weight ~ age), col = "red")
Berdasarkan grafik di atas, terlihat bahwa data tidak membentuk pola linear sempurna. Titik-titik data menunjukkan tren peningkatan yang semakin curam pada umur yang lebih tinggi. Garis regresi linear yang ditambahkan pada grafik hanya mampu menggambarkan tren umum secara kasar, namun tidak dapat menangkap laju pertumbuhan yang meningkat secara progresif. Hal ini mengindikasikan bahwa hubungan antara umur dan dry weight bersifat non-linear, khususnya dengan kecenderungan pola eksponensial.
#Menghitung nilai korelasi
cor(age, dry_weight, method = "pearson")
## [1] 0.8626562
cor(age, log_dry_weight, method = "pearson")
## [1] 0.9991654
Korelasi antara umur dan dry weight meningkat drastis setelah transformasi logaritmik, dari 0.8627 menjadi 0.9992 yang menunjukkan bahwa model eksponensial lebih representatif dibanding model linier biasa.
#Analisis Regresi Linier
model1 <- lm(dry_weight ~ age)
model2 <- lm(log_dry_weight ~ age)
#Uji Asumsi Regresi
#Uji Normalitas Residual
res1=model1$residuals
res2=model2$residuals
residuals1 <- residuals(model1)
hist(residuals1, main = "Histogram of Residuals", xlab = "Residuals")
shapiro.test(residuals1)
##
## Shapiro-Wilk normality test
##
## data: residuals1
## W = 0.9207, p-value = 0.3245
Kriteria: p-value > 0.05, residual berdistribusi normal
p-value <= 0.05, residual tidak berdistribusi normal
Distribusi residual tampak tidak simetris dan condong ke kiri, menunjukkan bahwa model belum memebuhi asumsi normalitas dan kurang tepat menggambarkan hubungan antara umur dan dry weight.
residuals2 <- residuals(model2)
hist(residuals2, main = "Histogram of Residuals", xlab = "Residuals")
shapiro.test(residuals2)
##
## Shapiro-Wilk normality test
##
## data: residuals2
## W = 0.94705, p-value = 0.6066
Distribusi residual terlihat lebih simetris dan mendekati normal, menandakan bahwa transformasi logaritmik berhasil memperbaiki pola residual dan model menjadi lebih sesuai.
#Uji Autokorelasi (Durbin-Watson)
library(lmtest)
## Warning: package 'lmtest' was built under R version 4.4.3
## Loading required package: zoo
##
## Attaching package: 'zoo'
## The following objects are masked from 'package:base':
##
## as.Date, as.Date.numeric
dwtest(model1)
##
## Durbin-Watson test
##
## data: model1
## DW = 0.4623, p-value = 1.432e-05
## alternative hypothesis: true autocorrelation is greater than 0
Pada model 1, nilai DW yang sangat rendah (jauh di bawah 2) dan p-value < 0.05 menunjukkan adanya autokorelasi positif yang signifikan terhadap residual. Artinya, residual dari model linier tidak acak dan menunjukkan pola tertentu, sehingga model linier tidak memenuhi asumsi independensi residual. Hal ini memperkuat bahwa model linier kurang sesuai untuk data ini.
dwtest(model2)
##
## Durbin-Watson test
##
## data: model2
## DW = 1.3538, p-value = 0.05688
## alternative hypothesis: true autocorrelation is greater than 0
Nilai DW pada model 2 mendekati 2 dan p-value sedikit diatas 0.05 menunjukkan tidak ada autokorelasi yang signifikan pada residual. Residual dari model log-transformed bersifat acak dan model ini memenuhi asumsi independensi residual.
#Regresi non linier (model eksponensial)
model1 <- nls(dry_weight ~ a * exp(b * age), start = list(a = 0.0018, b = 0.46))
summary(model1)
##
## Formula: dry_weight ~ a * exp(b * age)
##
## Parameters:
## Estimate Std. Error t value Pr(>|t|)
## a 0.0019909 0.0002575 7.733 2.9e-05 ***
## b 0.4540547 0.0084185 53.935 1.3e-12 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.03292 on 9 degrees of freedom
##
## Number of iterations to convergence: 3
## Achieved convergence tolerance: 7.187e-06
Parameter b=0.454 menunjukkan bahwa dry weight meningkat sekitar 57.4% per tahun (e^0.454 - 1). Model memiliki residual error sangat rendah (0.0329) menandakan kesesuaian yang tinggi.
model2 <- nls(log_dry_weight ~ a + b * age, start = list(a = -6.192, b = 0.451))
summary(model2)
##
## Formula: log_dry_weight ~ a + b * age
##
## Parameters:
## Estimate Std. Error t value Pr(>|t|)
## a -6.192108 0.070348 -88.02 1.6e-14 ***
## b 0.451033 0.006146 73.38 8.2e-14 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.06446 on 9 degrees of freedom
##
## Number of iterations to convergence: 1
## Achieved convergence tolerance: 4.703e-09
Hasil model log-linier hampir identik dengan model eksponensial langsung, menunjukkan konsistensi parameter dan stabilitas model. Residual standard error kecil (0.06446) dan hubungan linier sangat kuat.
#Visualisasi Model Non-Linear
plot(age, dry_weight, main = "Non-Linear Regression (eksponensial): Age vs Dry Weight",
xlab = "Age", ylab = "Dry Weight (kg)", pch = 16, col = "blue")
lines(age, predict(model1), col = "red", lwd = 2)
Untuk memperoleh model yang lebih sesuai, dilakukan pemodelan regresi non-linear dengan bentuk fungsi eksponensial yang ditunjukkan pada grafik di atas. Dimana, kurva hasil estimasi model (garis merah) menunjukkan kesesuaian yang sangat baik terhadap pola data aktual. Model ini menggambarkan bahwa dry weight meningkat secara perlahan pada usia muda, namun pertumbuhannya semakin cepat seiring bertambahnya umur. Fenomena ini konsisten dengan pola pertumbuhan biologis pada banyak organisme, dimana laju pertumbuhan cenderung meningkat secara eksponensial pada fase perkembangan aktif.
plot(age, log_dry_weight, main = "Linearized model (Log-Transformed): Age vs Log Dry Weight",
xlab = "Age", ylab = "Log_Dry Weight (kg)", pch = 16, col = "blue")
lines(age, predict(model2), col = "red", lwd = 2)
Selanjutnya dilakukan transformasi logaritmik terhadap data berat kering untuk menguji apakah hubungan eksponensial tersebut dapat dilinearkan. Hasilnya ditunjukkan pada grafik di atas, dimana hubungan antara umur dan log dry weight membentuk garis lurus dengan kemiringan yang konstan. Garis regresi pada grafik ini hampir sempurna mengikuti titik-titik data, menunjukkan bahwa transformasi log berhasil melinearkan hubungan tersebut.
Kesimpulan:
Terdapat hubungan positif kuat dan signifikan antara umur dan dry weight
Hubungan tersebut bersifat eksponensial, bukan linier
Model terbaik untuk menggambarkan hubungan ini adalah model eksponensial atau log-linier
Laju pertumbuhan dry weight diperkirakan sekitar 57% per tahun
Model log-linier memenuhi seluruh asumsi klasik regresi, sehingga dapat digunakan untuk prediksi dan analisis lanjutan.