Blogroll

halo
Searching...
Sabtu, 04 Februari 2017

Analisis Regresi Berganda dengan R

14.01



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.

 > 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.


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.


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.

 > 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: