2020.02.07 3강 :조건을 지정해서 데이터를 뽑아보기
3.0 R-STUDIO에서 불러오기(복습)
프로젝트 생성(프로젝트명:DM) -> 파일 작업폴더에 저장하기 -
-> R스튜디오에 작업파일(CSV) 불러오기(import) 실행
파일받기 : 실습파일(다이렉트 마케팅 데이터)
## 명령어(코드) 실습
>library(readr)
>DM <- read_csv("~/DM/DirectMarketing.csv")
DM이란 폴더에 파일이 저장돼 있으며, 앞으로 DM이라고 치면 파일을 R-STUDIO에서
불러온다. [그림1]에서와 같이 파일(DM)을 확인 가능해야 한다.
[그림1] 분석 데이터를 제대로 불러왔을 때
3.1 조건을 지정해서 데이터 뽑아보기
3.1.1 패키지 소개 : dply
사용 : "과목 평균점수가 60점 이상인 학생들만 뽑아서 그룹을 만들려고 할 때"
주요 명령어- filter( ) 행 추출 - select( ) 열(변수) 추출
- arrange( ) 정렬 - mutate( ) 변수 추가
- summarise( ) 통계치 산출 - group_by( ) 집단별로 나누기
- left_join( ) 데이터 합치기(열) - bind_rows( ) 데이터 합치기(행)
** dplyr에 대한 자세한 설명은 아래 링크 참조
https://wsyang.com/2014/02/introduction-to-dplyr
3.1.2 dplyr 패키지 설치
>install.packages("dplyr")
>library(dplyr)
3.1.3 filter 명령어 사용하기
#1 Age가 "Old"인 경우만 추출하여 출력
>DM %>% filter(Age == "Old")
#2 Age가 "Old"이고 자녀와 비동거인 상태인 경우만 추출해서 출력
>DM %>% filter(Age == "Old"&Children == "0")
#3 Age가 "Old"이고 자녀와 비동거인 상태 & Salary가 3만불 이상인 경우 추출
>DM %>% filter(Age == "Old"&Children == "0"&Salary>=30000)
[그림2] 3.1.3에서 #3을 실행시킨 후 상황
Old와 소득(Salary) 3만불 이상한 관측치(샘플)만 출력된다.
3.1.4 filter 명령어 사용 시 주의사항
filter는 dplyr의 특징과 마찬가지로 filter를 이용해 추출한 결과값을 변수로 지정하지
않으면 그 값이 따로 저장되지 않으며, 원본 데이터를 변형시키지 않습니다.
즉, 엑셀에서 필터를 써서 원하는 값을 찾고, "저장 안한 것"과 같습니다.
3.2 데이터에서 그룹핑(Grouping)해보기
3.2.1 의미 있는 "필터 변수" 찾기 : 상관계수
지출액(AmountSalary)와 관계 깊은 변수는 무엇인가요?
피어슨 상관 계수(Pearson Correlation Coefficient ,PCC)란 두 변수 X 와 Y 간의 선형 상관 관계를 계량화한 수치다 . 피어슨 상관 계수는 코시-슈바르츠 부등식에 의해 +1과 -1 사이의 값을 가지며, +1은 완벽한 양의 선형 상관 관계, 0은 선형 상관 관계 없음, -1은 완벽한 음의 선형 상관 관계를 의미한다.

# 질문 : 왜 공분산은 사용하지 않을까요?

3.2.2 피어슨 상관계수 구해보기
분석목표 : AmountSpent(지줄액)이 가장 높은 집단의 특징은 어떠한가?
분석방법 : AmountSpent(지줄액)에 영향을 크게 미치는 변수를 찾아내서 만들어 보기
3.2.3 R에서 피어슨 상관계수 구하는 방법
>attach(DM)
>cor(DM)
[그림3] 숫자가 아닌 데이터가 있을 경우 : 상관계수 계산 불가
Error in cor(DM) : 'x'는 반드시 수치형이어야 합니다

3.2.3 R에서 피어슨 상관계수 구하는 방법 : 수치형 데이터로 바꾸기
#1 변수 바꾸기 (car 패키지 사용)
>install.packages("car")
>library(car)
패키지 설치 (오래걸립니다.)
#1 Age에서 Young, Millde, Old인 값을 1, 2, 3의 수치형 데이터로 변환
>DM$AgeN <- recode(DM$Age,'"Young"=1;"Middle"=2;"Old"=3')
[그림3] 수치형 변수 생성 : AgeN
: 변수(Variable)가 "10"에서 "11"개로 1개 늘었음
[그림4] 수치형 변수 생성 : AgeN

