library(readr)
library(vctrs)
library(ggplot2)
library(stats)
library(psych)
## 
## Attaching package: 'psych'
## The following objects are masked from 'package:ggplot2':
## 
##     %+%, alpha
library(olsrr)
## 
## Attaching package: 'olsrr'
## The following object is masked from 'package:datasets':
## 
##     rivers
library(car)
## Loading required package: carData
## 
## Attaching package: 'car'
## The following object is masked from 'package:psych':
## 
##     logit
library(carData)
library(nortest)
library(lmtest)
## Loading required package: zoo
## 
## Attaching package: 'zoo'
## The following objects are masked from 'package:base':
## 
##     as.Date, as.Date.numeric

Memanggil Data

dataa = read.csv("C:/Users/LAILI/Downloads/Cellphone.csv", header=TRUE) 
head(dataa)
##   Product_id Price Sale weight resoloution ppi cpu.core cpu.freq internal.mem
## 1        203  2357   10  135.0         5.2 424        8     1.35           16
## 2        880  1749   10  125.0         4.0 233        2     1.30            4
## 3         40  1916   10  110.0         4.7 312        4     1.20            8
## 4         99  1315   11  118.5         4.0 233        2     1.30            4
## 5        880  1749   11  125.0         4.0 233        2     1.30            4
## 6        947  2137   12  150.0         5.5 401        4     2.30           16
##     ram RearCam Front_Cam battery thickness
## 1 3.000   13.00         8    2610       7.4
## 2 1.000    3.15         0    1700       9.9
## 3 1.500   13.00         5    2000       7.6
## 4 0.512    3.15         0    1400      11.0
## 5 1.000    3.15         0    1700       9.9
## 6 2.000   16.00         8    2500       9.5
attach(dataa)
summary(dataa)
##    Product_id         Price           Sale            weight     
##  Min.   :  10.0   Min.   : 614   Min.   :  10.0   Min.   : 66.0  
##  1st Qu.: 237.0   1st Qu.:1734   1st Qu.:  37.0   1st Qu.:134.1  
##  Median : 774.0   Median :2258   Median : 106.0   Median :153.0  
##  Mean   : 675.6   Mean   :2216   Mean   : 621.5   Mean   :170.4  
##  3rd Qu.:1026.0   3rd Qu.:2744   3rd Qu.: 382.0   3rd Qu.:170.0  
##  Max.   :1339.0   Max.   :4361   Max.   :9807.0   Max.   :753.0  
##   resoloution         ppi           cpu.core        cpu.freq    
##  Min.   : 1.40   Min.   :121.0   Min.   :0.000   Min.   :0.000  
##  1st Qu.: 4.80   1st Qu.:233.0   1st Qu.:4.000   1st Qu.:1.200  
##  Median : 5.15   Median :294.0   Median :4.000   Median :1.400  
##  Mean   : 5.21   Mean   :335.1   Mean   :4.857   Mean   :1.503  
##  3rd Qu.: 5.50   3rd Qu.:428.0   3rd Qu.:8.000   3rd Qu.:1.875  
##  Max.   :12.20   Max.   :806.0   Max.   :8.000   Max.   :2.700  
##   internal.mem        ram           RearCam        Front_Cam     
##  Min.   :  0.0   Min.   :0.000   Min.   : 0.00   Min.   : 0.000  
##  1st Qu.:  8.0   1st Qu.:1.000   1st Qu.: 5.00   1st Qu.: 0.000  
##  Median : 16.0   Median :2.000   Median :12.00   Median : 5.000  
##  Mean   : 24.5   Mean   :2.205   Mean   :10.38   Mean   : 4.503  
##  3rd Qu.: 32.0   3rd Qu.:3.000   3rd Qu.:16.00   3rd Qu.: 8.000  
##  Max.   :128.0   Max.   :6.000   Max.   :23.00   Max.   :20.000  
##     battery       thickness     
##  Min.   : 800   Min.   : 5.100  
##  1st Qu.:2040   1st Qu.: 7.600  
##  Median :2800   Median : 8.400  
##  Mean   :2842   Mean   : 8.922  
##  3rd Qu.:3240   3rd Qu.: 9.800  
##  Max.   :9500   Max.   :18.500

