Pendahuluan Tujuan dari analisis ini adalah untuk memprediksi Profit startup berdasarkan beberapa variabel seperti pengeluaran pada R&D, Administrasi, Pemasaran, dan lokasi (State).
Analisis ini bertujuan untuk memahami faktor-faktor yang memengaruhi Profit startup dengan memanfaatkan data dari pengeluaran R&D, Administrasi, Pemasaran, dan lokasi (State). Model regresi linier digunakan untuk mengevaluasi pengaruh variabel prediktor terhadap target variabel.
# Load library
library(tidyverse)
library(caret)
library(corrplot)
library(car)
library(fastDummies)
# Load dataset
startup_data <- read_csv("C:/Users/gray0/Downloads/Capstone/ML/LBB 1/50_Startups.csv")
colnames(startup_data) <- make.names(colnames(startup_data))
head(startup_data)
## # A tibble: 6 × 5
## RnD.Spend Administration Marketing.Spend State Profit
## <dbl> <dbl> <dbl> <chr> <dbl>
## 1 165349. 136898. 471784. New York 192262.
## 2 162598. 151378. 443899. California 191792.
## 3 153442. 101146. 407935. Florida 191050.
## 4 144372. 118672. 383200. New York 182902.
## 5 142107. 91392. 366168. Florida 166188.
## 6 131877. 99815. 362861. New York 156991.
# Ringkasan dataset
summary(startup_data)
## RnD.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
# Visualisasi scatter plot
pairs(~Profit + RnD.Spend + Administration + Marketing.Spend, data = startup_data, main = "Scatter Plot")
# Cek distribusi State
ggplot(startup_data, aes(x = State)) +
geom_bar(fill = "steelblue") +
labs(title = "Distribusi State", x = "State", y = "Frekuensi") +
theme_minimal()
# One-hot encoding untuk State
startup_data <- startup_data %>%
mutate(State = factor(State)) %>%
dummy_cols(select_columns = "State", remove_first_dummy = TRUE, remove_selected_columns = TRUE)
# Cek multikolinearitas
cor_matrix <- cor(startup_data %>% select(-Profit))
corrplot(cor_matrix, method = "circle")
# Variance Inflation Factor (VIF)
model_temp <- lm(Profit ~ ., data = startup_data)
vif(model_temp)
## RnD.Spend Administration Marketing.Spend State_Florida
## 2.495511 1.177766 2.416797 1.387641
## `State_New York`
## 1.335061
# Split data
set.seed(123)
train_index <- createDataPartition(startup_data$Profit, p = 0.8, list = FALSE)
train_data <- startup_data[train_index, ]
test_data <- startup_data[-train_index, ]
# Train model
model <- lm(Profit ~ ., data = train_data)
# Ringkasan model
summary(model)
##
## Call:
## lm(formula = Profit ~ ., data = train_data)
##
## Residuals:
## Min 1Q Median 3Q Max
## -31732 -3866 668 5562 16893
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 5.089e+04 7.547e+03 6.743 7.15e-08 ***
## RnD.Spend 8.321e-01 4.954e-02 16.796 < 2e-16 ***
## Administration -5.074e-02 5.728e-02 -0.886 0.382
## Marketing.Spend 3.221e-02 1.884e-02 1.709 0.096 .
## State_Florida -9.604e+02 3.692e+03 -0.260 0.796
## `State_New York` -2.851e+03 3.693e+03 -0.772 0.445
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 9583 on 36 degrees of freedom
## Multiple R-squared: 0.9509, Adjusted R-squared: 0.944
## F-statistic: 139.3 on 5 and 36 DF, p-value: < 2.2e-16
# Prediksi
predictions <- predict(model, newdata = test_data)
# Evaluasi model
actuals <- test_data$Profit
RMSE <- sqrt(mean((predictions - actuals)^2))
R2 <- cor(predictions, actuals)^2
cat("RMSE: ", RMSE, "\n")
## RMSE: 10140.31
cat("R-squared: ", R2, "\n")
## R-squared: 0.9783334
# Plot residuals
par(mfrow = c(2, 2))
plot(model)
# Normalitas residuals
shapiro.test(model$residuals)
##
## Shapiro-Wilk normality test
##
## data: model$residuals
## W = 0.94324, p-value = 0.03711
# Koefisien model
coef_df <- data.frame(Variable = names(coef(model))[-1], Coefficient = coef(model)[-1])
ggplot(coef_df, aes(x = reorder(Variable, Coefficient), y = Coefficient)) +
geom_bar(stat = "identity", fill = "dodgerblue") +
coord_flip() +
labs(title = "Pentingnya Variabel Prediktor", x = "Variabel", y = "Koefisien") +
theme_minimal()
Kesimpulan: 1. Investasi pada R&D Spend sangat penting untuk
meningkatkan profitabilitas startup. 2. Model ini dapat digunakan untuk
memberikan rekomendasi strategis terkait alokasi anggaran, tetapi
validitas model harus dipastikan dengan data tambahan. 3. Evaluasi
asumsi model menunjukkan bahwa regresi ini valid, namun analisis lebih
lanjut dapat dilakukan untuk menyesuaikan prediksi pada data
real-world.