Sebagai seorang yang menjalankan bisnis peternak kepiting, mengetahui usia kepiting yang tepat dapat membantu dalam memutuskan apakah dan kapan harus memanen kepiting. Di luar usia tertentu, ada pertumbuhan karakteristik fisik kepiting yang dapat diabaikan dan karenanya, penting untuk mengatur waktu panen untuk mengurangi biaya dan meningkatkan keuntungan. Dataset ini berisi informasi atribut fisik yang diduga dapat digunakan untuk memperkirakan usia kepiting.
berdasarkan
usia kepitingusia kepiting1. Read data house_data.csv
Deskripsi data crab:
Sex: Jenis kelamin kepiting
Length: Panjang cangkang kepiting (foot)Diameter: Lebar cangkang kepiting (foot)Height: Tebal cangkang kepiting (foot)Weight: Berat kepiting (ons)Shucked.Weight: Berat kepiting tanpa cangkang
(ons)Viscera.Weight: Berat jeroan kepiting (ons)Shell.Weight: Berat cangkang kepiting (ons)Age: Usia kepiting (month)2. Cek struktur data
#> Rows: 3,893
#> Columns: 9
#> $ Sex <chr> "F", "M", "I", "F", "I", "F", "F", "M", "I", "I", "M", …
#> $ Length <dbl> 1.4375, 0.8875, 1.0375, 1.1750, 0.8875, 1.5500, 1.3000,…
#> $ Diameter <dbl> 1.1750, 0.6500, 0.7750, 0.8875, 0.6625, 1.1625, 1.0000,…
#> $ Height <dbl> 0.4125, 0.2125, 0.2500, 0.2500, 0.2125, 0.3500, 0.3250,…
#> $ Weight <dbl> 24.635715, 5.400580, 7.952035, 13.480187, 6.903103, 28.…
#> $ Shucked.Weight <dbl> 12.332033, 2.296310, 3.231843, 4.748541, 3.458639, 13.5…
#> $ Viscera.Weight <dbl> 5.5848515, 1.3749507, 1.6017467, 2.2821347, 1.4883488, …
#> $ Shell.Weight <dbl> 6.7471810, 1.5592225, 2.7640763, 5.2446575, 1.7009700, …
#> $ Age <int> 9, 6, 6, 10, 6, 8, 15, 10, 13, 7, 6, 10, 9, 10, 11, 12,…
💡 Hasil pemeriksaan struktur data: variabel Sex harus dirubah
menjadi Kategori menggunakan fungsi as.factor
3. Cleansing Data
#> Rows: 3,893
#> Columns: 9
#> $ Sex <fct> F, M, I, F, I, F, F, M, I, I, M, F, M, I, I, F, M, I, M…
#> $ Length <dbl> 1.4375, 0.8875, 1.0375, 1.1750, 0.8875, 1.5500, 1.3000,…
#> $ Diameter <dbl> 1.1750, 0.6500, 0.7750, 0.8875, 0.6625, 1.1625, 1.0000,…
#> $ Height <dbl> 0.4125, 0.2125, 0.2500, 0.2500, 0.2125, 0.3500, 0.3250,…
#> $ Weight <dbl> 24.635715, 5.400580, 7.952035, 13.480187, 6.903103, 28.…
#> $ Shucked.Weight <dbl> 12.332033, 2.296310, 3.231843, 4.748541, 3.458639, 13.5…
#> $ Viscera.Weight <dbl> 5.5848515, 1.3749507, 1.6017467, 2.2821347, 1.4883488, …
#> $ Shell.Weight <dbl> 6.7471810, 1.5592225, 2.7640763, 5.2446575, 1.7009700, …
#> $ Age <int> 9, 6, 6, 10, 6, 8, 15, 10, 13, 7, 6, 10, 9, 10, 11, 12,…
3. EDA
💡 Insight: -
💡 Insight: - variabel prediktor yang berkorelasi erat dengan Age (>= 0.5) adalah Shell.Weight, Height, Diameter dan Length
Buatlah model regresi berdasarkan ketentuan berikut: 1. model
berdasarkan Weight 2. model all predictor 3. model
selection berdasarkan nilai korelasi >= 0.5 3. model selection hasil
stepwise (backward/forward/both)
#predictor = weight
model_weight <- lm(formula = Age ~ Weight,
data = crab)
#predictor = all
model_all <- lm(formula = Age ~ .,
data = crab)
#model korelasi
model_cor <- lm(formula = Age ~ . - Shucked.Weight,
data = crab)
#model stepwise
model_none <- lm(formula = Age ~ 1,
data = crab)
model_step <- step(object = model_none,
direction = "forward",
scope = list(upper = model_all),
trace = F)Berdasarkan RMSE model regresi manakah yang terbaik?
gunakan perbandingan menggunakan fungsi compare_performance
dari package performance
library(performance)
comparison <- compare_performance(model_weight, model_all, model_cor, model_step)
as.data.frame(comparison)#> [1] 1 29
💡 Kesimpulan : model_step (forward) merupakan model
terbaik dalam melakukan prediksi usia dari kepiting karena memiliki
nilai AIC yang paling rendah, nilai RMSE yang relatif kecil dan
R-squared relatif besar dari ke-empat model yang telah dibuat.
#>
#> Call:
#> lm(formula = Age ~ Shell.Weight + Shucked.Weight + Diameter +
#> Weight + Sex + Viscera.Weight + Height, data = crab)
#>
#> Residuals:
#> Min 1Q Median 3Q Max
#> -9.9650 -1.3134 -0.3386 0.8572 13.9761
#>
#> Coefficients:
#> Estimate Std. Error t value Pr(>|t|)
#> (Intercept) 3.85202 0.28556 13.489 < 0.0000000000000002 ***
#> Shell.Weight 0.29775 0.04091 7.279 0.00000000000040584 ***
#> Shucked.Weight -0.70163 0.02950 -23.782 < 0.0000000000000002 ***
#> Diameter 4.38843 0.41087 10.681 < 0.0000000000000002 ***
#> Weight 0.31734 0.02617 12.125 < 0.0000000000000002 ***
#> SexI -0.84230 0.10612 -7.938 0.00000000000000268 ***
#> SexM 0.05896 0.08607 0.685 0.493
#> Viscera.Weight -0.37064 0.04663 -7.949 0.00000000000000244 ***
#> Height 4.09559 0.62503 6.553 0.00000000006393881 ***
#> ---
#> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
#>
#> Residual standard error: 2.195 on 3884 degrees of freedom
#> Multiple R-squared: 0.5365, Adjusted R-squared: 0.5355
#> F-statistic: 561.9 on 8 and 3884 DF, p-value: < 0.00000000000000022
1. Interpretasi coefficient untuk Intercept:
2. Interpretasi coefficient untuk prediktor kategorik:
3. Interpretasi coefficient untuk prediktor numerik:
Shell.Weight : Nilai Age akan meningkat sebesar 0.29775 month apabila nilai Shell.Weight (Berat cangkang kepiting) naik 1 ons dan variabel prediktor lainnya bernilai tetap.
Shucked.Weight : Nilai Age akan menurun sebesar 0.70163 month apabila nilai Shucked.Weight (Berat kepiting tanpa cangkang) naik 1 ons dan variabel prediktor lainnya bernilai tetap.
Diameter : Nilai Age akan meningkat sebesar 4.38843 month apabila nilai Diameter (Lebar cangkang kepiting) naik 1 foot dan variabel prediktor lainnya bernilai tetap.
Weight : Nilai Age akan meningkat sebesar 0.31734 month apabila nilai Weight (Berat kepiting) naik 1 ons dan variabel prediktor lainnya bernilai tetap.
Viscera.Weight : Nilai Age akan menurun sebesar 0.37064 month apabila nilai Viscera.Weight (Berat Jeroan Kepiting) naik 1 ons dan variabel prediktor lainnya bernilai tetap.
Height : Nilai Age akan meningkat sebesar 4.09559 month apabila nilai Height (Tebal cangkang kepiting) naik 1 foot dan variabel prediktor lainnya bernilai tetap.
4. Signifikansi prediktor:
5. Adjusted R Squared:
#Prediksi
coba lakukan prediksi untuk 10 data terakhir :
#mengambil 10 data terakhir
crab10 <- tail(crab, 10)
#melakukan prediksi
predictions <- predict(model_step, newdata = crab10)
crab10