Pemilihan Model Terbaik dengan melhat AIC

lm1= lm(Price~Sale+ppi+cpu.core+cpu.freq+internal.mem+ram+Front_Cam+battery+thickness, data=dataa)
summary(lm1)
## 
## Call:
## lm(formula = Price ~ Sale + ppi + cpu.core + cpu.freq + internal.mem + 
##     ram + Front_Cam + battery + thickness, data = dataa)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -355.02 -114.94   -9.21  110.25  489.46 
## 
## Coefficients:
##                Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  1360.44222  141.27642   9.630  < 2e-16 ***
## Sale           -0.02712    0.01150  -2.359   0.0196 *  
## ppi             1.28488    0.19681   6.529 9.52e-10 ***
## cpu.core       59.08206   10.01879   5.897 2.33e-08 ***
## cpu.freq       90.37346   41.46806   2.179   0.0309 *  
## internal.mem    6.88009    1.20814   5.695 6.26e-08 ***
## ram           113.09347   26.20975   4.315 2.87e-05 ***
## Front_Cam      10.75465    5.31424   2.024   0.0448 *  
## battery         0.02514    0.01443   1.743   0.0835 .  
## thickness     -58.18385   10.35013  -5.622 8.89e-08 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 180.4 on 151 degrees of freedom
## Multiple R-squared:  0.948,  Adjusted R-squared:  0.9449 
## F-statistic: 305.7 on 9 and 151 DF,  p-value: < 2.2e-16
AIC=c(AIC(lm1))
BIC=c(BIC(lm1))
AdjustedRsquared=c(summary(lm1)[[9]])
ResidualStandardError=c(summary(lm1)[[6]])
Model=c("LM1")

Kriteria=data.frame(Model,AdjustedRsquared,
                    ResidualStandardError,AIC,BIC)
Kriteria
##   Model AdjustedRsquared ResidualStandardError     AIC      BIC
## 1   LM1         0.944875              180.3604 2141.35 2175.246

Model Regresi Linier Berganda

reg <- lm(Price ~ Sale+ppi+cpu.core+cpu.freq+internal.mem+ram+Front_Cam+battery+thickness, data=dataa)
sumreg <- summary(reg)

n <- dim(dataa)[1]
x <- matrix(c(rep(1,n),Sale,ppi,cpu.core,cpu.freq,internal.mem,ram,Front_Cam,battery,thickness), nrow = n)
y <- Price
k <- dim(x)[2]
estimate <- solve(t(x)%*%x)%*%(t(x)%*%y)
y_hat <- x%*%estimate

sumreg
## 
## Call:
## lm(formula = Price ~ Sale + ppi + cpu.core + cpu.freq + internal.mem + 
##     ram + Front_Cam + battery + thickness, data = dataa)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -355.02 -114.94   -9.21  110.25  489.46 
## 
## Coefficients:
##                Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  1360.44222  141.27642   9.630  < 2e-16 ***
## Sale           -0.02712    0.01150  -2.359   0.0196 *  
## ppi             1.28488    0.19681   6.529 9.52e-10 ***
## cpu.core       59.08206   10.01879   5.897 2.33e-08 ***
## cpu.freq       90.37346   41.46806   2.179   0.0309 *  
## internal.mem    6.88009    1.20814   5.695 6.26e-08 ***
## ram           113.09347   26.20975   4.315 2.87e-05 ***
## Front_Cam      10.75465    5.31424   2.024   0.0448 *  
## battery         0.02514    0.01443   1.743   0.0835 .  
## thickness     -58.18385   10.35013  -5.622 8.89e-08 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 180.4 on 151 degrees of freedom
## Multiple R-squared:  0.948,  Adjusted R-squared:  0.9449 
## F-statistic: 305.7 on 9 and 151 DF,  p-value: < 2.2e-16
n
## [1] 161
k
## [1] 10
b0 <- sumreg$coefficients[1, 1]
b1 <- abs(sumreg$coefficients[2, 1])
b2 <- sumreg$coefficients[3, 1]
b3 <- sumreg$coefficients[4, 1]
b4 <- sumreg$coefficients[5, 1]
b5 <- sumreg$coefficients[6, 1]
b6 <- sumreg$coefficients[7, 1]
b7 <- sumreg$coefficients[8, 1]
b8 <- sumreg$coefficients[9, 1]
b9 <- abs(sumreg$coefficients[10, 1])


