1 Business Problem

Sebagai seorang penjual properti, kita ingin membuat model mana yang dapat memprediksi harga properti berdasarkan beberapa informasi yang ada pada data.

Tentukan variabel:

  • target: price
  • prediktor: seluruh variabel terkecuali price

2 Data Wrangling & EDA

1. Read data house_data.csv

house <- read.csv("../data_input/house_data.csv")
head(house)

2. Cek struktur data

glimpse(house)
#> Rows: 21,613
#> Columns: 9
#> $ price       <int> 221900, 538000, 180000, 604000, 510000, 1225000, 257500, 2…
#> $ bedrooms    <int> 3, 3, 2, 4, 3, 4, 3, 3, 3, 3, 3, 2, 3, 3, 5, 4, 3, 4, 2, 3…
#> $ bathrooms   <dbl> 1.00, 2.25, 1.00, 3.00, 2.00, 4.50, 2.25, 1.50, 1.00, 2.50…
#> $ sqft_living <int> 1180, 2570, 770, 1960, 1680, 5420, 1715, 1060, 1780, 1890,…
#> $ sqft_lot    <int> 5650, 7242, 10000, 5000, 8080, 101930, 6819, 9711, 7470, 6…
#> $ floors      <dbl> 1.0, 2.0, 1.0, 1.0, 1.0, 1.0, 2.0, 1.0, 1.0, 2.0, 1.0, 1.0…
#> $ waterfront  <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
#> $ grade       <int> 7, 7, 6, 7, 8, 11, 7, 7, 7, 7, 8, 7, 7, 7, 7, 9, 7, 7, 7, …
#> $ yr_built    <int> 1955, 1951, 1933, 1965, 1987, 2001, 1995, 1963, 1960, 2003…
unique(house$waterfront)
#> [1] 0 1

💡 Hasil pemeriksaan struktur data:

  • data memiliki 21,613 baris dan 9 kolom
  • semua data bertipe numerik untuk dilakukan regresi
  • ubah tipe data kolom waterfront menjadi factor karena hanya meiliki nilai 0 dan 1

3. Cleansing Data

house$waterfront <- as.factor(house$waterfront)
glimpse(house)
#> Rows: 21,613
#> Columns: 9
#> $ price       <int> 221900, 538000, 180000, 604000, 510000, 1225000, 257500, 2…
#> $ bedrooms    <int> 3, 3, 2, 4, 3, 4, 3, 3, 3, 3, 3, 2, 3, 3, 5, 4, 3, 4, 2, 3…
#> $ bathrooms   <dbl> 1.00, 2.25, 1.00, 3.00, 2.00, 4.50, 2.25, 1.50, 1.00, 2.50…
#> $ sqft_living <int> 1180, 2570, 770, 1960, 1680, 5420, 1715, 1060, 1780, 1890,…
#> $ sqft_lot    <int> 5650, 7242, 10000, 5000, 8080, 101930, 6819, 9711, 7470, 6…
#> $ floors      <dbl> 1.0, 2.0, 1.0, 1.0, 1.0, 1.0, 2.0, 1.0, 1.0, 2.0, 1.0, 1.0…
#> $ waterfront  <fct> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
#> $ grade       <int> 7, 7, 6, 7, 8, 11, 7, 7, 7, 7, 8, 7, 7, 7, 7, 9, 7, 7, 7, …
#> $ yr_built    <int> 1955, 1951, 1933, 1965, 1987, 2001, 1995, 1963, 1960, 2003…

Penjelasan tiap kolom

  • price : Harga rumah
  • bedrooms : Jumlah kamar tidur
  • bathrooms: Jumlah kamar mandi
  • sqft_living : Luas interior rumah
  • sqft_lot : Luas tanah
  • floors : Jumlah lantai
  • waterfront : Indeks apakah rumah menghadap ke tepi laut atau tidak
  • grade : Indeks mengenai tingkat ketahanan konstruksi bangunan
  • yr_built : Tahun rumah dibangun

Cek Missing Value

anyNA(house)
#> [1] FALSE

insight: tidak ada missing value dari data

3. EDA

#persebaran data
boxplot(house$price)

boxplot(house$sqft_living)

