핀아의 저장소 ( •̀ ω •́ )✧
36일차(2020-12-29) 본문
일표본(One Sample) t-test_국민건강보험
건강검진정보: 2002년부터 2013년까지의 국민건강보험의 직장가입자와 40세 이상의 피부양자, 세대주인 지역가입자와 40세 이상의 지역가입자의 일반건강검진 결과와 이들 일반건강검진 대상자 중에 만40세와 만66세에 도달한 이들이 받게 되는 생애전환기건강진단 수검이력이 있는 각 연도별 수진자 100만 명에 대한 기본정보(성, 연령대, 시도코드 등)와 검진내역(신장, 체중, 총콜레스테롤, 혈색소 등)으로 구성된 개방데이터이다. ★다만, 그 수가 100만명인 만큼 보다 자료를 수월히 보기 위해 성별과 신장, 체중만 남겨두었다. |
1
2
3
4
5
6
7
8
9
10
11
|
##패키지##
library(psych)
#### 일표본(One Sample) t-test #####
# two-sided test: alternative = c("two.sided") #일치하는가? = 양측
# right-sided test: alternative = c("greater") #~보다 큰가? = 우측
# left-sided test: alternative = c("less") #~보다 작은가? = 좌측
#가설: 건강검진을 받은 환자들의 평균키는 170cm인지 통계분석하라.
#귀무: 건강검진을 받은 환자들의 평균키는 170cm이다. = p>0.05
#연구: 건강검진을 받은 환자들의 평균키는 170cm아니다. = p<0.05
|
cs |
1
2
3
4
5
6
7
8
9
10
11
|
# 01. 데이터 불러오기
aa <- read.csv("health.csv",
header = TRUE,
na.string = ","
)
View(aa)
str(aa)
#데이터 전처리
names(aa)=c("성별","키", "몸무게")
aa$성별 = factor(aa$성별, levels = c(1, 2), labels = c("남성", "여성"))
|
cs |
1
2
3
4
5
|
# 02.기본통계치 확인
attach(aa) # 객체연결 (attach -> detach)
#attach: 앞으로 이 파일에서 값을 불러올 것이란 뜻
View(키)
describe(키) #어디에 있는 aa가 없어도 자동으로 aa에서 가져옴
|
cs |
1
2
3
4
5
6
7
8
9
10
|
# 03. 그래프 그리기(박스그래프,히스토그램)
opar <- par(no.readonly = TRUE) #디폴트 par 값을 미리 할당--> par(opar)
# no.readonly = TRUE -> 화면 원복
par(mfrow=c(1,2)) #화면
boxplot(키)
hist(키, breaks= 10, col="yellow",
xlab="cm", ylab="명",
ylim=c(0,200000),
main="건강검진을 받은 환자들의 평균키")
par(opar)
|
cs |
1
2
3
4
5
6
7
|
# 04.통계분석
options("scipen" = 20)
# t test 구하기(결론 구하기)
t.test(aa$키,
alternative = c("two.sided"), #옵션 매우 중요
mu = 170, #(원하는)평균
conf.level = 0.95) #신뢰구간
|
cs |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
# 05.통계결과 그래프
mu=170 #원하는 평균
se=0.01 # 표본이므로 sd대신에 se 사용
data <- rnorm(1000, mu, se) # r + normal = 난수 + 정규분포 / 랜덤하게 뽑을 땐 r을 사용
#임의의 정규분포를 그리기 위해서 1000개의 점을 가져온 것 = 본래 자료 개수와는 상관 없음
data <- sort(data) #데이터 정렬
par(mfrow=c(1,1)) #위에서 복원이 안 먹히는 경우
plot(data, dnorm(data, mu, se), type='l', # 랜덤하게 뽑은걸 쌓을 땐 d 사용
main="건강검진을 받은 환자들의 평균키",
xlim=c(150,180))
abline(v=mu, col="green", lty=5) #lty는 선유형
abline(v=mu+1.96*se, col="blue", lty=5) #오차 허용범위
abline(v=mu-1.96*se, col="blue", lty=5) #오차 허용범위
abline(v=162.1, col="red", lty=5) #원하는 평균이 아닌 계산하여 나온 평균
detach(aa) #앞에서 attach를 쓴 경우 꼭 detach를 해줘야 한다.
|
cs |
=> 유의수준(p-vlaue)이 0.05보다 작으며 예측한 값(170)보다 평균이 정규분포 95%안에 들어있지 않으므로 귀무가설은 기각(건강검진을 받은 환자들의 평균키는 170cm이다)되고 연구가설(건강검진을 받은 환자들의 평균키는 170cm가 아니다)이 채택 된다.
★부족한 점★
- 단순히 오늘 배운 것을 활용해보기 위해 건강검진 데이터를 사용한 것이라 딱히 의미있는 가설검정은 아니었다.
- 데이터 표본이 너무 많아서 인지 표준오차가 너무 작아 그래프가 제대로 그려지지 않았다. 이를 해결할 방법이 있을듯한데 아직 거기까진 배운게 없어 조정하지 못해 아쉽다.
'Big Data > 데이터 분석' 카테고리의 다른 글
38일차(2020-12-31) (0) | 2020.12.31 |
---|---|
37일차(2020-12-30) (0) | 2020.12.30 |
35일차(2020-12-24) (0) | 2020.12.24 |
34일차(2020-12-23) (0) | 2020.12.24 |
33일차(2020-12-22) (0) | 2020.12.23 |
Comments