2022.03.16
회귀분석
: 종속 변수(ht) ~
독립 변수(ht +
bld)분류분석
: gnd{F, M} ~ wt + bldx
, n
, p
: n
명에 대한 p
개의 개인 정보차원축소
(손실있는 압축)군집분석
군집분석
군집분석
, 글에 따라 긍정적인 것 부정적인 것 나뉨f
(함수이름), x
(인수1), y
(인수2)%>%
f(y)%>%
???( ) %>%
???( )파이프로 바꾸기
: df %>%
f(a=1, b=1) %>%
g(c=0) %>%
h(d=1, e=0)%>%
sample_n(200) %>%
vis_miss() : 내 데이터 셋에서 200개 뽑은 다음 결측치를 보여줘%>%
sample_n(200) %>%
miss_var_summary() : 내 데이터 셋에서 200개 뽑은 다음 결측치의 요약본을 보여달라%>%
group_by(gnd) %>%
summarize_at(c('ht','wt'), list(mn=mean, sd=sd), na.rm=TRUE)요약 통계
: summarise그룹별
: group_by관측치 처리
: filter(관측치를 선택할 때 쓰는 것 ex. 여자만 가져오기/ WHERE와 같음)변수를 처리
: select(변수 선택, 키와 체중을 가져와라)데이터 읽는 것 : read.csv, read_csv -> 구분 어떻게?
R base : data.frame -> read.csv
tidyverse : tibble -> read_csv
tidyverse의 결과는 전부 tibble, 옛날 방식의 결과는 data.frame
일단 데이터를 주면 read csv
데이터를 읽었다고 침
data.frame -> DF
head(DF) -> 앞의 6개만 보여줌
nm, sx, bd, ht, wt
lable : 변수의 유형
chr : 문자
dbl : double 실수형
dim(DF) : n = 8, p = 5
DF$nm : 이름 다 뽑아냄
colnames(DF) : 변수이름 다 뽑아냄
%>%
dplyr::rename(gnd=sx, bld=bd) : pipe쓴 것, 요즘 쓰는 방식ifelse(조건, T일 때 처리, F일 때 처리)
bmi 표가 있음
새로 만든 bmi로 판정(obesity)이라는 새로운 변수 만들 것임
obesity : 문자 -> factor로 바꿔야 함
수준 재지정 : DF$obesity <- factor(DF$obesity, levels=c('저체중', '정상', '과체중', '비만'))
수치벡터로 변환 : as.numeric(DF$obesity)
최근 방식???
isobese : 비만 가변수, 비만(bmi>=25)이면 'Y', 아니면 'N'
DF <- DF %>% mutate(isobese = factor(ifelse(bmi>=25, 'Y', 'N')))
데이터 다 읽고 나면 탐색 해야함
방법이 많음
DF$ht : 키를 보여 달라. 벡터로 나옴
DF[.'ht'] : tibble로 return
summary(DF[,'ht']) :
dplyr::summarize(DF, n=n(), ht_mean=mean(ht), ht_sd=sd(ht), ht_var(ht))
mean(평균), sd(표준편차), var(분산)
조회 : 질의, 쿼리, old(DF[DF$nm=='Km', 'ht']
DF[조건(행), 조건(열)] : T인 것만 추출
filter(행), select(열)
DF <- filter(DF, 조건1, 조건2, ...)
DF[DF$nm %in% c('Km', 'Pk'), 'ht']
summarize_at : 특정 변수
summarize_if : 조건에 맞는 변수
group_by
(gnd) %>%
summarize_at
(c('ht'), list(ht_n=length, ht_mean=mean, ht_sd=sd))그림을 그릴 때도 성별로 따로 그리고 하면 구별이 잘 됨
데이터셋을 쪼개서 여자 그림 남자그림 따로 그리고 합침
반면 ggplot을 쓰면 데이터셋을 안 쪼개고 자기가 한 번에 해줌
ggplot(DF) + geom_histogram(aes(x=ht), fill='white', color='black') + facet_grid(gnd~. )
boxplot(ht~gnd, data=DF) : x=ht, y=gnd
산점도
: ggplot(DF, aes(x=wt, y=ht, col=gnd, shape=gnd)) +
geom_point(size=3) -> 색깔도 구별하고 모양도 구별함
성별의 빈도표
성별 혈액형 교차표
table()
xtabs()
gndfreq <- table(DF$gnd)
교차표 : 행합계, 열합계, 총합계 -> 마진테이블
margin.table(gndfreq)
prop.table(gndfreq) -> 빈도가 아니라 비율표
barplot(gndfreq)
xtabs(X ~ 행변수 + 열변수 + 층변수, ... data= )
교차표 : 행변수, 열변수
gbtbl <- table(DFbld)
gbtbl <- xtabs(~fnd+bld, data=DF)
margin=1 (행) margin=2(열)
prop.table
과제 해보기
데이터분석은 수학문제처럼 답이 딱 정해져있는 것이 아님
분석가마다 다름