Regression Model: Startups Data
1 Introduction
Regresi linier adalah teknik analisis statistik yang digunakan untuk
memprediksi hubungan antara dua atau lebih variabel. Pada artikel ini
kita akan membuat model regresi linier berganda menggunakan data
startups. Kita ingin mengetahui variabel apa saja yang
mempengaruhi Profit yang nantinya akan digunakan sebagai
tim data untuk mengevaluasi dan meningkatkan ptofit perusahaan.
2 Data Preparation
2.1 Importing Libraries
Langkah pertama adalah memanggil library yang akan
digunakan dalam pemodelan.
2.2 Importing Datasets
Selanjutnya, dilakukan import data 50 Startups dalam
bentuk CSV yang disimpan dalam data frame yang disimpan
dengan nama startups_data.
#> 'data.frame': 50 obs. of 5 variables:
#> $ R.D.Spend : num 165349 162598 153442 144372 142107 ...
#> $ Administration : num 136898 151378 101146 118672 91392 ...
#> $ Marketing.Spend: num 471784 443899 407935 383200 366168 ...
#> $ State : chr "New York" "California" "Florida" "New York" ...
#> $ Profit : num 192262 191792 191050 182902 166188 ...
Data di atas memiliki 50 observasi dan 5 variables. Variabel
state merupakan variabel menunjukkan negara bagian tempat
perusahaan rintisan tersebut berada. Target variabel dalam case ini
adalah Profit. Dalam case ini kita menggunakan variabel
dependen yang bersifat numerik yaitu R&D Spend,
Administration, Marketing Spend.
3 Exploratory Data Analysis
Sebelum melakukan pemodelan, kita harus memastikan bahwa data yang digunakan adalah data yang bersih dan useful. ### 3.1 Duplicates Langkah pertama dilakukan pengecekan data duplikat.
#> [1] 0
Berdasarkan hasil pengecekan diatas, data startups_data
tidak memiliki data duplikat.
3.2 Missing Values
Selanjutnya yaitu melakukan pengecekan missing values. Missing values akan menyebabkan data tidak valid saat dilakukan pemodelan. Terdapat beberapa uji yang tidak resisten terhadap missing values.
#> R.D.Spend Administration Marketing.Spend State Profit
#> 0 0 0 0 0
Berdasarkab hasil pengecekan diatas, data startups_data
tidak memiliki missing values sehingga tidak perlu dilakukan handling
missing value
3.3 Data Types
Selanjutnya, dilakukan pengecekan untuk tipe variabel. Variabel yang memiliki tipe data tidak sesuai akan mempengaruhi hasil pemodelan bahkan tidak bisa diproses dalam pemodelan.
#> 'data.frame': 50 obs. of 5 variables:
#> $ R.D.Spend : num 165349 162598 153442 144372 142107 ...
#> $ Administration : num 136898 151378 101146 118672 91392 ...
#> $ Marketing.Spend: num 471784 443899 407935 383200 366168 ...
#> $ State : chr "New York" "California" "Florida" "New York" ...
#> $ Profit : num 192262 191792 191050 182902 166188 ...
#> NULL
Berdasarkan pengecekan tipe data, variabel R.D.Spend,
Administration, Marketing.Spend memiliki tipe
yang sesuai sehingga variabel tidak perlu dilakukan perubahan tipe
data.
3.4 Boxplot
Boxplot adalah grafik visualisasi data yang digunakan dalam statistik untuk menunjukkan distribusi data. Selain itu, kita bisa melihat apakah pada data terdapat outlier/pencilan.
# Boxplot
par(new=TRUE)
bp_RnDSpend <- boxplot(startups_data$R.D.Spend, col = "grey", xlab = "R&D Spend", ylab = "Value", main = "R&D Spend Var Boxplot")# Boxplot
bp_Administration <- boxplot(startups_data$Administration, col = "grey", xlab = "Administration", ylab = "Value", main = "Administration Var Boxplot")# Boxplot
bp_Marketing.Spend <- boxplot(startups_data$Marketing.Spend, col = "grey", xlab = "Marketing Spend", ylab = "Value", main = "Marketing Spend Var Boxplot")Berdasarkan Boxplot seluruh variabel, tidak terdapat pengamatan yang
keluar dari kotak distribusi data. Hal ini menunjukkan bahwa pada data
Startups_data tidak terdapat outlier.
3.5 Descriptive Statistics
Statistika deskriptif adalah salah satu jenis statistik yang berfungsi untuk mendeskripsikan data yang fokus pada penyajian, managemen, dan klasifikasi data sehingga dapat memberikan informasi yang berguna.
#> R.D.Spend Administration Marketing.Spend State
#> Min. : 0 Min. : 51283 Min. : 0 Length:50
#> 1st Qu.: 39936 1st Qu.:103731 1st Qu.:129300 Class :character
#> Median : 73051 Median :122700 Median :212716 Mode :character
#> Mean : 73722 Mean :121345 Mean :211025
#> 3rd Qu.:101603 3rd Qu.:144842 3rd Qu.:299469
#> Max. :165349 Max. :182646 Max. :471784
#> Profit
#> Min. : 14681
#> 1st Qu.: 90139
#> Median :107978
#> Mean :112013
#> 3rd Qu.:139766
#> Max. :192262
3.6 Correlation
Korelasi digunakan untuk melihat hubungan antar variabel. Korelasi ini dapat digunakan sebagai filter awal dalam memilih variabel independen (X). Namun, korelasi memiliki beberapa kekurangan. Korelasi hanya dapat melihat seberapa besar kekuatan hubungan kedua variabel, namun tidak dapat melihat peran yang mempengaruhi dan dipengaruhi.
column <- c("R.D.Spend", "Administration", "Marketing.Spend","Profit")
boxdat <- startups_data[column]
boxdat#> R.D.Spend Administration Marketing.Spend Profit
#> 1 165349.20 136897.80 471784.10 192261.83
#> 2 162597.70 151377.59 443898.53 191792.06
#> 3 153441.51 101145.55 407934.54 191050.39
#> 4 144372.41 118671.85 383199.62 182901.99
#> 5 142107.34 91391.77 366168.42 166187.94
#> 6 131876.90 99814.71 362861.36 156991.12
#> 7 134615.46 147198.87 127716.82 156122.51
#> 8 130298.13 145530.06 323876.68 155752.60
#> 9 120542.52 148718.95 311613.29 152211.77
#> 10 123334.88 108679.17 304981.62 149759.96
#> 11 101913.08 110594.11 229160.95 146121.95
#> 12 100671.96 91790.61 249744.55 144259.40
#> 13 93863.75 127320.38 249839.44 141585.52
#> 14 91992.39 135495.07 252664.93 134307.35
#> 15 119943.24 156547.42 256512.92 132602.65
#> 16 114523.61 122616.84 261776.23 129917.04
#> 17 78013.11 121597.55 264346.06 126992.93
#> 18 94657.16 145077.58 282574.31 125370.37
#> 19 91749.16 114175.79 294919.57 124266.90
#> 20 86419.70 153514.11 0.00 122776.86
#> 21 76253.86 113867.30 298664.47 118474.03
#> 22 78389.47 153773.43 299737.29 111313.02
#> 23 73994.56 122782.75 303319.26 110352.25
#> 24 67532.53 105751.03 304768.73 108733.99
#> 25 77044.01 99281.34 140574.81 108552.04
#> 26 64664.71 139553.16 137962.62 107404.34
#> 27 75328.87 144135.98 134050.07 105733.54
#> 28 72107.60 127864.55 353183.81 105008.31
#> 29 66051.52 182645.56 118148.20 103282.38
#> 30 65605.48 153032.06 107138.38 101004.64
#> 31 61994.48 115641.28 91131.24 99937.59
#> 32 61136.38 152701.92 88218.23 97483.56
#> 33 63408.86 129219.61 46085.25 97427.84
#> 34 55493.95 103057.49 214634.81 96778.92
#> 35 46426.07 157693.92 210797.67 96712.80
#> 36 46014.02 85047.44 205517.64 96479.51
#> 37 28663.76 127056.21 201126.82 90708.19
#> 38 44069.95 51283.14 197029.42 89949.14
#> 39 20229.59 65947.93 185265.10 81229.06
#> 40 38558.51 82982.09 174999.30 81005.76
#> 41 28754.33 118546.05 172795.67 78239.91
#> 42 27892.92 84710.77 164470.71 77798.83
#> 43 23640.93 96189.63 148001.11 71498.49
#> 44 15505.73 127382.30 35534.17 69758.98
#> 45 22177.74 154806.14 28334.72 65200.33
#> 46 1000.23 124153.04 1903.93 64926.08
#> 47 1315.46 115816.21 297114.46 49490.75
#> 48 0.00 135426.92 0.00 42559.73
#> 49 542.05 51743.15 0.00 35673.41
#> 50 0.00 116983.80 45173.06 14681.40
corr_numvar <- ggcorrmat(
data = boxdat,
type = "parametric", # Person Correlation
colors = c("darkred", "white", "steelblue")
)
corr_numvar <- corr_numvar + labs(title = NULL, subtitle = NULL) + theme(
plot.margin = margin(0.15, 0, 0.1, 0.01, "npc"))
corr_numvar
grid.text(
"Correlation: Numeric Variable",
0,
0.900,
just = c("left", "bottom"),
gp = gpar(
fontsize = 22,
fontface = "bold",
fontfamily = "Econ Sans Cnd"
)
)
grid.lines(
x = c(0, 1),
y = 1,
gp = gpar(col = "#e5001c", lwd = 4)
)
grid.rect(
x = 0,
y = 1,
width = 0.05,
height = 0.025,
just = c("left", "top"),
gp = gpar(fill = "#e5001c", lwd = 0)
)
Korelasi menunjukkan bahwa variabel R & D Spend dan Marketing Spend,
memiliki korelasi positif yang kuat satu sama lain (mendekati nilai 1).
Dalam hal ini ketika satu variabel meningkat maka variabel lainnya juga
akan mengalami peningkatan. Namun, dengan hasil korelasi yang tinggi
akan menimbulkan multikolinieritas pada model regresi.
3.7 Scatter Plot
Scatter plot adalah jenis grafik yang digunakan dalam statistik dan analisis data untuk menampilkan serta menganalisis hubungan antara dua variabel numerik.
Hasil scatter plot R & D Spend dan Marketing Spend align dengan hasil korelasi, dimana setiap penambahan variabel independen, variabel dependen juga akan meningkat. Selanjutnya variabel independen yang digunakan adalah R & D Spend dan Marketing Spend
4 Modeling : Linear Regression
Setelah dilakukan preprocessing data, selanjutnya dilakukan pemodelan regresi.
4.1 Initial Model
Pada model regresi, digunakan 2 variabel independen X
yaitu (R&D Spend,Marketing Spend) dan 1
variabel dependen Y yaitu Profit
# Fungsi
model_ols <- lm(formula = Profit ~ R.D.Spend + Marketing.Spend,
data = startups_data)
# Hasil Model
model_ols#>
#> Call:
#> lm(formula = Profit ~ R.D.Spend + Marketing.Spend, data = startups_data)
#>
#> Coefficients:
#> (Intercept) R.D.Spend Marketing.Spend
#> 46975.86422 0.79658 0.02991
4.2 Assumption
Setelah dilakukan pemodelan, dari hasil model tersebut dilakukan uji asumsi regresi. #### Linearity Linearity artinya target variabel dengan prediktornya memiliki hubungan yang linear atau hubungannya bersifat garis lurus.
Dari plor dapat diluhat bahwa nilai residual berada di sekitar nilai 0,
karena nilai residual berada di sekitar angka 0, maka uji asumsi
linearity TERPENUHI.
Normality of Residuals
Uji Normalitas adalah sebuah uji yang dilakukan dengan tujuan untuk menilai sebaran data pada sebuah kelompok data atau variabel, apakah sebaran data tersebut berdistribusi normal atau tidak. Model linear regression diharapkan menghasilkan error yang berdistribusi normal. Dengan begitu, error lebih banyak berkumpul di sekitar angka nol. Pada uji ini digunakan pengujian menggunakan metode Shapiro Test.
- H0: error berdistribusi normal
- H1: error TIDAK berdistribusi normal
Kondisi yang diharapkan: H0 - p_value > alpha -> gagal tolak h0 (terima h0) - p_value < alpha -> tolak h0 (terima h1)
#>
#> Shapiro-Wilk normality test
#>
#> data: model_ols$residuals
#> W = 0.93717, p-value = 0.01042
Kesimpulan: Karena p-value < alpha, maka: - Tolak h0 - Terima h1 - Error tidak berdistribusi normal
Status: Uji asumsi Normality of Residuals
[TIDAK TERPENUHI].
Homoscedasticity of Residuals
Pengujian homoskedastisitas dilakukan dengan melihat grafik residual vs fitted values untuk mengetahui apakah dalam model regresi terdapat ketidaksamaan variabs dari residual pengamatan ke pengamatan lain. Diharapkan error yang dihasilkan oleh model menyebar secara acak atau dengan variasi konstan. Apabila divisualisasikan maka error tidak berpola.
Breusch-Pagan hypothesis test:
- H0: error menyebar konstan atau homoscedasticity
- H1: error menyebar TIDAK konstan atau heteroscedasticity
Kondisi yang diharapkan: H0 p_value > alpha -> gagal tolak h0 (terima h0) p_value < alpha -> tolak h0 (terima h1)
#>
#> studentized Breusch-Pagan test
#>
#> data: model_ols
#> BP = 2.8431, df = 2, p-value = 0.2413
Kesimpulan: Karena p-value < alpha, maka: - Tolak h0 - Terima h1
Status: Uji asumsi Homoscedasticity of Residuals
[TIDAK TERPENUHI].
Non Multicollinearity
Pengujian multikolinieritas adalah uji yang dilakukan untuk memastikan apakah di dalam sebuah model regresi ada interkorelasi atau kolinieritas antar variabel bebas.
Uji VIF (Variance Inflation Factor) dengan fungsi vif()
dari package car: * nilai VIF > 10: terjadi
multicollinearity pada model * nilai VIF < 10: tidak terjadi
multicollinearity pada model
Kondisi yang diharapkan: VIF < 10
#> R.D.Spend Marketing.Spend
#> 2.103206 2.103206
Kesimpulan: Nilai VIF < 10 maka model ols tidak terjadi Multicollinearity.
Status: Uji asumsi No Multicollinearity
[TERPENUHI].
4.3 Metrics Evaluation
Metrics Evaluation menggunakan residual model dalam perhitungannya.
Error/Residual
Error/residual adalah selisih antara hasil prediksi dengan nilai aktual.
\[ Error = prediction - actual = \hat y - y \] Metrics Evaluation
Metriks evaluation yang digunakan adalah
Ajdusted R-squared dan MAPE
Adjusted R-squared - Rentang nilai 0 sampai 1 - Semakin mendekati 1, semakin baik prediktor dalam menjelaskan target
#> [1] 0.9483418
Model OLS memiliki nilai Adjusted R-squared sebesar 0.9483418 artinya
prediktor yang digunakan sangat baik dalam menjelaskan target yaitu
Profit.
Mean Absolute Percentage Error (MAPE) MAPE menunjukkan seberapa besar penyimpangannya dalam bentuk persentase. \[ MAPE = \frac{1}{n} \sum\frac{|\hat y - y|}{y} \] Digunakan 10% (di bawah 10% dianggap baik)
#> [1] 0.1060871
Interpretasi MAPE: Hasil prediksi menyimpang sejauh 10% dari nilai aktualnya. MAPE memiliki range dalam bentuk persen, semakin kecil nilai MAPE, semakin bagus model yang kita miliki.
4.4 Variable Interpretation
Setelah dilakukan pengujian asumsi dan evaluasi metriks model, selanjutnya dapat dilakukan interpretasi hasil pemodelan.
Formula Regresi
\[\hat{y} = \beta_0 + \beta_1 x_1 + ... + \beta_n x_n\]
#>
#> Call:
#> lm(formula = Profit ~ R.D.Spend + Marketing.Spend, data = startups_data)
#>
#> Residuals:
#> Min 1Q Median 3Q Max
#> -33645 -4632 -414 6484 17097
#>
#> Coefficients:
#> Estimate Std. Error t value Pr(>|t|)
#> (Intercept) 46975.86422 2689.93292 17.464 <0.0000000000000002 ***
#> R.D.Spend 0.79658 0.04135 19.266 <0.0000000000000002 ***
#> Marketing.Spend 0.02991 0.01552 1.927 0.06 .
#> ---
#> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
#>
#> Residual standard error: 9161 on 47 degrees of freedom
#> Multiple R-squared: 0.9505, Adjusted R-squared: 0.9483
#> F-statistic: 450.8 on 2 and 47 DF, p-value: < 0.00000000000000022
Formula regresi untuk model di atas:
\[ Profit = 46975.86422 - 0.79658 * R&D Spend + 0.02991 * Marketing SPend \] Interpretasi dari model linear regression:
1. Intercept
Nilai variable target ketika semua nilai prediktor sama dengan nol. `Profit = 46975.86422 - 0.79658 * R&D Spend + 0.02991 * Marketing SPend
Arti: Ketika seluruh prediktor = 0, maka Profit bernilai 46975.86422. -> Naik sebesar 46975.86422
2. Coefficient/Slope
Besarnya perubahan nilai variable target ketika nilai prediktor bertambah 1 satuan. + Koefisien yang positif = meningkatkan nilai variable target + Koefisien yang negatif = menurunkan nilai variable target
Target: Profit Prediktor: - R & D Spend : memiliki koef. positif ; semakin tinggi R&D spend maka profit semakin besar - Marketing Spend : memiliki koef. positif; semakin tinggi biaya marketing semakin tinggi profit - Administrasi : memiliki koef. negatif ; semakin tinggi biaya administrasi semakin kecil profit
3. Signifikansi Prediktor
Mengetahui apakah setiap prediktor berpengaruh signifikan terhadap variable targetnya. + Sebuah prediktor dikatakan signifikan ketika p-value < 0.05 (alpha)
Uji hipotesis yang digunakan:
- H0: Prediktor tidak signifikan berpengaruh (Estimate = 0)
- H1: Prediktor signifikan berpengaruh (Estimate != 0)
Hasil Uji Signifikansi: - Hanya dua prediktor
(R&D Spend,Marketing Spend) yang
signifikan terhadap variabel target (Profit).
5 Conclusion
Model regresi pada case Profit memiliki metriks evaluasi
yang baik ditunjukkan dengan nilai Adjusted R-squared yang tinggi dan
MAPE yang rendah. Hanya terdapat dua prediktor yang signifikan
mempengaruhi Profit secara positif yaitu
(R&D Spend,Marketing Spend). Namun, untuk
uji asumsi seluruhnya tidak memenuhi. Hal ini perlu dilakukan penanganan
uji asumsi agar hasil pemodelan lebih valid.