💡 Insight boxplot:

  • terdapat banyak outlier pada kolom price dan sqft_living
  • persebaran data pada kolom price dan sqft_living skewed kanan/positif
  • sebaran data pada kedua kolom tidak terlalu beragam, dilihat dari lebar box yg sempit
  • nilai median kolom price diperkirakan di angka 1000000
  • nilai median kolom sqft_living terlihat di angka 2000
#korelasi
cor(x = house$sqft_living,
    y = house$price)
#> [1] 0.7020351
plot(house$sqft_living, house$price)

> Insight

  • nilai korelasi kolom price dan sqft_living 0.7020351, bisa dikatakan semakin Luas interior rumah maka semakin tinggi harga rumah

3 Modeling

Buatlah 3 model berdasarkan feature selection yg telah dipelajari 1. model all predictor 2. model selection based on correlation (korelasi > 0.5) 3. model selection hasil stepwise (backward/forward/both)

3.1 Model dengan seluruh prediktor

#model regresi untuk seluruh prediktor (8 prediktor)
model_all <- lm(formula = price ~ .,
                data = house)

summary(model_all) 
#> 
#> Call:
#> lm(formula = price ~ ., data = house)
#> 
#> Residuals:
#>      Min       1Q   Median       3Q      Max 
#> -1384206  -112972   -10077    91060  4251811 
#> 
#> Coefficients:
#>                  Estimate    Std. Error t value             Pr(>|t|)    
#> (Intercept) 6999106.70657  121576.94670  57.569 < 0.0000000000000002 ***
#> bedrooms     -41484.20936    2040.73489 -20.328 < 0.0000000000000002 ***
#> bathrooms     51710.08964    3437.50666  15.043 < 0.0000000000000002 ***
#> sqft_living     177.91392       3.29026  54.073 < 0.0000000000000002 ***
#> sqft_lot         -0.23947       0.03679  -6.509      0.0000000000774 ***
#> floors        17283.13337    3426.85939   5.043      0.0000004609553 ***
#> waterfront1  721804.73094   17406.65326  41.467 < 0.0000000000000002 ***
#> grade        128813.92794    2149.93255  59.915 < 0.0000000000000002 ***
#> yr_built      -3963.73577      64.04988 -61.885 < 0.0000000000000002 ***
#> ---
#> Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
#> 
#> Residual standard error: 218900 on 21604 degrees of freedom
#> Multiple R-squared:  0.6446, Adjusted R-squared:  0.6445 
#> F-statistic:  4898 on 8 and 21604 DF,  p-value: < 0.00000000000000022

Interpretation

💡 Insight:

  • Coefficients: model \[price = 6999106.70657 -41484.20936*bedrooms + 51710.08964*bathrooms + 177.91392*sqft_living -0.23947*sqft_lot + 17283.13337*floors + 721804.73094*waterfront1 + 128813.92794*grade -3963.73577*yr_built\]

  • Intercept: nilai awal price akan sebesar 6999106.70657 apabila tidak terdapat informasi tambahan lainnya/apabila semua variabel prediktor bernilai nol

  • bedrooms: -41484.20936, artinya nilai price akan berkurang sebesar 41484.20936 apabila terdapat peningkatan sebesar 1 satuan pada variabel bedrooms, dengan catatan nilai variabel prediktor lainnya bernilai tetap

  • bathrooms: 51710.08964, artinya nilai price akan bertambah sebesar 51710.08964 apabila terdapat peningkatan sebesar 1 satuan pada variabel bathrooms, dengan catatan nilai variabel prediktor lainnya bernilai tetap

  • sqft_living: 177.91392, artinya nilai price akan bertambah sebesar 177.91392 apabila terdapat peningkatan sebesar 1 satuan pada variabel sqft_living, dengan catatan nilai variabel prediktor lainnya bernilai tetap

  • sqft_lot: -0.23947, artinya nilai price akan berkurang sebesar 0.23947 apabila terdapat peningkatan sebesar 1 satuan pada variabel sqft_lot, dengan catatan nilai variabel prediktor lainnya bernilai tetap

  • floors: 17283.13337, artinya nilai price akan bertambah sebesar 17283.13337 apabila terdapat peningkatan sebesar 1 satuan pada variabel floors, dengan catatan nilai variabel prediktor lainnya bernilai tetap

  • waterfront1: 721804.73094, artinya nilai price akan bertambah sebesar 721804.73094 apabila terdapat peningkatan sebesar 1 satuan pada variabel waterfront1,dengan catatan nilai variabel prediktor lainnya bernilai tetap

  • grade: 128813.92794,artinya nilai price akan bertambah sebesar 128813.92794 apabila terdapat peningkatan sebesar 1 satuan pada variabel grade, dengan catatan nilai variabel prediktor lainnya bernilai tetap

  • yr_built: -3963.73577, artinya nilai price akan berkurang sebesar 3963.73577 apabila terdapat peningkatan sebesar 1 satuan pada variabel yr_built, dengan catatan nilai variabel prediktor lainnya bernilai tetap

  • Signifikansi: semua variabel prediktor siginifikan berpengaruh terhadap price

  • R-square: 0.6445, artinya model kita bisa menjelaskan price oleh semua prediktor sebesar 64,45%

