Category: R

  • McNemar Test

      SPSS로 McNemar Test를 하려고 하는데 힘들었다. Matrix로 실행하는 방법이 없는 것 같은데 못찾은 건지는 모르겠다. R이 새삼스럽게 고마워지는 순간이었다. R의 장점 중 하나는 p=0.000 이라는 표현 대신에 지수를 사용해서 작은 값을 표현해준다. 🙂
      Data가 없이 표로만 자료가 주어지는 상황이라면 다음과 같은 방법으로 구할 수가 있다. Data 입력 순서와 보여지는 방식을 잘 보면 응용하기는 쉽다.

    > drug <- matrix(c(55,9,43,77), nrow=2, dimnames=list(“Before program”=c(“No”, “Yes”), “After program”=c(“No”, “Yes”)));drug
                  After program
    Before program No Yes
               No  55  43
               Yes  9  77
    > mcnemar.test(drug)

            McNemar’s Chi-squared test with continuity correction

    data:  drug
    McNemar’s chi-squared = 20.9423, df = 1, p-value = 4.733e-06

  • Odds ratio

     Odds ratio를 R을 사용하여 구하기 위해서 정말 노력해 보았다. 고민하다가 Appleforum 게시판에서 R을 사용한다는 분을 찾아서 문의 메일을 보냈고 그 답장이 왔다. 그대로 해보니 그 동안 구글링한 내가 바보 같이 느껴질 정도로 쉽게 구해졌다.  OTL

      우선 Package 중에서 epitools를 설치한다. 그 후에

    library(epitools)
    oddsratio(htn.rawdata[,9], htn.rawdata[,1], conf.level=0.95) 이렇게 구하면 된다. 하지만.. 일반적으로 책에서는 좌측 상단에 우리의 목표값(??)이 위치하게 되는데 도움말을 참고해보면 우리의 함수님께서는 우측 하단에 목표값(??)이 위치해야 하므로 columns을 바꾸어 주어야 한다.

    > library(epitools)
    > oddsratio(htn.rawdata[,9], htn.rawdata[,1], conf.level=0.95, rev=”columns”)
    $data
             Outcome
    Predictor   2   1 Total
        0     601 819  1420
        1      55 114   169
        Total 656 933  1589


    $measure
             odds ratio with 95% C.I.
    Predictor estimate    lower    upper
            0 1.000000       NA       NA
            1 1.518482 1.087011 2.144556


    $p.value
             two-sided
    Predictor midp.exact fisher.exact chi.square
            0         NA           NA         NA
            1 0.01401735   0.01637873 0.01464472


    $correction
    [1] FALSE


    attr(,”method”)
    [1] “median-unbiased estimate & mid-p exact CI”

  • 평균치 비교

    이번 숙제에 R을 사용해 보기 위해서 계속 공부중이다. Odds ratio 를 구하는 함수는 없는 것 같지만 계속 찾아볼 예정이고 평균치 비교는 비교적 쉽게 찾을 수 있었다. 이건 비통계전공자의 전투족에 해당하는 내용이다. 🙂

    기본적으로 함수는 t.test 이다. 간단하다. 그래서 어렵다. 아파트나 자동차와 마찬가지로 옵션을 넣어주어야 한다.
    사용하는 기본 옵션은 다음과 같다.
    var.equal = T(RUE) or F(ALSE); 두 집단이 등분산이면 TRUE를 아니면 FALSE를 선택한다.

    등분산 여부는 사전에 var.test를 사용해서 확인한다.
    paired = T(RUE) or F(ALSE); 두 집단이 짝을 이루면 TRUE, 아니면 FALSE 이다.
    conf.level = 0.95 ; 입력을 안하면 기본적으로 0.95이다.

    예시)
    t.test(subset(gumjin.raw, sex==”1″)[,3], subset(gumjin.raw, sex==”2″)[,3],
            paired=FALSE, var.equal=TRUE, conf.level=0.95)

    설명)
      기본적으로 사용한 Data는 gumjin.raw 라는 항목으로 저장되어 있다.
      subset(gumjin.raw, sex==”1″)[,3]  : gumjin.raw 항목에서 sex 항목에 “1”이라고 선택되어진 자료들에서 3번째 열에 해당하는 자료를 불러오는 것을 말한다.

    결과)
            Two Sample t-test

    data:  subset(gumjin.raw, sex == “1”)[, 3] and subset(gumjin.raw, sex == “2”)[, 3]
    t = -1.2357, df = 188, p-value = 0.2181
    alternative hypothesis: true difference in means is not equal to 0
    95 percent confidence interval:
     -15.897745   3.651791
    sample estimates:
    mean of x mean of y
     180.5364  186.6593

    이렇게 결과가 나온다. 🙂

  • Excel 불러오기

    http://remantu.com/r/tutorial/load-data

    엑셀 파일인 XLS 파일을 R에서 불러오는 방법을 역시나 인터넷에서 찾았다. CSV 등으로 변환해서 불러와도 되지만 그 방법보다 좋은 점은 특정 Sheet를 지정해수 불러올 수 있다는 점이다.

    library(RODBC)
    xls = odbcConnectExcel(“파일명.xls”)
    Data 명 = sqlFetch(xls, “엑셀 Sheet 명”)

    이게 홈페이지에 있던 방법이고, 이를 응용해서 한 줄을 줄일 수도 있다.

    Data 명 = sqlFetch(odbcConnectExcel(“파일명.xls”), “엑셀 Sheet 명”)

    이 방법의 단점은 Windows 에서 실행한 R에서만 사용할 수 있다는 것이다. Mac 에서 실행한 R에서는 사용할 수가 없다. 기존의 방법대로 CVS 파일 등으로 변환을 해야 한다. ㅡㅡ;;