sprintf('Persamaan regresi dari data tersebut adalah : y = %f - %fx + %fx2 + %fx3 + %fx4 + %fx5 + %fx6 + %fx7 + %fx8 - %fx9', b0, b1, b2, b3, b4, b5, b6, b7, b8, b9)
## [1] "Persamaan regresi dari data tersebut adalah : y = 1360.442216 - 0.027116x + 1.284878x2 + 59.082059x3 + 90.373461x4 + 6.880094x5 + 113.093465x6 + 10.754651x7 + 0.025137x8 - 58.183847x9"

Uji F (Simultan) dan tabel ANOVA

H0 = Variabel bebas tidak ada pengaruh signifikan terhadap variabel terikat

H1 = Variabel bebas ada pengaruh signifikan terhadap variabel terikat

ybar <- rep(mean(y),n)
JKreg <-t(y_hat-ybar)%*%(y_hat-ybar)
JKg <- t(y-y_hat)%*%(y-y_hat)
JKt <- t(y-ybar)%*%(y-ybar)
Sum_of_Square <- c(JKreg, JKg, JKt)
dbreg <- k-1
dbtotal <- n-1
dbgalat <- dbtotal-dbreg
df <- c(dbreg, dbgalat, dbtotal)
Mean_Square <- Sum_of_Square/df
model <- c("regresi", "galat", "total")
anreg <- data.frame(model, Sum_of_Square, df, Mean_Square)
names(anreg) <- c("Model", "Sum Of Square", "df", "Mean Square")
F_hit <- anreg$`Mean Square`[1]/anreg$`Mean Square`[2]
pf <- pf(F_hit, anreg$df[1], anreg$df[2], lower.tail = FALSE)
anreg
##     Model Sum Of Square  df Mean Square
## 1 regresi      89505833   9  9945092.54
## 2   galat       4912012 151    32529.88
## 3   total      94417845 160   590111.53
F_hit
## [1] 305.7218
pf
## [1] 3.508106e-92
print("Karena nilai F hitung adalah 305,7218 > 1,88 dimana Fhitung > F tabel maka Tolak H0, karena P-Value =  3.289071e-91 < alpha (0,05) maka Tolak H0 sehingga dapat disimpulkan variabel terikat (Y) terdapat hubungan dengan variabel bebas (X) ")
## [1] "Karena nilai F hitung adalah 305,7218 > 1,88 dimana Fhitung > F tabel maka Tolak H0, karena P-Value =  3.289071e-91 < alpha (0,05) maka Tolak H0 sehingga dapat disimpulkan variabel terikat (Y) terdapat hubungan dengan variabel bebas (X) "

Uji t (parsial)

H0 = Variabel X (tertentu) tidak mempengaruhi variabel Y

H1 = Variabel X (tertentu) mempengaruhi variabel Y

alpha = 0,05

var_cov <-anreg$`Mean Square`[2]*solve(t(x)%*%x)
sd <-rep(0,k) 
  for(i in 1:k){sd[i]<-sqrt(var_cov[i,i])}