#2 범주형 데이터를 수치형 데이터로 바꾸기
##이제 남은 변수를 모두 수치형 변수로 바꾸겠습니다.
>DM$GenderN <- recode(DM$Gender,'"Female"=1;"Male"=2')
>DM$OwnHomeN <- recode(DM$OwnHome,'"Own"=1;"Rent"=2')
>DM$MarriedN <- recode(DM$Married,'"Single"=1;"Married"=2')
>DM$LocationN <- recode(DM$Location,'"Close"=1;"Far"=2')
>DM$HistoryN <- recode(DM$History,'"High"=3;"Medium"=2;"Low"=1')
## 중요 : 규칙을 만드세요. (0->1->2, 저->중->고)
예를 들어 고령자일수록 숫자가 0, 1, 2 처럼 증가하는 식으로 규칙을 만들것!
[그림5] 수치형 변수 생성 : 나머지 변수
: 변수(Variable)가 "11"에서 "16"개로 5개 늘었음
자 이제!!!
진짜 될거에요.
>cov(DM)
>cor(DM)
[그림6] 상관계수 에러 메세지
#3 수치형 데이터셑만으로 데이터 테이블 만들기
여전히 DM에는 범주형 데이터(글자)가 들어가 있습니다. 따라서
상관계수를 구하기 위해서는 수치형데이터만으로 데이터셋을 다시만듭니다.
>DM1<-data.frame(DM$AmountSpent, DM$Salary, DM$AgeN, DM$Children, DM$GenderN, DM$OwnHomeN, DM$MarriedN, DM$LocationN, DM$HistoryN, DM$Catalogs)
[그림7] 수치형 데이터로만 만든 데이터셋(DM1)
3.2.4 R에서 피어슨 상관계수 구하기 : 결측값 제거
#1 드디어!!!!
>cor(DM1)
[그림8] 상관계수
#2 그런데????? NA???
[그림9] 결측값이 존재할 경우 상관계수 : "NA로 계산 불가"
#3 결측값 제거방법
>DM2<-na.omit(DM1)
[그림10] 결측값을 제거한 데이터 셋 : D2
결측값 제거에 대한 참고 사이트
https://rfriend.tistory.com/34
#4 결측값 제거한 데이터로 상관계수 구하기
>cor(DM2)
>cor(DM1, use = "pairwise", method = "pearson")
"pairwise" 옵션을 써서 DM2 데이터 셋을 쓴것과 같도록 분석이 가능합니다
[그림11] 결측값을 제거한 데이터 셋(D2)로 상관계수 구하기
"pairwise" 옵션에 대한 참고 사이트
http://blog.naver.com/PostView.nhn?blogId=pmw9440&logNo=221530246292
3.2.5 피어슨 상관계수에 대한 t-검정 : 상관계수가 신뢰도 있는가?
계산한 피어슨 상관계수가 신뢰성이 있는지 분석하는 방법!
: 상관계수가 신뢰도가 있는가에 대해서
[그림12] 상관계수에 대한 t검정
data: DM$AmountSpent and DM$Salary
t = 30.93, df = 998, p-value < 2.2e-16
alternative hypothesis: true correlation is not equal to 0
95 percent confidence interval:
0.6665092 0.7299316
sample estimates:
cor
0.6995957
귀무가설이 기각 : AmountSpent와 Salary는 유의적인 양(+)의 관계가 있다.
# 참고 남은 변수에 대해서도 가설 검정해볼 것
> cor.test(DM$AmountSpent, DM$AgeN, method = "pearson", conf.level=0.95)
> cor.test(DM$AmountSpent, DM$GenderN, method = "pearson", conf.level=0.95)
> cor.test(DM$AmountSpent, DM$OwnHomeN, method = "pearson", conf.level=0.95)
> cor.test(DM$AmountSpent, DM$MarriedN, method = "pearson", conf.level=0.95)
> cor.test(DM$AmountSpent, DM$LocationN, method = "pearson", conf.level=0.95)
> cor.test(DM$AmountSpent, DM$HistoryN , method = "pearson", conf.level=0.95)
> cor.test(DM$AmountSpent, DM$Children , method = "pearson", conf.level=0.95)
3.2.6 피어슨 상관계수에 대한 시각화
#1 패키지 설치
>install.packages("corrplot")
>library(corrplot)
#2 피어슨 계수를 구하고 이를 시각화
##2-1 계수를 구한뒤 이를 별도 데이터로 저장
>DM2COR<-cor(DM2)
##2-2 계수를 구한뒤 이를 별도 데이터로 저장
>corrplot(DM2COR, method="circle")
>corrplot(DM2COR, method="square")
>corrplot(DM2COR, method="number")
시각화
DM2<-na.omit(DM1)
DM2COR<-cor(DM1)
library(corrplot)
corrplot(DM2COR, method="circle")
corrplot(DM2COR, method="square")
corrplot(DM2COR, method="number")
[그림13] 상관계수에 대한 시각화
다음 주 강의 예고
#1 표본 간의 비교 : 대응표본 t검정
#2 회귀분석 및 회귀분석 시각화
댓글
댓글 쓰기