Pendahuluan Tujuan dari analisis ini adalah untuk memprediksi Profit startup berdasarkan beberapa variabel seperti pengeluaran pada R&D, Administrasi, Pemasaran, dan lokasi (State).

  1. Import Library dan Dataset

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.
  1. Eksplorasi Data
# 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()

  1. Data Preprocessing
# 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
  1. Split Data dan Model Training
# 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
  1. Evaluasi Model
# 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
  1. Analisis Residual Analisis residual dilakukan untuk memastikan asumsi model regresi terpenuhi, seperti linearitas, normalitas, homoskedastisitas, dan independensi.
# 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
  1. Pentingnya Variabel Prediktor
# 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.