t <- estimate/sd
p <- 2*pt(abs(t),anreg$df[2], lower.tail=FALSE)
t_tabel = qt(0.05/2, 151, lower.tail =FALSE)
t
##            [,1]
##  [1,]  9.629648
##  [2,] -2.358725
##  [3,]  6.528598
##  [4,]  5.897125
##  [5,]  2.179351
##  [6,]  5.694796
##  [7,]  4.314939
##  [8,]  2.023742
##  [9,]  1.742521
## [10,] -5.621558
t_tabel
## [1] 1.975799
# Sale
print("Untuk variabel Sale diperoleh nilai Thitung < Ttabel = -2,359 < 1,97580 maka Gagal Tolak H0, sehingga dapat disimpulkan bahwa secara parsial tidak terdapat hubungan antara Sale dengan Price." )
## [1] "Untuk variabel Sale diperoleh nilai Thitung < Ttabel = -2,359 < 1,97580 maka Gagal Tolak H0, sehingga dapat disimpulkan bahwa secara parsial tidak terdapat hubungan antara Sale dengan Price."
# ppi
print("Untuk variabel ppi diperoleh nilai Thitung > Ttabel = 6,529 > 1,97580 maka Tolak H0, sehingga dapat disimpulkan bahwa secara parsial terdapat hubungan antara ppi dengan Price." )
## [1] "Untuk variabel ppi diperoleh nilai Thitung > Ttabel = 6,529 > 1,97580 maka Tolak H0, sehingga dapat disimpulkan bahwa secara parsial terdapat hubungan antara ppi dengan Price."
# cpu.core
print("Untuk variabel cpu.core diperoleh nilai Thitung > Ttabel = 5,897 > 1,97580 maka Tolak H0, sehingga dapat disimpulkan bahwa secara parsial terdapat hubungan antara cpu.core dengan Price" )
## [1] "Untuk variabel cpu.core diperoleh nilai Thitung > Ttabel = 5,897 > 1,97580 maka Tolak H0, sehingga dapat disimpulkan bahwa secara parsial terdapat hubungan antara cpu.core dengan Price"
# cpu.freq
print("Untuk variabel cpu.freq diperoleh nilai Thitung > Ttabel = 2,179 > 1,97580 maka Tolak H0, sehingga dapat disimpulkan bahwa secara parsial terdapat hubungan antara cpu.freq dengan Price." )
## [1] "Untuk variabel cpu.freq diperoleh nilai Thitung > Ttabel = 2,179 > 1,97580 maka Tolak H0, sehingga dapat disimpulkan bahwa secara parsial terdapat hubungan antara cpu.freq dengan Price."
# internal.mem
print("Untuk variabel internal.mem diperoleh nilai Thitung > Ttabel = 5,695 > 1,97580 maka Tolak H0, sehingga dapat disimpulkan bahwa secara parsial terdapat hubungan antara internal.mem dengan Price" )
## [1] "Untuk variabel internal.mem diperoleh nilai Thitung > Ttabel = 5,695 > 1,97580 maka Tolak H0, sehingga dapat disimpulkan bahwa secara parsial terdapat hubungan antara internal.mem dengan Price"
# ram
print("Untuk variabel ram diperoleh nilai Thitung > Ttabel = 4, 315 > 1,97580 maka Tolak H0, sehingga dapat disimpulkan bahwa secara parsial terdapat hubungan antara ram dengan Price" )
## [1] "Untuk variabel ram diperoleh nilai Thitung > Ttabel = 4, 315 > 1,97580 maka Tolak H0, sehingga dapat disimpulkan bahwa secara parsial terdapat hubungan antara ram dengan Price"
# Front Cam
print("Untuk variabel Front.cam diperoleh nilai Thitung > Ttabel = 2,024 > 1,97580 maka Tolak H0, sehingga dapat disimpulkan bahwa secara parsial terdapat hubungan antara Front.cam dengan Price")
## [1] "Untuk variabel Front.cam diperoleh nilai Thitung > Ttabel = 2,024 > 1,97580 maka Tolak H0, sehingga dapat disimpulkan bahwa secara parsial terdapat hubungan antara Front.cam dengan Price"
# battery
print("Untuk variabel battery diperoleh nilai Thitung > Ttabel = 1,743 > 1,97580 maka Tolak H0, sehingga dapat disimpulkan bahwa secara parsial terdapat hubungan antara battery dengan Price" )
## [1] "Untuk variabel battery diperoleh nilai Thitung > Ttabel = 1,743 > 1,97580 maka Tolak H0, sehingga dapat disimpulkan bahwa secara parsial terdapat hubungan antara battery dengan Price"
# thickness
print("Untuk variabel thickness diperoleh nilai Thitung < Ttabel = -5,622 < 1,97580 maka Gagal Tolak H0, sehingga dapat disimpulkan bahwa secara parsial tidak terdapat hubungan antara thickness dengan Price" )
## [1] "Untuk variabel thickness diperoleh nilai Thitung < Ttabel = -5,622 < 1,97580 maka Gagal Tolak H0, sehingga dapat disimpulkan bahwa secara parsial tidak terdapat hubungan antara thickness dengan Price"