3.2 Model selection based on correlation

3.2.1 Feature Selection

  • Memilik kolom prediktor dari price berdasarkan statistik: correlation(korelasi > 0.5)
#cek korelasi
ggcorr(house, label = T, hjust = 1)

> Insight: variabel prediktor yg memiliki korelasi kuat dengan variabel target / price yakni sqft_living dan grade

#Model dengan kolom yang memiliki korelasi cukup kuat
model_selection <- lm(formula = price ~ sqft_living + grade,
                      data = house)
summary(model_selection)
#> 
#> Call:
#> lm(formula = price ~ sqft_living + grade, data = house)
#> 
#> Residuals:
#>      Min       1Q   Median       3Q      Max 
#> -1065457  -138304   -25043   100447  4794633 
#> 
#> Coefficients:
#>                Estimate  Std. Error t value            Pr(>|t|)    
#> (Intercept) -598108.986   13297.807  -44.98 <0.0000000000000002 ***
#> sqft_living     184.420       2.869   64.29 <0.0000000000000002 ***
#> grade         98554.798    2241.331   43.97 <0.0000000000000002 ***
#> ---
#> Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
#> 
#> Residual standard error: 250500 on 21610 degrees of freedom
#> Multiple R-squared:  0.5345, Adjusted R-squared:  0.5345 
#> F-statistic: 1.241e+04 on 2 and 21610 DF,  p-value: < 0.00000000000000022

Insight

  • Coefficients: model \[price = 6999106.70657+ 184.420*sqft_living + 98554.798*grade\]

  • Intercept: nilai awal price akan sebesar -598108.986 apabila tidak terdapat informasi tambahan lainnya

  • sqft_living: 184.420,artinya nilai price akan bertambah sebesar 184.420 apabila terdapat peningkatan sebesar 1 satuan pada variabel sqft_living, dengan catatan nilai variabel prediktor lainnya bernilai tetap

  • grade: 98554.798,artinya nilai price akan bertambah sebesar 98554.798 apabila terdapat peningkatan sebesar 1 satuan pada variabel grade, dengan catatan nilai variabel prediktor lainnya bernilai tetap

  • Signifikansi: variabel sqft_living dan grade siginifikan berpengaruh terhadap price

  • R-square: 0.5345, artinya model kita bisa menjelaskan price oleh semua prediktor sebesar 53,45%

3.3 Model selection hasil stepwise (forward selection)

# model tanpa prediktor dari data house untuk `price`
model_none <- lm(formula = price ~ 1,
                 data = house)
# stepwise regression: forward selection
model_forward <- step(object = model_none,
                      direction = "forward", 
                      scope = list(upper = model_all ))
