혜니니의 공부방
패스트캠퍼스 강필성의비즈니스분석 30일 도전 챌린지! 29일차 본문
23.03.20
#패스트캠퍼스 #패캠챌린지 #수강료0원챌린지 #환급챌린지 #직장인인강 #직장인자기계발#패캠인강후기 #패스트캠퍼스후기 #오공완 #강필성의비즈니스데이터분석


와 이제 슬슬 챌린지도 마무리되어갑니다~ ^ㅇ^, 환급반은 정말... 정말 열심히 하게된다. 패캠 고마와..
1. 선형회귀분석 - R실습
- 중고차 판매 데이터를 사용해 선형회귀분석 실습해보기,
install.packages("moments")
library(moments)
R에서 moments 패키지는, 왜도와 첨도 계산하는 패키지,
Moments, Cumulants, Skewness, Kurtosis and Related Tests
Functions to calculate: moments, Pearson's kurtosis, Geary's kurtosis and skewness; tests related to them (Anscombe-Glynn, D'Agostino, Bonett-Seier).
perf_eval_reg <- function(tgt_y, pre_y){
# RMSE
rmse <- sqrt(mean((tgt_y - pre_y)^2))
# MAE
mae <- mean(abs(tgt_y - pre_y))
# MAPE
mape <- 100*mean(abs((tgt_y - pre_y)/tgt_y))
return(c(rmse, mae, mape))
}
> RMSE, MAE, MAPE를 먼저 함수로 정의한다.
perf_mat <- matrix(0, nrow = 2, ncol = 3)
rownames(perf_mat) <- c("Toyota Corolla", "Boston Housing")
colnames(perf_mat) <- c("RMSE", "MAE", "MAPE")
perf_mat
> 데이터를 초기화하고, 행과 열에 해당 값을 넣는다.

corolla <- read.csv("ToyotaCorolla.csv")
View(corolla)
> 데이터 읽기.

# Indices for the inactivated input variables
id_idx <- c(1,2)
# 맨 윗행렬 제거하기.
corolla_data <- corolla[,-id_idx]
#데이터 전처리 과정
plot_data <- corolla_data[,-6]
corolla_names <- colnames(plot_data)[-1]
> 데이터 전처리과정을 거친다. 데이터 컬럼의 1번째 컬럼 빼고 가져오기, 데이터 삽입하기.
par(mfrow = c(5,7))
for (i in 1:length(corolla_names)){
plot(Price ~ plot_data[,i+1], data = plot_data,
xlab = corolla_names[i])
}
dev.off()
cc_outlier <- which(plot_data$cc > 15000)
plot_data_selected <- plot_data[-cc_outlier,c(1,2,4,5,6,9,13,14)]
corolla_names <- colnames(plot_data_selected)[-1]
par(mfrow = c(2,4))
for (i in 1:length(corolla_names)){
plot(Price ~ plot_data_selected[,i+1], data = plot_data_selected,
xlab = corolla_names[i])
}
dev.off()
> 해당 플롯을 오픈하면 이러한 산점도를 그릴 수 있다.

corolla_mlr_data <- corolla_data[-cc_outlier,]
nCar <- nrow(corolla_mlr_data)
set.seed(12345)
corolla_trn_idx <- sample(1:nCar, round(0.7*nCar)) #학습용데이터 인덱스 샘플링
corolla_trn_data <- corolla_mlr_data[corolla_trn_idx,]
corolla_tst_data <- corolla_mlr_data[-corolla_trn_idx,]
# MLR 학습시키기.
mlr_corolla <- lm(Price ~ ., data = corolla_trn_data) #종속변수는 Price
mlr_corolla
summary(mlr_corolla)
plot(mlr_corolla)
# 표 결과
plot(corolla_trn_data$Price, fitted(mlr_corolla),
xlim = c(4000,35000), ylim = c(4000,35000))
abline(0,1,lty=3)

corolla_resid <- resid(mlr_corolla)
m <- mean(corolla_resid)
std <- sqrt(var(corolla_resid))
hist(corolla_resid, density=20, breaks=50, prob=TRUE,
xlab="x-variable", main="normal curve over histogram")

> 정규분포를 따른다는 것을 파악할 수 있다.
curve(dnorm(x, mean=m, sd=std),
col="darkblue", lwd=2, add=TRUE, yaxt="n")
skewness(corolla_resid)
kurtosis(corolla_resid)
그렇게 왜도와첨도를 구해볼 수 있음 !

mlr_corolla_haty <- predict(mlr_corolla, newdata = corolla_tst_data)
perf_mat[1,] <- perf_eval_reg(corolla_tst_data$Price, mlr_corolla_haty)
perf_mat

결과: 도요타 코롤라는 이런 값을 가진다는 것을 알 수 있습니당.
본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.
'공부 기록 > 데이터분석' 카테고리의 다른 글
패스트캠퍼스 환급반챌린지 환급 후기 (0) | 2023.05.01 |
---|---|
패스트캠퍼스 강필성의비즈니스분석 30일 도전 챌린지! 30일차 (0) | 2023.03.21 |
패스트캠퍼스 강필성의비즈니스분석 30일 도전 챌린지! 28일차 (0) | 2023.03.19 |
패스트캠퍼스 강필성의비즈니스분석 30일 도전 챌린지! 27일차 (0) | 2023.03.18 |
패스트캠퍼스 강필성의비즈니스분석 30일 도전 챌린지! 26일차 (0) | 2023.03.17 |