#pendeteksian multikolinieritas

library(car)
VIF <- vif(reg)
VIF
##         Sale          ppi     cpu.core     cpu.freq internal.mem          ram 
##     1.554903     3.463162     2.949009     3.042657     5.956606     8.756370 
##    Front_Cam      battery    thickness 
##     2.618849     1.912607     2.532990
print("dari semua variabel (X) memliki nilai multikolinearitas dibawah 10 yang berarti tidak ada multikolinieritas")
## [1] "dari semua variabel (X) memliki nilai multikolinearitas dibawah 10 yang berarti tidak ada multikolinieritas"

UJI ASUMSI KLASIK

#uji normalitas

H0 = galat menyebar normal H1 = galat tidak menyebar normal

sisa <- reg$residuals

shapiro <- shapiro.test(sisa)
shapiro
## 
##  Shapiro-Wilk normality test
## 
## data:  sisa
## W = 0.98787, p-value = 0.178
print("Nilai P-Value 0,178 > alpha(0,05) maka Gagal Tolak H0 berarti galat menyebar normal, sehingga asumsi normalitas galat masih terpenuhi")
## [1] "Nilai P-Value 0,178 > alpha(0,05) maka Gagal Tolak H0 berarti galat menyebar normal, sehingga asumsi normalitas galat masih terpenuhi"

#Visualisasi regresi

par(mfrow=c(2,2))
plot(reg)

residual = reg$residuals
residual
##           1           2           3           4           5           6 
## -313.065039  246.476835  -76.359474  -60.763225  246.503951 -114.940601 
##           7           8           9          10          11          12 
## -174.674799 -114.913485  -60.681877  245.764386 -297.241034  104.217668 
##          13          14          15          16          17          18 
##  232.309962   38.659625  245.791502 -177.538418   53.447022  135.437133 
##          19          20          21          22          23          24 
## -177.484186 -174.484986 -297.105454 -285.758862 -146.803100   38.849438 
##          25          26          27          28          29          30 
## -286.324211 -355.015771  104.434596  135.599830 -354.988655  128.636824 
##          31          32          33          34          35          36 
##   53.691067 -146.694636  489.051266  -47.832022    8.097839  -47.777790 
##          37          38          39          40          41          42 
## -286.053050  -53.832623  228.321797 -285.379236  -53.778391 -236.610820 
##          43          44          45          46          47          48 
##  228.975186 -236.529472 -142.646956  -48.609096    8.341884  489.458007 
##          49          50          51          52          53          54 
##  229.056534  -59.099304  209.602961  -93.191500 -142.565607  202.026080 
##          55          56          57          58          59          60 
##   90.775008  228.565842  202.215893   91.100401  -48.148122  209.982586 
##          61          62          63          64          65          66 
##  264.781839  -82.057063  -92.540714  -87.978393  -58.285821  265.188580 
##          67          68          69          70          71          72 
##  -81.813018 -311.292002   24.042958  -87.544535   24.097191  -61.967244 
##          73          74          75          76          77          78 
## -310.993725  -85.815304  331.634670  -61.777432  331.743134 -223.310908 
##          79          80          81          82          83          84 
##   95.281630   -9.212701   95.417211  -52.452729   -9.050005   85.125729 
##          85          86          87          88          89          90 
##  -73.102492 -222.958399  -52.235800   85.342657 -172.810053 -172.294847 
##          91          92          93          94          95          96 
##  -72.343242  -34.045086  -33.692577   26.284685  -97.382745   26.338917 
##          97          98          99         100         101         102 
##   35.921356   35.948472  109.793696  -96.460798   60.273708  -13.264969 
##         103         104         105         106         107         108 
##  110.254669   60.490636  213.524727  -12.939576  213.687424 -193.622928 
##         109         110         111         112         113         114 
## -193.297535   75.815087 -113.275390    5.764618    5.900198 -113.031345 
##         115         116         117         118         119         120 
## -121.295557   76.465873  294.686766  295.310436 -255.877918  208.020308 
##         121         122         123         124         125         126 
##  208.128772 -255.552525  135.927260  136.089957 -118.339903   72.108969 
##         127         128         129         130         131         132 
##   72.217433 -146.002879 -145.975763 -175.337563   18.565020   19.676780 
##         133         134         135         136         137         138 
## -173.493669    9.494210    9.928067  150.493120  152.174318  -61.356595 
##         139         140         141         142         143         144 
##   46.549427   47.471374  172.567656  173.923460   55.791824   57.256092 
##         145         146         147         148         149         150 
##  165.067205  167.263608 -115.382962 -114.921989  -19.123566  -53.817225 
##         151         152         153         154         155         156 
##  -53.491832  -17.306788  387.388245  388.554237   -6.636731 -132.057519 
##         157         158         159         160         161 
## -125.820820 -304.082339  164.156754 -278.864379  161.157609
qqPlot(residual, distribution="norm",main= "Normal QQ Plot")

