국민건강영양조사에는 커피와 비만 이외의 많은 변수가 존재하기 때문에, 내가 원하는 변수만 추출해올 필요가 있다.


- 제7기 1차년도 원시자료 이용지침서를 확인하고 필요할만한 데이터를 요약했다.


번호

변수코드

변수명

내용

1

HE_BMI

체질량지수

수치형

2

HE_OBE

비만 여부

1. 저체중

2. 정상

3. 비만

3

FF_COFFEE

[커피]의 최근 1년간 평균섭취빈도

1. 거의 안 먹음

2. 1

3. 2-3

4. 1

5. 2-4

6. 5-6

7. 1

8. 2

9. 3

99. 무응답

4

FA_COFFEE

[커피]1회 평균 섭취량

1. 1ts

2. 2ts

3. 3ts

88. 비해당

     (1회 미만)

99. 무응답

5

FS_COFFEE

[커피]의 하루 3회 초과 섭취 시

하루 평균 섭취 회수

단위 : /

6

FF_CREAM

[프림]의 최근 1년간 평균섭취빈도

위의 커피와 동일

7

FA_CREAM

[프림]1회 평균 섭취량

8

FF_SUGAR

[설탕]의 최근 1년간 평균섭취빈도

9

FA_SUGAR

[설탕]1회 평균 섭취량

10

FQ_COFFEE

[커피]의 주당섭취빈도

단위 : /

11

FQ_CREAM

[프림]의 주당섭취빈도

단위 : /

12

FQ_SUGAR

[설탕]의 주당섭취빈도

단위 : /



서로 다른 테이블(HN16_ALL.sas7bdat , HN16_FFQ.sas7bdat ) 대상에 대한 변수 정보와 커피와 관련한 변수를 추출하여 inner join한 최종 데이터셋을 형성했다.


이러한 과정에서 체질량지수인 HE_BMI 변수는 만 19세 이상을 대상으로 측정하기 때문에 나이가 어려서 대상이 아닌 관측값들은 모두 제외했다.



 > dim(X)

[1] 3371   21


> X <- X[ !is.na(X$HE_BMI),]

> dim(X)

[1] 3226   21

    # 145개의 결측값을 제외한 결과 총 3226개의 관측값을 보유


t.test와 ANOVA 등의 통계적인 평균 검정 방법은 모집단에 대한 정규성이 가정된다.

따라서 관심있는 변수인 HE_BMI에 대한 정규성을 살펴보자.





우선 변수 HE_BMI를 시각화해서 살펴보았다.

히스토그램은 정규분포라고 하기엔 왼쪽으로 조금 치우친 것으로 보이며, 이에 따라 QQplot 또한 이론적인 정규분포에서 떨어진 곳에 위치했음을 알 수 있다.


HE_BMI가 정규성을 만족하도록 하기 위해 로그 변환을 시도해보자.







로그 변환한 데이터는 비교적 정규분포에 가까운 형태를 띄고있다.

수리적으로 계산한 값을 보자.


* 정규성에 대한 test

  1) shapiro wilks test


> shapiro.test(log(HE_BMI))


        Shapiro-Wilk normality test


data:  log(HE_BMI)

W = 0.99549, p-value = 2.422e-08


  2) AD test    


> ad.test(log(HE_BMI))


        Anderson-Darling normality test


data:  log(HE_BMI)

A = 2.3618, p-value = 5.62e-06


  3) K-S test


> ks.test(unique(log(HE_BMI)), "rnorm")


        One-sample Kolmogorov-Smirnov test


data:  unique(log(HE_BMI))

D = 4.4523, p-value < 2.2e-16

alternative hypothesis: two-sided


3가지 정규성 검정의 결과 모두 p-value가 아주 작아 귀무가설을 기각한다.

즉, 해당 자료의 log값은 정규성을 따른다고 할 수 없다.




 - 앞으로의 진행 방향


  1) 대표본이므로 정규성을 따른다고 생각하고 t.test, ANOVA 등을 수행할 수 있다. (가장 편한 방법)

  2) 안타깝게도 가정을 만족하지 않아 모수적인 검정방법을 사용할 수 없다. 따라서 비모수적은 Wilcoxon Rank Sum test or Kruskal 등의 방법을 사용한다.

    - 이 때, 표본 수에 따른 비모수적 검증 방법의 효율을 생각해봐야한다.


  +) 모형식을 구상할 수 있는 방법에 대해서 생각해보자.

  +) 다른 차시로의 확장은 7차시의 방법론이 정리가 되었을 때 시행해도 될 듯


   >>>> t-test의 경우 표본의 크기가 크다면 정규성에 크게 영향을 받지 않는다.

            등분산 가정의 경우도 s.e의 식을 고려하면 sqrt( s1/n1 + s2/n2 )인데 n의 크기가 커질수록 s1과 s2의 차이에 덜 민감하다.

            통계 모형의 경우 결국 exact하게 정규성을 따를때만 그러하다를 말하는 것이 아님을 기억하자.

'분석 > 비만과 커피' 카테고리의 다른 글

