본문 바로가기

R_statistics

[R프로그래밍] 데이터시각화 with ggplot2:: 그룹별로 데이터 분포 및 평균과 범위 나타내기, data distribution and errorbar with average by groups 데이터 시각화는 중요한 내용입니다.오늘의 포스팅 내용은 복잡한 데이터 프레임에서 그룹별로 각각의 변수에 대한 평균과 범위를 구하고 싶을 때 사용하는 방법입니다. 결과물은 다음과 같습니다. 전체 데이터의 분포와 함께 그룹별 상이한 데이터 분포가 한눈에 들어오죠?그리고 가운데 error-bar 와 interquartile range 로 데이터 분포 범위를 추가로 표기해두었습니다.물론 이 부분은 boxplot 으로도 대체가 가능하지만 저는 개인적으로 이런 형식이 더 보기가 좋더라구요. 그럼 위의 그래프를 그리기 위한 코드를 알아볼까요?즉, 목표는 Species 별로 Sepal Length & Width, Petal Length & Width의 분포와 평균을 구하는 것입니다. library(dplyr) libr..
[R프로그래밍] factor, 범주형 변수들의 level 설정하기 R 에서 데이터프레임을 다루다보면, factor 들의 level 이 우선적으로 알파벳 순서를 따라가기 때문에, 저희가 원하는 factor 들의 순서로 먹히지 않는 경우가 종종 있습니다. 일례로, "Yes" 와 "No" 로 구성된 factor 가 있다면, No 가 reference (기준 범주) 로 설정되게 됩니다. 이러한 경우에 factor 들의 level 을 우리가 원하는 방식으로 설정을 해줘야겠죠? 바로 오늘 포스팅의 내용입니다. data 는 iris data 를 이용할 것이며, iris 의 Species 변수의 level 를 저희가 원하는 대로 변경을 해보겠습니다. 일단, iris data 를 불러와서, Species 의 기본 level 을 살펴보겠습니다. data(iris) levels(iris$..
[통계] 제곱합, SST, SSE, SSR, 최소제곱법 지난번 포스팅, 잔차와 오차 (Residual and Error) 와 이어지는 내용으로, 최소제곱법 (최소자승법) 과도 연관이 되는 부분이고, 잘 알아두시면 좋은 내용입니다. https://bpapa.tistory.com/8 혹시 오차와 잔차의 내용이 잘 기억이 안나거나 헷갈린다면, 위의 포스팅을 한번 읽어보시는 게 도움이 되십니다. # SST, total sum of squares $ SST = \sum_{i=1}^{n} (y_{i} - \bar{y})^2 $ 위의 공식에서 알 수 있듯이, SST는 종속변수의 관측값( $yi$) 과 표본의 평균 ($\bar{y}$) 의 차이 (편차) 를 제곱하여 합한 값입니다. # SSE, explained sum of squareds $ SST = \sum_{i=1}..
[R프로그래밍] rms 패키지, 로지스틱회귀 오즈비 (OR, Odds Ratio), 신뢰구간 (CI, confint) 구하기 R 에서 로지스틱 회귀분석을 위해서 주로 사용하는 패키지는 크게 2가지가 있습니다. 하나는 rms 패키지의 lrm 명령어, 나머지는 glm 명령어 입니다. 보통은 glm 을 많이 쓰게 되는데... RCS (restricted cubic spline curve) 를 사용할 때는 어쩔 수 없이 rms 패키지를 사용하게 됩니다. 저는 glm 이 더 익숙해서... rms 패키지의 lrm 보다 더 편하더군요. 어쨌든... lrm 명령어에서 OR, 오즈비 (Odds ratio) 및 95% 신뢰구간 (CI, confidence interval) 을 구하는 방법입니다. 코드는 아래와 같습니다. lrmmodel
[R프로그래밍] Text 처리, 텍스트 마이닝 R 에서 Text 를 처리하는 간단한 코드입니다. 일단 이 정도는 하셔야 더 복잡한 처리가 가능해지니...이런게 있다는 것은 머리속에 두셔야 나중에 필요할 때 찾아볼 수 있겠죠?^^ stringr package::str_sub(df$col, start, end) stringr 패키지의 str_sub 은 우리가 지정한 범위의 글자만 남기고 나머지는 날리는 명령어입니다.덧붙여서, 음수를 넣으면 뒤에서부터 글자를 자릅니다. reshape2::colsplit(df$col, split="character", names=c("newvar1", "newvar2") reshape2 의 colsplit 명령어는 특정단어 (알파벳) 을 기준으로 변수를 나누는 명령어 입니다.예를 들어 "visit_1", "visit_2",..
[R프로그래밍] 데이터시각화 with ggplot2:: 로지스틱회귀분석의 Restricted Cubic Spline Curve (큐빅 스플라인 커브) 그리기 Restricted Cubic Spline curve odds ratio 나 hazard ratio 를 3차 곡선으로 표현할 수 있는 방법입니다. spline regression 등에 대한 설명은 그냥 넘어가겠습니다. * 추가로 로지스틱 회귀분석에 대하여 궁금하시다면, https://bpapa.tistory.com/29 이 포스팅을 참고하여주세요. DATA 는 MASS 패키지에 포함되어있는 Pima.te 데이터셋을 사용하겠습니다. BMI 에 따른 당뇨의 Odds ratio (OR) 를 구하여 plot 으로 나타나겠습니다. 오늘 최종적으로 그릴 plot 은 아래와 같습니다. bmi 30 을 기준 (reference) 로 하여, BMI 의 변화에 따른 OR 의 변화를 보여주는 것입니다. 위의 최종 그래프를 ..
[R프로그래밍] 데이터시각화 with ggplot2::geom_signif, t-test 의 p-value 를 boxplot 그래프 위에 표시하기 오늘 포스팅 내용은 boxplot 에 p-value 와 bar 를 그려서 각각의 그룹에서 평균값들이 통계적 유의성을 보여주는 방법입니다. 의학통계뿐 아니라 많은 통계 분석에서 사용하는 방법이죠. data 는 iris 데이터를 사용해보겠습니다. Species 에 따른 Sepal Length 의 평균차이를 boxplot 으로 보여주고, 거기에 bar 와 p-value 를 add 한 모습이 되겠습니다. 바로 아래 그림처럼 말이죠. 위의 figure 를 그릴 수 있는 코드를 살펴볼까요? library('ggplot2') library('ggsignif') ggplot(iris, aes(Species, Sepal.Length))+ geom_boxplot()+ geom_signif(comparisons = list..
[R프로그래밍] 변수이름을 이용하여 여러열의 변수 종류 class 변경하기 R 로 데이터 프레임을 다루다보면대부분 class 가 잘 맞춰져 있는데 몇몇 변수들만 class 가 맞지 않는 경우가 있습니다. 이러한 경우.즉, 변수이름만을 아는 상태에서 쉽게 그 변수들의 class 를 변경하는 방법을 알아보겠습니다. DF 라는 데이터프레임안에서 A, B, C, D 라는 이름을 갖는 변수 (열) 의 class 를 numeric 으로 변경을 해보도록 하겠습니다.코드는 아래와 같습니다. cname