## [1] 48 33

#uji homogenitas

H0 = tidak terjadi heteroskesdastisitas H1 = terjadi heteroskesdastisitas

library(skedastic) # Uji Glejser dan Breuspagan
library(tidyselect) # Uji Glejser
glejser(reg)
## # A tibble: 1 × 4
##   statistic p.value parameter alternative
##       <dbl>   <dbl>     <dbl> <chr>      
## 1      13.0   0.164         9 greater
print("Dari Uji Glejser didapatan nilai Pvalue = 0.1639055 > alpha(0,05) maka Gagal Tolak H0. Dapat disimpulkan bahwa tidak terdapat heteroskesdastisitas" )
## [1] "Dari Uji Glejser didapatan nilai Pvalue = 0.1639055 > alpha(0,05) maka Gagal Tolak H0. Dapat disimpulkan bahwa tidak terdapat heteroskesdastisitas"

#uji Non Autokorelasi

H0 = tidak terjadi kasus autokorelasi H1 = terjadi kasus autokorelasi

library(lmtest) 
lmtest::dwtest(reg, alternative = 'two.sided')
## 
##  Durbin-Watson test
## 
## data:  reg
## DW = 1.9948, p-value = 0.8359
## alternative hypothesis: true autocorrelation is not 0
print("Nilai Pvalue = 0.8359 > alpha(0,05) maka Gagal Tolak H0, dapat disimpulkan bahwa tidak terjadi kasus autokorelasi")
## [1] "Nilai Pvalue = 0.8359 > alpha(0,05) maka Gagal Tolak H0, dapat disimpulkan bahwa tidak terjadi kasus autokorelasi"

Ukuran Kebaikan Model

Koefisien Determinasi

R2 <- anreg$`Sum Of Square`[1]/anreg$`Sum Of Square`[3]
R2
## [1] 0.9479758
Tabel=data.frame(AIC,R2)
Tabel
##       AIC        R2
## 1 2141.35 0.9479758
print("Sehingga pada hasil output AIC dan R2 untuk ukuran kebaikan model, menunjukkan AIC sebesar 2141.350 dan R2 sebesar 0.9479758 berarti kemampuan variabel (X) menjelaskan variabel respon (Y) sebesar 94,79758 % serta sisanya sebesar 5,20242% (100%- 94,79758 %) dipengaruhi variabel lain yang tidak digunakan dalam penelitian ini.")
## [1] "Sehingga pada hasil output AIC dan R2 untuk ukuran kebaikan model, menunjukkan AIC sebesar 2141.350 dan R2 sebesar 0.9479758 berarti kemampuan variabel (X) menjelaskan variabel respon (Y) sebesar 94,79758 % serta sisanya sebesar 5,20242% (100%- 94,79758 %) dipengaruhi variabel lain yang tidak digunakan dalam penelitian ini."