250x250
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- associateDS
- 삼성sds
- SDSBrightics
- 삼성자격증
- 회귀모형평가
- IT멘토링
- 분석모델링
- 데이터전처리
- Kaggle출전
- 브라이틱스
- 모델링
- Brightics
- Datascientist
- 코딩없이데이터분석
- 서울시상권분석
- samsungsds
- 데이터분석대외활동
- 브라이틱스서포터즈
- EDA
- houseprice
- kaggle
- BrighticsStudio
- 골목상권데이터분석
- 데이터분석
- Brightics서포터즈
- 브라이틱스데이터분석
- 삼성SDSBrightics
- 상권배후지
- AdSP
- ProDS
Archives
- Today
- Total
Database for Everything
[R 프로그램] Kaggle 타이타닉 생존자 예측(2) - EDA(1) 본문
728x90
결측값(NA) 확인 및 평균값 대치
# 각 변수들에 존재하는 NA 값의 개수와 비율
NA_num <- t(colSums(is.na(data)))
NA_prop <- t(colSums(is.na(data))) / nrow(data)
rbind(NA_num, NA_prop)
PassengerId Survived Pclass Name Sex Age SibSp Parch Ticket Fare Cabin Embarked
[1,] 0 1309 0 0 0 263.0000000 0 0 0 1.0000000000 0 0
[2,] 0 1 0 0 0 0.2009167 0 0 0 0.0007639419 0 0
# 벡터기준으로 NA값 대치하는 사용자 정의함수
imputation_NA <- function(vec, fun = mean) {
vec_not_NA <- na.omit(vec)
imp_val <- fun(vec_not_NA)
vec[is.na(vec)] <- imp_val
}
# For 문을 활용한 한번에 NA값 대치
for (col in c('Age', 'Fare')) {
data[[col]] <- imputation_NA(data[[col]])
}
변수들에 존재하는 NA값의 개수와 비율을 확인할 수 있는 표를 만들어 확인해보았더니, Age변수에는 20%, Fare변수에는 0.07%의 NA값이 존재하였다.
이 NA값들을 각 컬럼의 평균값으로 대치하였다.
Survived(생존여부) 변수
#Survived변수
str(train$Survived)
Factor w/ 2 levels "No","Yes": 1 2 2 2 1 1 1 1 2 2 ...
table(train$Survived)
No Yes
549 342
#Survived 변수 시각화
library(ggplot2)
ggplot(data=train)+
geom_bar(aes(x=Survived, fill=Survived))+
labs(title='생존자 분포표')
Survived 변수의 No Yes 빈도표를 확인한 후, ggplot을 통해 시각화하였다.
확인해보니, 사망자(No)가 생존자(Yes)보다 더 많이 분포하고 있는 것을 확인할 수 있었다.
Passengerld(승객번호) 변수
#Passengerld 변수
length(unique(data$PassengerId)) == length(data$PassengerId)
[1] TRUE
Passengerld 는 승객번호 변수이다. 이 변수는 고유한 승객번호를 나타내므로, 각 값이 고유한 성질(Unique)을 갖는지 확인하는 작업이 필요하다.
중복값 제거를 거친 벡터의 길이와 원본 데이터의 벡터의 길이를 비교해보니 True값이 출력되는 것을 확인할 수 있었다.
Pclass(객실등급) 변수
#Pclass 변수 타입
class(data$Pclass)
[1] "integer"
#Pclass 변수 팩터형 변환
data$Pclass <- factor(data$Pclass, levels=c(1,2,3))
#Pclass 빈도 확인
table(data$Pclass)
1 2 3
323 277 709
ggplot(data=data)+
geom_bar(aes(x=Pclass, fill=Pclass))
class()를 통해 Pclass변수 타입을 확인해보니, integer(수치형)로 되어있었으므로, 팩터형으로 변환 후, 빈도표와 ggplot()을 통해 시각화해보았다.
3등급 > 1등급 > 2등급 순으로 많았다.
Name(승객 이름) 변수
#Name 변수
data$Name <- as.character(data$Name)
head(data$Name)
[1] "Braund, Mr. Owen Harris" "Cumings, Mrs. John Bradley (Florence Briggs Thayer)"
[3] "Heikkinen, Miss. Laina" "Futrelle, Mrs. Jacques Heath (Lily May Peel)"
[5] "Allen, Mr. William Henry" "Moran, Mr. James"
data$Name <- NULL
Name변수는 승객의 이름변수이다. 팩터형으로 지정되어있던 변수를 문자형으로 변환해주었다.
하지만 이번 분석에서는 유의미하게 활용되지 않을 것 같아.. Null값 처리로 삭제하였다.
Sex(성별) 변수
#Sex 변수 확인
table(data$Sex)
female male
466 843
ggplot(data=data)+
geom_bar(aes(x=Sex, fill=Sex))
#Sex변수와 종속변수 관계
with(data, table(Sex, Survived))
Survived
Sex No Yes
female 81 233
male 468 109
with(data, chisq.test(Sex, Survived))
Pearson's Chi-squared test with Yates' continuity correction
data: Sex and Survived
X-squared = 260.72, df = 1, p-value < 2.2e-16
Sex 변수를 살펴보니, 남성이 여성보다 약 2배가량 많은 것으로 확인되었고,
종속변수인 Survived 변수와 Cross table과 카이제곱 검정을 시행한 결과, 종속변수와 연관이 있음을 확인할 수 있었다.
728x90
'R' 카테고리의 다른 글
[R 프로그램] Kaggle 타이타닉 생존자 예측(4) - EDA(3) (0) | 2021.12.05 |
---|---|
[R 프로그램] Kaggle 타이타닉 생존자 예측(3) - EDA(2) (0) | 2021.12.05 |
[R 프로그램] Kaggle 타이타닉 생존자 예측(1) - 데이터 탐색 및 병합 (0) | 2021.12.05 |
[R 프로그램] 한국복지패널데이터 분석 프로젝트(3) - 종교 유무에 따른 이혼율, 지역별 연령대 비율 (0) | 2021.12.04 |
[R 프로그램] 한국복지패널데이터 분석 프로젝트(2) - 연령대별 월급차이, 직업별 월급 차이 파악하기 (0) | 2021.12.04 |
Comments