[비만과커피] 회귀분석  (0) 2018.05.05
[비만과커피] 빈도에 따른 그룹 만들기와 그에 대한 검정  (0) 2018.05.01
[ 진행 방향 논의 ]  (0) 2018.04.28
분산분석(ANOVA)  (0) 2018.04.25
개요  (0) 2018.04.18


- 깃허브를 하려고 마음먹은지 약 2~3달이 지나고....

  잘 안돼서 막 미루다가, 중간고사 끝나고 다시 하기로 결심했다.


- 이리저리 기억을 되살리다가...

  기본 명령어를 다시 학습했다.


기본적인 git 명령어

* clone : remote repo를 복제하여 local repo를 생성

           서버에 저장되어 있는 git으로 관리되는 소스와 개발이력을 전부 가져와 

            local에서 작업 시작을 준비하는 단계

* checkout : 브랜치를 전환 / 해당 소스 또한 브랜치의 것으로 전환

                실제로 작업을 할 수 있는 상태

* pull : 현재 브랜치의 최신 상태를 remote repo로부터 가져온다.

         local repo내의 현재 checkout된 브랜치 소스를 최신상태로 만들어 준다.

* add : modified 상태에 있는 변경 내용들을 staged 상태로 만들어준다.

* commit : staged 상태에 있는 변경 내용들을 repo에 저장

              commit message를 통해 변경에 대한 decription 기입 가능

* push : local repo에 commit된 내용들을 remote repo에 보낸다.



 - 그런데 문제는 commit 과정까지는 잘 되었으나 push를 하는 과정에서 다음과 같은 오류가 떴다.




곰곰히 생각해보니 약 2달 전에 깃허브를 하다가 말았던게 이 문제를 해결하지 못해서였다.


검색을 하던 와중에 알게된 사실은 

이 문제는 기존 remote repo에 존재하는 자료를 받아오고 다시 push하기 전에 다른 누군가가 수정을 했을 때 생기는 원 자료의 달라짐 때문인 것을 알게 되었다.

따라서 다시 pull 명령을 한 번 해주고 push를 해주면 된다.


이제 깃을 처음 시작하는 나의 계정에 왜 이런 현상이 나타난 건지는 모르겠지만 시키는 대로 해보았다.


< 출처 : https://stackoverflow.com/questions/24114676/git-error-failed-to-push-some-refs-to



git pull --rebase origin master

git push origin master


(다른 브랜치가 없기 때문에, origin master를 꼭 붙여줘야하는듯?)


무튼 이렇게 해결했고, 이제 잘 활용하는 일만 남은 것 같다.


 * 커피 섭취와 비만은 어떤 관련이 있을까?


introduction)

  1) 일반적으로 커피는 건강에 안 좋고, 비만 정도를 높인다고 기대되어 진다.

  2) 하지만, 커피를 마신 후 입맛 없음을 느낀 경우가 있을 것이다. 이에 따라 커피의 적절한 섭취가 비만을 해소해줄 수 있는지 알아볼 필요가 있다.



data) [ 질병관리본부 - 국민건강영양조사 ]

  - 다운로드 경로 : http://cdc.go.kr/CDC/contents/CdcKrContentView.jsp?cid=60599&menuIds=HOME001-MNU1130-MNU1639-MNU1640-MNU1642








데이터 불러오기)


libname  'C:\Users\twins\Desktop\KSB\이하 경로';


data health.coffee;

  set health.Hn16_ffq;

  keep mod_d ID ID_fam sex age FF_COFFEE FA_COFFEE FS_COFFEE FF_CREAM FA_CREAM FF_SUGAR FA_SUGAR FQ_COFFEE;

run;


data health.bmi;

  set health.hn16_all;

  keep mod_d ID BO1 BO1_1 BO1_2 BO1_3 BO2_1;

run;


proc sort data=health.coffee; by ID; run;

proc sort data=health.bmi; by ID; run;


/* 두 테이블에서 필요한 변수만 가져온 분석테이블 */

data health.dataset;

  merge health.bmi(in=bmi) health.coffee(in=cof);

  by ID;

  if BO1_1=8 | BO1_1=9 then delete; /* 무응답과 비해당을 제외 */

  if cof;

run;


* 수치형인 것 같지만 범주형 자료임

   그래서 대응분석 또는 적합도 검정이 필요할 듯; 







< 1년간 체중변화 여부와 커피 섭취 빈도 사이의 연관성을 평가하기 위한 카이제곱 적합도 검정의 결과 > 


proc freq data=health.dataset;

  tables BO1_1*FF_COFFEE / chisq nocol norow nopercent;

run;





* 두 변수는 서로 연관성이 없음을 알 수 있다.




next) 

  커피 섭취 빈도 변수는 1회당 섭취량을 고려하지 않은 것이다.

  또한 설탕, 프림 등의 함유량도 상관이 존재할 수 있다. 

  이러한 변수들을 정리하여 다시 한 번 적합도를 살펴볼 필요가 있어보인다.

+ Recent posts