#> Start:  AIC=553875.8
#> price ~ 1
#> 
#>               Df        Sum of Sq              RSS    AIC
#> + sqft_living  1 1435640399598809 1477276362322490 539204
#> + grade        1 1297612620095470 1615304141825828 541134
#> + bathrooms    1  803293306497671 2109623455423628 546904
#> + bedrooms     1  276958595500073 2635958166421226 551718
#> + waterfront   1  206679237434408 2706237524486890 552287
#> + floors       1  192086763313773 2720829998607526 552403
#> + sqft_lot     1   23417141523777 2889499620397522 553703
#> + yr_built     1    8497693415832 2904419068505468 553815
#> <none>                            2912916761921299 553876
#> 
#> Step:  AIC=539203.5
#> price ~ sqft_living
#> 
#>              Df       Sum of Sq              RSS    AIC
#> + grade       1 121320543948745 1355955818373745 537353
#> + waterfront  1 110238185400763 1367038176921727 537529
#> + yr_built    1  92854405407200 1384421956915290 537802
#> + bedrooms    1  40635382190095 1436640980132395 538603
#> + sqft_lot    1   3011349102420 1474265013220070 539161
#> + floors      1    229913654973 1477046448667517 539202
#> + bathrooms   1    147193010785 1477129169311705 539203
#> <none>                          1477276362322490 539204
#> 
#> Step:  AIC=537353.4
#> price ~ sqft_living + grade
#> 
#>              Df       Sum of Sq              RSS    AIC
#> + yr_built    1 199227645099154 1156728173274590 533921
#> + waterfront  1 108953582123633 1247002236250112 535545
#> + bedrooms    1  22141328690666 1333814489683078 537000
#> + floors      1   9622247208765 1346333571164980 537202
#> + bathrooms   1   7651853153980 1348303965219765 537233
#> + sqft_lot    1   2020142096807 1353935676276938 537323
#> <none>                          1355955818373745 537353
#> 
#> Step:  AIC=533920.9
#> price ~ sqft_living + grade + yr_built
#> 
#>              Df      Sum of Sq              RSS    AIC
#> + waterfront  1 90115805935988 1066612367338602 532170
#> + bedrooms    1 20121301261862 1136606872012728 533544
#> + bathrooms   1  8626538372689 1148101634901902 533761
#> + floors      1  4395842729126 1152332330545465 533841
#> + sqft_lot    1  1713565021968 1155014608252622 533891
#> <none>                         1156728173274590 533921
#> 
#> Step:  AIC=532169.9
#> price ~ sqft_living + grade + yr_built + waterfront
#> 
#>             Df      Sum of Sq              RSS    AIC
#> + bedrooms   1 13902067534638 1052710299803964 531888
#> + bathrooms  1  8476715048277 1058135652290326 531999
#> + floors     1  4061693690658 1062550673647944 532089
#> + sqft_lot   1  1826102349598 1064786264989004 532135
#> <none>                        1066612367338602 532170
#> 
#> Step:  AIC=531888.3
#> price ~ sqft_living + grade + yr_built + waterfront + bedrooms
#> 
#>             Df      Sum of Sq              RSS    AIC
#> + bathrooms  1 13953491780043 1038756808023922 531602
#> + floors     1  4176630866150 1048533668937814 531804
#> + sqft_lot   1  2870998480425 1049839301323540 531831
#> <none>                        1052710299803964 531888
#> 
#> Step:  AIC=531602
#> price ~ sqft_living + grade + yr_built + waterfront + bedrooms + 
#>     bathrooms
#> 
#>            Df     Sum of Sq              RSS    AIC
#> + sqft_lot  1 2243126436934 1036513681586988 531557
#> + floors    1 1431835508601 1037324972515321 531574
#> <none>                      1038756808023922 531602
#> 
#> Step:  AIC=531557.2
#> price ~ sqft_living + grade + yr_built + waterfront + bedrooms + 
#>     bathrooms + sqft_lot
#> 
#>          Df     Sum of Sq              RSS    AIC
#> + floors  1 1218939726736 1035294741860252 531534
#> <none>                    1036513681586988 531557
#> 
#> Step:  AIC=531533.8
#> price ~ sqft_living + grade + yr_built + waterfront + bedrooms + 
#>     bathrooms + sqft_lot + floors
# summary model forward
summary(model_forward)
#> 
#> Call:
#> lm(formula = price ~ sqft_living + grade + yr_built + waterfront + 
#>     bedrooms + bathrooms + sqft_lot + floors, data = house)
#> 
#> Residuals:
#>      Min       1Q   Median       3Q      Max 
#> -1384206  -112972   -10077    91060  4251811 
#> 
#> Coefficients:
#>                  Estimate    Std. Error t value             Pr(>|t|)    
#> (Intercept) 6999106.70657  121576.94670  57.569 < 0.0000000000000002 ***
#> sqft_living     177.91392       3.29026  54.073 < 0.0000000000000002 ***
#> grade        128813.92794    2149.93255  59.915 < 0.0000000000000002 ***
#> yr_built      -3963.73577      64.04988 -61.885 < 0.0000000000000002 ***
#> waterfront1  721804.73094   17406.65326  41.467 < 0.0000000000000002 ***
#> bedrooms     -41484.20936    2040.73489 -20.328 < 0.0000000000000002 ***
#> bathrooms     51710.08964    3437.50666  15.043 < 0.0000000000000002 ***
#> sqft_lot         -0.23947       0.03679  -6.509      0.0000000000774 ***
#> floors        17283.13337    3426.85939   5.043      0.0000004609553 ***
#> ---
#> Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
#> 
#> Residual standard error: 218900 on 21604 degrees of freedom
#> Multiple R-squared:  0.6446, Adjusted R-squared:  0.6445 
#> F-statistic:  4898 on 8 and 21604 DF,  p-value: < 0.00000000000000022
  • Intercept: nilai awal price akan sebesar apabila tidak terdapat informasi tambahan lainnya/apabila semua variabel prediktor bernilai nol

  • sqft_living: 177.91392, artinya nilai price akan bertambah sebesar 177.91392 apabila terdapat peningkatan sebesar 1 satuan pada variabel sqft_living, dengan catatan nilai variabel prediktor lainnya bernilai tetap

  • grade: 128813.92794,artinya nilai price akan bertambah sebesar 128813.92794 apabila terdapat peningkatan sebesar 1 satuan pada variabel grade, dengan catatan nilai variabel prediktor lainnya bernilai tetap

  • yr_built: -3963.73577, artinya nilai price akan berkurang sebesar 3963.73577 apabila terdapat peningkatan sebesar 1 satuan pada variabel yr_built, dengan catatan nilai variabel prediktor lainnya bernilai tetap

  • waterfront1: 721804.73094, artinya nilai price akan bertambah sebesar 721804.73094 apabila terdapat peningkatan sebesar 1 satuan pada variabel waterfront1,dengan catatan nilai variabel prediktor lainnya bernilai tetap

  • bedrooms: -41484.20936, artinya nilai price akan berkurang sebesar 41484.20936 apabila terdapat peningkatan sebesar 1 satuan pada variabel bedrooms, dengan catatan nilai variabel prediktor lainnya bernilai tetap

  • bathrooms: 51710.08964, artinya nilai price akan bertambah sebesar 51710.08964 apabila terdapat peningkatan sebesar 1 satuan pada variabel bathrooms, dengan catatan nilai variabel prediktor lainnya bernilai tetap

  • sqft_lot: -0.23947, artinya nilai price akan berkurang sebesar 0.23947 apabila terdapat peningkatan sebesar 1 satuan pada variabel sqft_lot, dengan catatan nilai variabel prediktor lainnya bernilai tetap

  • floors: 17283.13337, artinya nilai price akan bertambah sebesar 17283.13337 apabila terdapat peningkatan sebesar 1 satuan pada variabel floors, dengan catatan nilai variabel prediktor lainnya bernilai tetap

  • Signifikansi: semua variabel prediktor siginifikan berpengaruh terhadap price

  • R-square: 0.6445, artinya model kita bisa menjelaskan price oleh semua prediktor sebesar 64,45%

