[R데이터분석] 데이터 분석 예제1 : 데이터 통합 및 T검정

근이의 개발일기·2024년 12월 9일
post-thumbnail

t1<-data.frame(read.table("1_EMR data_sex.txt",header=T,sep='\t')) t2<-data.frame(read.table("2_App data_e.txt",header=T,sep='\t'))
t11<-na.omit(t1)
t21<-na.omit(t2)
t22<-t21[t21$A_steps>0,]
t23<-aggregate(A_steps~A_myhealth_id, data=t22, mean)
dim(t11)
[1] 418 2
dim(t23)
[1] 586 2
t23pid=t23pid=t23A_myhealth_id
t=merge(t11,t23,key=pid)
dim(t)
[1] 298 4

💡 **데이터 전처리 과정**
  1. 파일 불러오기

    t1 <- data.frame(read.table("1_EMR data_sex.txt", header = TRUE, sep = '\t'))
    t2 <- data.frame(read.table("2_App data_e.txt", header = TRUE, sep = '\t'))
    • t1: "1_EMR data_sex.txt" 파일을 불러와 데이터프레임으로 저장.
    • t2: "2_App data_e.txt" 파일을 불러와 데이터프레임으로 저장.
  2. 결측치 제거

    t11 <- na.omit(t1)
    t21 <- na.omit(t2)
    • na.omit()을 사용해 결측치(NA)가 있는 행을 제거.
    • t11: t1에서 결측치가 있는 행을 제거한 데이터.
    • t21: t2에서 결측치가 있는 행을 제거한 데이터.
  3. 걸음 수가 0보다 큰 데이터 필터링 (outliner 제거)

    t22 <- t21[t21$A_steps > 0, ]
    • t21에서 A_steps > 0 조건을 만족하는 행만 남김.
    • 걸음 수가 0보다 큰 경우만 사용하므로, 걷지 않은 데이터는 제외됨.
  4. 평균 걸음 수 계산 → id를 합칠 수 있음

    t23 <- aggregate(A_steps ~ A_myhealth_id, data = t22, mean
    • aggregate() 함수를 통해 A_myhealth_idA_steps의 평균을 구함.
    • t23: 사용자 A_myhealth_id별 평균 걸음 수.
  5. ID 변수 추가

    t23$pid <- t23$A_myhealth_id
    • t23 데이터프레임에 pid라는 새로운 열을 추가하여 A_myhealth_id 값을 복사.
  6. 데이터 병합

    t <- merge(t11, t23, key = "pid")
    • t11(성별 정보)와 t23(평균 걸음 수 정보)을 pid를 기준으로 병합.
    • t: 병합된 최종 데이터로, 각 사용자의 성별(sex)과 걸음 수(A_steps)가 포함됨.
  7. 데이터 차원 확인

    ```
    dim(t)
    ```
    
    - **t11**: 418 x 2 (418명의 데이터, 2개의 열)
    - **t23**: 586 x 2 (586명의 데이터, 2개의 열)
    - **t**: 298 x 4 (298명의 데이터, 4개의 열)
    - **해석**: t11과 t23의 교집합으로 298명의 데이터를 남겼으며, 이 데이터에는 사용자 **성별(sex)**과 **평균 걸음 수(A_steps)**가 포함됨.

가설 수립

  • 가설(Hypothesis)
    • 귀무가설(H0): 남성과 여성의 평균 걸음 수는 차이가 없다.
    • 대립가설(H1): 남성과 여성의 평균 걸음 수는 차이가 있다.
  • 검정 절차
    1. 정규성 검정: 표본 수가 충분히 크면 중심극한정리에 의해 정규성을 가정할 수 있음.
      • 데이터 크기가 298이므로 정규성을 만족한다고 간주.
    2. 등분산성 검정: 두 집단의 분산이 같은지를 확인하는 검정.
      • F-test(var.test)를 사용하여 검정.
    3. t-검정: 두 집단의 평균 차이가 유의미한지를 검정.
      • 등분산성을 만족하지 않으면 등분산을 고려하지 않는 t-test를 수행.

var.test(A_steps~sex,data=t)

F test to compare two variances

data: A_steps by sex
F = 0.39318, num df = 159, denom df = 137, p-value = 1.892e-08
alternative hypothesis: true ratio of variances is not equal to 1
95 percent confidence interval:
0.2837034 0.5427609
sample estimates:
ratio of variances
0.3931844

💡

등분산성 검정

  1. F-test 수행

    var.test(A_steps ~ sex, data = t)
  2. 결과 해석

    ```r
    F test to compare two variances
    data:  A_steps by sex
    F = 0.39318, num df = 159, denom df = 137, p-value = 1.892e-08
    alternative hypothesis: true ratio of variances is not equal to 1
    95 percent confidence interval: 0.2837034 0.5427609
    sample estimates: ratio of variances 0.3931844
    ```
    
    - **F-통계량 (F = 0.39318)**
        - F 값이 1보다 크거나 작으면 분산이 다르다는 것을 의미.
        - 여기서는 0.39318로, 분산이 다르다는 신호가 있음.
    - **p-value = 1.892e-08**
        - **p < 0.05**이므로, **귀무가설(H0: 분산이 같다)을 기각**함.
        - 즉, **남성과 여성의 걸음 수의 분산이 다르다**고 결론지을 수 있음.
    - **95% 신뢰구간 (0.2837, 0.5428)**
        - 분산의 비율의 95% 신뢰구간에 1이 포함되지 않음.
        - 이는 **등분산을 만족하지 않는다는 증거**임.

t.test(A_steps~sex,data=t,var.equal=F)

Two Sample t-test

data: A_steps by sex
t = 1.4295, df = 296, p-value = 0.1539
alternative hypothesis: true difference in means between group 1 and group 2 is not equal to 0
95 percent confidence interval:
-239.4993 1511.1126
sample estimates:
mean in group 1 mean in group 2
5066.481 4430.674

💡

t-검정 (Two-sample t-test)

  1. t-test 수행

    t.test(A_steps ~ sex, data = t, var.equal = TRUE)
  2. 결과 해석

    ```vbnet
    Two Sample t-test
    data:  A_steps by sex
    t = 1.4295, df = 296, p-value = 0.1539
    alternative hypothesis: true difference in means between group 1 and group 2 is not equal to 0
    95 percent confidence interval: -239.4993 1511.1126
    sample estimates:
    mean in group 1 mean in group 2
    5066.481        4430.674
    
    ```
    
    - **t-통계량 (t = 1.4295)**
        - t 값이 작을수록 평균 차이가 없을 가능성이 높음.
    - **p-value = 0.1539**
        - **p > 0.05**이므로, 귀무가설(H0: 평균 차이가 없다)을 **기각할 수 없음**.
        - 즉, **남성과 여성의 평균 걸음 수의 차이가 통계적으로 유의미하지 않다**고 결론 내림.
    - **95% 신뢰구간 (-239.4993, 1511.1126)**
        - 신뢰구간에 0이 포함됨.
        - 0이 포함된다는 것은 남성과 여성의 평균 차이가 0일 가능성이 있다는 것을 의미함.
    - **평균 걸음 수**
        - 남성의 평균 걸음 수: 5066.481
        - 여성의 평균 걸음 수: 4430.674

0개의 댓글