Postingan kali ini akan memaparkan penggunaan analisis regresi berganda terhadap suatu kasus. Penerapannya akan memanfaatkan software R. Suatu aplikasi statistik open source yang memanfaatkan script function untuk melakukan analisis data.
Kasus :
PT Sentosa dalam beberapa bulan gencar mempromosikan sejumlah peralatan elektronik dengan membuka outlet-outlet di berbagai daerah. Berikut data sampel mengenai Penjualan (Sales), Biaya Promosi, dan Jumlah Outlet yang dikeluarkan di 15 kota di Indonesia.
Ingin dihasilkan model yang mampu memprediksi nilai Penjualan, terutama untuk kota lain yang tidak tercakup dalam sampel.
Import Data
1: ## Mengeset Directory Project
2: setwd("D:/data/blog/RegresiBerganda")
3: ## Import data.csv
4: mydata <- read.table("data.csv",sep=";",header=TRUE)
5: ## Melihat data yang sudah di import
6: mydata
Pertama (pada baris 2) dilakukan setting Direktori project, tempat menyimpan data. Ini mempermudah import data dan organisir file lainnya.
Pada baris 4, dilakukan import data ke dalam aplikasi R. Untuk melihat apakah data sudah berhasil di import, diketikkan nama data tersebut (baris 6). Apabila berhasil akan menghasilkan tampilan seperti ini.
Daerah Sales..juta.Rupiah. Promosi..juta.Rupiah. Outlet..m2.
1 JAKARTA 205 26 159
2 TANGERANG 206 28 164
3 BEKASI 254 35 198
4 BOGOR 246 31 184
5 BANDUNG 201 21 150
6 SEMARANG 291 49 208
7 SOLO 234 30 184
8 YOGYA 209 30 154
9 SURABAYA 204 24 149
10 PURWOKERTO 216 31 175
11 MADIUN 245 32 192
12 TUBAN 286 47 201
13 MALANG 312 54 248
14 KUDUS 265 40 166
15 PEKALONGAN 322 42 287
Membuat Model Regresi Berganda
7: ## Membuat model Regresi Berganda
8: modelreg <- lm(Sales..juta.Rupiah. ~ Promosi..juta.Rupiah. + Outlet..m2., data = mydata)
9: ## Koefisien Model Regressi Berganda
10: modelreg$coefficients
11: ## Nilai Sales Hasil Prediksi Model pada data.csv
12: modelreg$fitted.values
13: ## Nilai Sales observasi - Sales hasil prediksi model
14: modelreg$residuals
Baris 8 merupakan script untuk menghasilkan model regresi berganda, yang diberikan nama "modelreg".
Dari script baris 10, didapat koefisien (Bi) pada model.
Dari script baris 10, didapat koefisien (Bi) pada model.
> modelreg$coefficients
(Intercept) Promosi..juta.Rupiah. Outlet..m2.
64.6385774 2.3422457 0.5351024
Baris 12 dan 14 bertujuan untuk menghasilkan fitted values dan residual pada data yang digunakan.
Melihat Kemampuan Model
Model yang dihasilkan perlu dilihat kualitasnya. Untuk Regresi Berganda, dapat dilakukan uji Model Keseluruhan dengan memanfaatkan ANOVA, dan uji Model Parsial dengan memanfaatkan Confident Interval.
Melihat Kemampuan Model
Model yang dihasilkan perlu dilihat kualitasnya. Untuk Regresi Berganda, dapat dilakukan uji Model Keseluruhan dengan memanfaatkan ANOVA, dan uji Model Parsial dengan memanfaatkan Confident Interval.
15: ## Uji F (Melihat signifikansi keseluruhan model)
16: anova(modelreg)
17: ## COnfident Interval (Uji Parsial)
18: confint.lm(modelreg, level=0.95)
Script fungsi pada baris 16 akan menghasilkan tabel ANOVA seperti di bawah.
> anova(modelreg)
Analysis of Variance Table
Response: Sales..juta.Rupiah.
Df Sum Sq Mean Sq F value Pr(>F)
Promosi..juta.Rupiah. 1 19850.3 19850.3 208.530 5.998e-09 ***
Outlet..m2. 1 2671.0 2671.0 28.059 0.0001892 ***
Residuals 12 1142.3 95.2
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Didapat nilai F yang signifikan untuk semua nilai Alpha yang digunakan, sehingga dipastikan secara keseluruhan model ini handal dan baik.
Script fungsi baris 18 akan menghasilkan Confident Interval untuk tiap Koefisien Model seperti di bawah.
> confint.lm(modelreg, level=0.95)
2.5 % 97.5 %
(Intercept) 36.0700037 93.2071511
Promosi..juta.Rupiah. 1.4760634 3.2084281
Outlet..m2. 0.3150012 0.7552035
Didapat confident interval yang tidak melewati titik 0 (nol), sehingga tiap-tiap koefisien di atas signifikan. Sehingga secara parsial, model tersebut handal dan baik.
Untuk uji Asumsi Klasik dan kehandalan model lainnya, dapat dibantu lewat plot yang dihasilkan pada script baris 20.
Untuk uji Asumsi Klasik dan kehandalan model lainnya, dapat dibantu lewat plot yang dihasilkan pada script baris 20.
19: ## Beberapa Plot untuk Model Regresi Berganda
20: plot(modelreg)
Ringkasan model yang telah dibuat dapat dilihat lewat script fungsi pada baris 22.
21: ## Ringkasan hasil Model
22: summary(modelreg)
Sehingga didapat hasil sebagai berikut.
Menerapkan Model pada Data baru
Model yang telah dibuat (modelreg) dapat diterapkan pada data yang baru. Berikut data baru yang hanya terdapat variabel Daerah, Promosi dan Outlet (var. Independent).
Berikut script yang digunakan.
Baris 29 merupakan fungsi utama untuk melakukan prediksi ini dengan model yang dibuat.
Hasilnya adalah sebagai berikut.
> summary(modelreg)
Call:
lm(formula = Sales..juta.Rupiah. ~ Promosi..juta.Rupiah. + Outlet..m2.,
data = mydata)
Residuals:
Min 1Q Median 3Q Max
-14.891 -6.965 1.433 4.566 17.845
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 64.6386 13.1120 4.930 0.000348 ***
Promosi..juta.Rupiah. 2.3422 0.3975 5.892 7.35e-05 ***
Outlet..m2. 0.5351 0.1010 5.297 0.000189 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 9.757 on 12 degrees of freedom
Multiple R-squared: 0.9517, Adjusted R-squared: 0.9437
F-statistic: 118.3 on 2 and 12 DF, p-value: 1.265e-08
Menerapkan Model pada Data baru
Model yang telah dibuat (modelreg) dapat diterapkan pada data yang baru. Berikut data baru yang hanya terdapat variabel Daerah, Promosi dan Outlet (var. Independent).
Berikut script yang digunakan.
23: ###Prediksi nilai Sales pada data baru (newdata.csv) memakai model yg dibuat
24: ## Import newdata.csv
25: datanew <- read.table("newdata.csv",sep=";",header=TRUE)
26: ##Lihat newdata
27: datanew
28: ## Melakukan Prediksi
29: salesPredik <- predict.lm(modelreg,datanew,type="response")
30: ## Melihat Hasil Prediksi
31: salesPredik
32: ## Hasil Prediksi digabung dengan newdata.csv
33: datanew2 <- data.frame("Daerah" = newdata$Daerah, "Promosi (juta Rupiah)" = newdata$Promosi..juta.Rupiah.
34: , "Outlet (m2)" = newdata$Outlet..m2. , "SalesPrediksi (juta Rupiah" = salesPredik)
35: ## Menghasilkan newdata2.csv yang sudah ada nilai prediksinya
36: write.table(datanew2, file = "D:/data/blog/RegresiBerganda/datanew2.csv", row.names = FALSE,sep=";")
Baris 29 merupakan fungsi utama untuk melakukan prediksi ini dengan model yang dibuat.
Hasilnya adalah sebagai berikut.
Begitu postingan kali ini terkait
R Software. Script fungsi R
keseluruhan dapat diunduh pada link dibawah ini.
Semoga Bermanfaat.
J
0 komentar:
Posting Komentar