4 Evaluasi model

# menambahkan hasil prediksi dari ke tiga model ke kolom baru
house$pred_all <- predict(object = model_all, newdata = house)
house$pred_selection <- predict(object = model_selection, newdata = house)
house$pred_forward <- predict(object = model_forward, newdata = house)
head(house)

Berdasarkan RMSE model regresi manakah yang terbaik?

# RMSE model_all
RMSE(y_pred = house$pred_all,
     y_true = house$price)
#> [1] 218864.1
# RMSE model_selection
RMSE(y_pred = house$pred_selection,
     y_true = house$price)
#> [1] 250475.5
# RMSE model_forward
RMSE(y_pred = house$pred_forward,
     y_true = house$price)
#> [1] 218864.1

💡 Kesimpulan : Terdapat 2 Model yang memberikan error paling kecil dalam memprediksi nilai price, yakni adalah model_all dan model_forward, dengan nilai RSME sebesar 218864.1

5 Interpretasi Model Terbaik:

summary(model_all)
#> 
#> Call:
#> lm(formula = price ~ ., data = house)
#> 
#> Residuals:
#>      Min       1Q   Median       3Q      Max 
#> -1384206  -112972   -10077    91060  4251811 
#> 
#> Coefficients:
#>                  Estimate    Std. Error t value             Pr(>|t|)    
#> (Intercept) 6999106.70657  121576.94670  57.569 < 0.0000000000000002 ***
#> bedrooms     -41484.20936    2040.73489 -20.328 < 0.0000000000000002 ***
#> bathrooms     51710.08964    3437.50666  15.043 < 0.0000000000000002 ***
#> sqft_living     177.91392       3.29026  54.073 < 0.0000000000000002 ***
#> sqft_lot         -0.23947       0.03679  -6.509      0.0000000000774 ***
#> floors        17283.13337    3426.85939   5.043      0.0000004609553 ***
#> waterfront1  721804.73094   17406.65326  41.467 < 0.0000000000000002 ***
#> grade        128813.92794    2149.93255  59.915 < 0.0000000000000002 ***
#> yr_built      -3963.73577      64.04988 -61.885 < 0.0000000000000002 ***
#> ---
#> Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
#> 
#> Residual standard error: 218900 on 21604 degrees of freedom
#> Multiple R-squared:  0.6446, Adjusted R-squared:  0.6445 
#> F-statistic:  4898 on 8 and 21604 DF,  p-value: < 0.00000000000000022

1. Interpretasi coefficient untuk prediktor kategorik:

  • waterfront1: 721804.73094, artinya nilai price akan bertambah sebesar 721804.73094 apabila terdapat peningkatan sebesar 1 satuan pada variabel waterfront1,dengan catatan nilai variabel prediktor lainnya bernilai tetap

2. Interpretasi coefficient untuk prediktor numerik:

  • bedrooms: -41484.20936, artinya nilai price akan berkurang sebesar 41484.20936 apabila terdapat peningkatan sebesar 1 satuan pada variabel bedrooms, dengan catatan nilai variabel prediktor lainnya bernilai tetap

  • bathrooms: 51710.08964, artinya nilai price akan bertambah sebesar 51710.08964 apabila terdapat peningkatan sebesar 1 satuan pada variabel bathrooms, dengan catatan nilai variabel prediktor lainnya bernilai tetap

  • sqft_living: 177.91392, artinya nilai price akan bertambah sebesar 177.91392 apabila terdapat peningkatan sebesar 1 satuan pada variabel sqft_living, dengan catatan nilai variabel prediktor lainnya bernilai tetap

  • sqft_lot: -0.23947, artinya nilai price akan berkurang sebesar 0.23947 apabila terdapat peningkatan sebesar 1 satuan pada variabel sqft_lot, dengan catatan nilai variabel prediktor lainnya bernilai tetap

  • floors: 17283.13337, artinya nilai price akan bertambah sebesar 17283.13337 apabila terdapat peningkatan sebesar 1 satuan pada variabel floors, dengan catatan nilai variabel prediktor lainnya bernilai tetap

  • grade: 128813.92794,artinya nilai price akan bertambah sebesar 128813.92794 apabila terdapat peningkatan sebesar 1 satuan pada variabel grade, dengan catatan nilai variabel prediktor lainnya bernilai tetap

  • yr_built: -3963.73577, artinya nilai price akan berkurang sebesar 3963.73577 apabila terdapat peningkatan sebesar 1 satuan pada variabel yr_built, dengan catatan nilai variabel prediktor lainnya bernilai tetap

3. Signifikansi prediktor:

  • Signifikansi: semua variabel prediktor siginifikan berpengaruh terhadap price

4. Adjusted R Squared:

  • R-square: 0.6445, artinya model kita bisa menjelaskan price oleh semua prediktor sebesar 64,45%