본문 바로가기
반응형

r37

[R] 상관계수행렬 그리는 법 (psych 패키지 이용) - 이게 젤 나음 1. 데이터 iris 데이터를 이용합니다. > head(iris) Sepal.Length Sepal.Width Petal.Length Petal.Width Species 1 5.1 3.5 1.4 0.2 setosa 2 4.9 3.0 1.4 0.2 setosa 3 4.7 3.2 1.3 0.2 setosa 4 4.6 3.1 1.5 0.2 setosa 5 5.0 3.6 1.4 0.2 setosa 6 5.4 3.9 1.7 0.4 setosa Species 는 수치형 데이터가 아니므로 제거해줍니다. > data=iris[,1:4] > head(data) Sepal.Length Sepal.Width Petal.Length Petal.Width 1 5.1 3.5 1.4 0.2 2 4.9 3.0 1.4 0.2 3 4... 2023. 8. 24.
R 다항회귀분석 하는 방법 (Cars93 데이터 예시) 다중선형회귀분석은 독립변수가 여러개이고 종속변수가 한개인 경우에 사용합니다. 독립변수와 종속변수 모두 연속형 데이터인 경우 사용합니다. 1. 데이터 살펴보기 우리가 사용할 데이터를 살펴봅시다. 사용할 데이터는 MASS 패키지의 Cars93 데이터입니다. 자동차 가격, 마력, RPM, 길이 등의 데이터입니다. 총 93대의 자동차 정보가 있습니다. 변수가 27개나 되는 데이터입니다. 전부 사용하지는 않을 것이고 일부만 사용할 겁니다. 우리가 독립변수와 종속변수로 사용할 열이름은 아래와 같습니다. 독립변수 : Horsepower, RPM, Length, Wheelbase, Width, Weight 종속변수 : Price 종속변수인 Price 는 자동차 가격입니다. 자동차 가격을 예측하는 모델을 만들 것입니다... 2023. 1. 7.
[R통계] 최솟값,최댓값,중앙값,평균,제1사분위수,제3사분위수 한번에 구하기(summary) summary 함수는 최솟값,최댓값,중앙값,평균,제1사분위수,제3사분위수 한번에 구해주는 함수입니다. > summary(1:10) Min. 1st Qu. Median Mean 3rd Qu. Max. 1.00 3.25 5.50 5.50 7.75 10.00 2020. 12. 30.
R로 QQ-plot 그리는 방법 (정규성검정) QQ plot 은 두 변수의 분위수 그래프 입니다. 넓은 의미로는 두 변수가 같은 분포를 따르는지 비교할 때 사용하는데, 좁은 의미로는 정규성검정에 이용됩니다. 정규성검정에 이용될 때는 우리가 가진 변수와 정규분포를 따르는 변수를 대입합니다. 두 변수를 비교할 때는 qqplot 함수를, 정규분포와 비교할 때는 qqnorm 함수를 사용합니다. 이번 글에서는 정규성검정으로써의 qqplot을 다룰 것입니다. qqnorm 함수를 사용해봅시다. 데이터는 내장데이터인 iris 의 Sepal.Length를 이용하겠습니다. 아래와 같은 코드를 입력하면 그래프가 그려집니다. qqnorm(iris$Sepal.Length) x축은 정규분포를 따르는 확률변수이고, y축은 Sepal.Length 입니다. Sepal.Length.. 2020. 12. 29.
[R통계] 회귀분석 결측치 처리에서 omit 과 exclude 의 차이 회귀분석을 할 때 결측치를 처리하는 옵션은 na.action 입니다. 입력값은 아래 두가지 입니다. na.omit na.exclude na.omit 과 na.exclude 모두 결측값을 제외하는데, 결과 출력에 차이가 있습니다. na.omit 은 결과출력에서도 결측치를 제외하고 na.exclude 는 결과츨력에서는 결측치를 포함합니다. na.omit 적용 예시 > x=c(1,2,3,NA,NA) > y=c(2,3,5,7,11) > fit=lm(y~x,na.action=na.omit) > resid(fit) 1 2 3 0.1666667 -0.3333333 0.1666667 na.exclude 적용 예시 > x=c(1,2,3,NA,NA) > y=c(2,3,5,7,11) > fit=lm(y~x,na.action.. 2020. 12. 26.
[R통계] 회귀분석 표현식에서 . 의 의미 종속변수가 y이고, 독립변수가 x1,x2,x3라고 합시다. 데이터가 아래와 같이 입력되어 있다고 합시다. > mydata=data.frame(y=c(1,2,3),x1=c(1,3,5),x2=c(2,4,6),x3=c(1,4,7)) > mydata y x1 x2 x3 1 1 1 2 1 2 2 3 4 4 3 3 5 6 7 회귀분석을 하려면 아래와 같이 표현식을 입력해야 합니다. lm(y~x1+x2+x3, mydata) 위 표현식을 쉽게 입력하는 방법이 있습니다. 점(.)을 사용하는 것입니다. 점은 모든 독립변수를 포함한다는 의미입니다. lm(y~., mydata) 점(.) 을 이용한 다른 예시도 살펴봅시다. 아래 두 표현식은 동일한 의미입니다. lm(y~.-x1,mydata) lm(y~x2+x3) 아래 두 표현.. 2020. 12. 26.
R에서 상관계수 구하는 방법 (cor) R에서 상관계수 구하는 방법 (cor) R에서 두 변수의 상관계수를 구할 때는 cor 함수를 사용합니다. > X=c(1,2,3,4,5)> Y=c(1,2,4,4,5)> cor(X,Y)[1] 0.9622504 cor 함수를 데이터프레임에 적용하면 상관계수 행렬을 출력해줍니다. > df=data.frame(X=c(1,2,3,4,5),Y=c(1,1,2,3,4),Z=c(1,3,5,6,7))> cor(df) X Y ZX 1.0000000 0.9701425 0.9847982Y 0.9701425 1.0000000 0.9235481Z 0.9847982 0.9235481 1.0000000 2020. 11. 30.
R 데이터프레임 열별 평균, 표준편차 구하기 R 데이터프레임 열별 평균, 표준편차 구하기 데이터프레임에서 열 별로 평균 등의 통계량을 구해봅시다. 먼저 데이터프레임을 하나 정의하겠습니다. > df=data.frame(c1=c(1,2,3),c2=c(10,20,30),c3=c(100,200,300))> df c1 c2 c31 1 10 1002 2 20 2003 3 30 300 각 열의 평균을 구해봅시다. apply 함수를 사용합니다. 아래와 같은 형식으로 사용하면 됩니다. apply(데이터,계산방향,적용함수) 계산방향은 1이 가로방향, 2가 세로방향입니다. 적용함수는 평균을 구할 것이므로, mean 함수를 넣어줍니다. > apply(df,2,mean)[1] 37 74 111 우리는 세로방향의 평균을 구하고 싶은 것이므로, 아래와 같이 적용합니다. > .. 2020. 11. 30.
R에서 평균, 표준편차 등 구할 때 NA 오류 해결방법 R에서 평균, 표준편차 등 구할 때 NA 오류 해결방법 데이터에 NA가 포함되어 있어 평균, 표준편차 등이 계산되지 않는 경우가 있습니다. > x=c(1,2,3,4,NA)> mean(x)[1] NA 이런 경우에는 na.rm 옵션을 True로 설정해주면 됩니다. na.rm 은 NA인 경우를 제거(remove)하겠다는 의미입니다. > mean(x,na.rm=TRUE)[1] 2.5 2020. 11. 30.
R에서 평균, 중앙값, 표준편차, 분산, 공분산 구하는 방법 R에서 평균, 중앙값, 표준편차, 분산, 공분산 구하는 방법 R에서 평균, 중앙값, 표준편차, 분산, 공분산 구하는 함수는 아래와 같습니다. 평균 mean(x)중앙값 median(x)표준편차 sd(x)분산 var(x)공분산 cov(x,y) 아래는 예시입니다. > x=1:100> y=100:200 > mean(x)[1] 50.5 > median(x)[1] 50.5 > sd(x)[1] 29.01149 > var(x)[1] 841.6667 > cov(x,y)Error in cov(x, y) : 호환되지 않는 차원들입니다 공분산을 구하려면 x와 y의 길이가 같아야 합니다. > x=1:100> y=101:200> cov(x,y)[1] 841.6667 2020. 11. 30.
[R 통계분석] 표본 추출하는 방법 두가지 [R 통계분석] 표본 추출하는 방법 두가지 R에서 표본을 추출하는 방법은 크게 두가지가 있습니다. 1) 직접 모집단을 설정하고 표본 추출하기2) 확률분포에서 추출하기(정규분포, 초기하분포 등) 하나씩 알아봅시다. 1) 직접 모집단을 설정하고 표본 추출하기 sample 함수를 사용합니다. 사용 방법은 아래와 같습니다. sample(x, size, replace=FALSE, prob=NULL) 아래는 각 입력값의 설명입니다. sample(모집단, 표본크기, 중복여부, 각각이 뽑힐 확률) 예를 들어봅시다. 1부터 10의 정수 값을 가지는 모집단에서 크기 3인 표본을 중복을 허용하여 뽑아보겠습니다. > sample(1:10,3,replace=TRUE)[1] 4 1 4 2) 확률분포에서 추출하기(정규분포, 초기하.. 2020. 9. 16.
[R] 반복측정 분산분석 및 사후분석 (tukey, bonferroni) 반복측정 분산분석이란? 반복측정 분산분석은 서로 연관이 있는 셋 이상의 집단비교에 사용됩니다. 예를 들어봅시다. 피험자 30명을 모집하고 세 종류의 초콜릿을 먹고 각 초콜릿의 점수를 0~100점 사이로 매기라고 하였습니다. 이때 초콜릿 점수의 차이가 있는지를 알고 싶을 경우 반복측정 분산분석을 사용합니다. 세가지 초콜릿을 먹은 피험자 집단이 같기 때문에 세 초콜릿의 점수 데이터는 서로 독립이 아닙니다. 그룹이 2개라면 paired t-test를 해야하는 상황입니다. 이런 경우에 사용하는 분석방법이 반복측정 분산분석입니다. 영 어로는 repeated measure ANOVA, 줄여서 RM ANOVA 라고 부릅니다. 반복측정 분산분석의 조건 아래 세가지 조건을 만족해야 합니다. 1. 정규성 2. 등분산성 3.. 2020. 8. 26.
R에서 3개 이상 집단의 분산을 비교하는 방법(+사후검정) R에서 3개 이상 집단의 분산을 비교하는 방법(+사후검정) 세개 이상 집단의 분산을 비교하는 검정들은 levene's test 와 bartlett's test 등이 있다. 이들은 모든 집단의 분산이 같다는 귀무가설에 대한 p 값만 알려줄 뿐, 어느 집단 간에 차이가 있었는지는 알려주지 않습니다. 어느 집단 간에 차이가 있는지 사후검정을 해야하는데요. levene's test와 bartlett's test에 적용할 수 있는 사후검정 함수를 R에서는 찾지 못했습니다. 다른 방법을 통해 해결했는데요. 분산이 결국 편차제곱의 평균이므로, 각 원소의 편차제곱을 계산하고 이들의 평균비교를 해주면 됩니다. 아래 예시를 통해 알아봅시다. a,b,c 세 그룹을 생성했습니다. set.seed(1) a=sample(0:10.. 2020. 6. 3.
R에서 일원 분산분석 및 사후분석 하는 방법 코드만 급하신 분 #분산분석 result=aov(종속변수~독립변수,전체데이터) #p값 확인 summary(result) 일원분산분석이란? 분산분석은 3개 이상의 그룹의 평균을 비교할 때 사용하는 검정방법입니다. 독립변수와 종속변수의 수에 따라 아래와 같이 나뉩니다. 이번글에서 다루는 일원분산분석은 독립변수가 1개이고 종속변수도 1개인 경우입니다. 예를 들면 '세 반의 수학점수 평균 비교' 가 있습니다. 이 때 독립변수는 반의 종류이고 종속변수는 수학점수입니다. 일원분산분석의 귀무가설과 대립가설은 아래와 같습니다. 귀무가설 : 세 집단의 평균이 같다. 대립가설 : 적어도 어느 한 모집단은 다른 모집단과 평균이 다르다. 일원 분산분석의 조건 일원분산분석은 세가지 조건을 만족해야 합니다. 1) 독립성 2) 정.. 2020. 6. 1.
R 카이제곱검정,피셔정확검정,오즈비,오즈비신뢰구간 한번에 구하기 R 카이제곱검정,피셔정확검정,오즈비,오즈비신뢰구간 한번에 구하기 환자-대조군 연구 : 폐암환자 100명과 폐암이 아닌 사람 100명을 대상으로 지난 10년 동안 흡연 여부를 조사함. 폐암 비폐암 합계 흡연 30 10 40 비흡연 70 90 160 합계 100 100 200 위 예제를 이용할 것입니다. 굉장히 유용한 패키지가 있어서 사용하겠습니다. 아래 결과들을 한번에 출력해줍니다. 카이제곱검정 피셔정확검정 오즈비 오즈비신뢰구간 먼저 패키지를 설치합시다. install.packages("epitools") 아래와 같이 코딩합니다. oddsratio.wald 함수를 사용합니다. riskratio.wald를 사용하면 오즈비 대신 위험비를 계산해줍니다. library(epitools) r1=c(30,10) r2.. 2020. 5. 7.
R에서 카이제곱검정 하는 방법 R에서 카이제곱검정 하는 방법 환자-대조군 연구 : 폐암환자 100명과 폐암이 아닌 사람 100명을 대상으로 지난 10년 동안 흡연 여부를 조사함. 폐암 비폐암 합계 흡연 30 10 40 비흡연 70 90 160 합계 100 100 200 위 예제로 카이제곱검정을 해봅시다. 흡연유무가 폐암 유무와 연관성이 있는지를 검정하는 것입니다. 아래는 R코드입니다. r1=c(30,10) r2=c(70,90) data=rbind(r1,r2) chisq.test(data,correct=FALSE) chisq.test(data) 아래는 결과입니다. > chisq.test(data,correct=FALSE) Pearson's Chi-squared test data: data X-squared = 12.5, df = 1, .. 2020. 5. 5.
[R] 대응표본 t 검정 대응표본 t검정이란? t검정은 두 집단의 평균을 비교할 때 사용합니다. 두 집단이 독립적인지, 서로 대응되어 있는지에 따라 독립포본 t검정과 대응표본 t검정 사이에서 선택해야 합니다. 대응표본 t검정은 두 집단이 대응되어 있는 경우에 사용합니다. 두 집단이 대응되어 있다는 것은 같은 대상에 대해 처리만 달리했다는 말입니다. 예를들면 50명의 피험자를 모집하여 탈모약을 먹이기 전과 후의 머리카락 수를 비교하는 것입니다. 비교하려는 두 집단의 구성원이 동일합니다. R에서 제공하는 함수 t.test 함수에서 paired 라는 옵션을 TRUE로 하여 사용합니다. t.test(x, y = NULL, alternative = c("two.sided", "less", "greater"), mu = 0, paired .. 2019. 11. 29.
[R 통계분석] 윌콕슨 순위합 검정 (Mann–Whitney U test) [R 통계분석] 윌콕슨 순위합 검정 (Mann–Whitney U test) #1. 방법 wilcox.test(x, y = NULL, alternative = c("two.sided", "less", "greater"), mu = 0, paired = FALSE, exact = NULL, correct = TRUE, conf.int = FALSE, conf.level = 0.95, ...) ▶ x,y 자리에 데이터 입력함. ▶ 독립표본 t검정 대신 사용하는 비모수검정. ▶ 정규성 검정이 기각될 경우 사용. ▶ Mann–Whitney U test 라고도 부름. #2. 예제 > 코드 #데이터 생성 set.seed(1) height_male=rnorm(15,175,5) height_female=rnorm(15,.. 2019. 11. 29.
[R 통계분석] 독립표본 t 검정 | 등분산 가정 [R 통계분석] 독립표본 t 검정 | 등분산 가정 #1. 방법 t.test(x, y = NULL, alternative = c("two.sided", "less", "greater"), mu = 0, paired = FALSE, var.equal = TRUE, conf.level = 0.95, ...) ▶ x,y 자리에 데이터 입력함. ▶ var.equal=FALSE 가 디폴트 값, TRUE로 놓으면 등분산가정 t검정 수행. #2. 예제 > 코드 #데이터 생성 set.seed(1) height_male=rnorm(50,175,5) height_female=rnorm(50,165,5) #t검정 수행 #귀무가설 : height_male = height_female t.test(height_male, heig.. 2019. 11. 29.
[R 통계분석] 단일표본 t검정 [R 통계분석] 단일표본 t검정 #1. 방법 t.test(x, y = NULL, alternative = c("two.sided", "less", "greater"), mu = 모집단 평균, paired = FALSE, var.equal = FALSE, conf.level = 0.95, ...) ▶ x에 데이터 입력, y는 입력하지 않음. ▶ mu=모집단평균 옵션 입력 시 단일표본 t검정 수 #2. 예제 > 코드 #데이터 생성 set.seed(1) height=rnorm(50,175,5) population_mean=177 #t검정 수행 #귀무가설 : height = population_mean t.test(height,mu=population_mean) #귀무가설 : height < population.. 2019. 11. 28.
[R 통계분석] Box's M test (공변량 행렬 동질성 검정) | biotools 패키지 [R 통계분석] Box's M test (공변량 행렬 동질성 검정) | biotools 패키지 #1. 방법 BoxM(data, group) data에는 반드시 변수가 2개 이상인 data.frame이 들어가야 합니다. 공분산행렬을 비교하기 때문입니다. #2. 예제 > 코드 #Box's M test를 하기 위해 biotools 패키지를 먼저 설치합니다. install.packages("biotools") #패키지 불러오기 library(biotools) #표본생성 set.seed(1) height_male=rnorm(50,0,1) height_female=rnorm(50,0,1) weight_male=rnorm(50,0,1) weight_female=rnorm(50,0,1) #형식에 맞게 수정 height.. 2019. 11. 28.
[R 통계분석] Box's M test (공변량 행렬 동질성 검정) | MVTests 패키지 [R 통계분석] Box's M test (공변량 행렬 동질성 검정) | MVTests 패키지 #1. 방법 BoxM(data, group) data에는 반드시 변수가 2개 이상인 data.frame이 들어가야 합니다. 공분산행렬을 비교하기 때문입니다. #2. 예제 > 코드 #Box's M test를 하기 위해 MVTests 패키지를 먼저 설치합니다. install.packages("MVTests") #패키지 불러오기 library(MVTests) #표본생성 set.seed(1) height_male=rnorm(50,0,1) height_female=rnorm(50,0,1) weight_male=rnorm(50,0,1) weight_female=rnorm(50,0,1) #형식에 맞게 수정 height_all.. 2019. 11. 28.
[R 통계분석] Bartlett test (등분산검정) [R 통계분석] Bartlett test (등분산검정) #1. 방법 bartlett.test(x, g, ...) y자리에 전체 데이터, group 자리에 분류기준을 입력한다. 예를들어 남녀 그룹의 키를 비교하는 경우, y자리에는 전체 키 데이터를 입력하고 group 자리에는 각 데이터의 성별을 입력한다. #2. 예제 > 코드 #표본생성 set.seed(1) group1=rnorm(50,0,1) group2=rnorm(50,0,1) #형식에 맞게 수정 y=c(group1,group2) group=c(rep(1,50),rep(2,50)) #Bartlett test 수행. bartlett.test(y,group) > 실행결과 > bartlett.test(y,group) Bartlett test of homog.. 2019. 11. 28.
[R 통계분석] Brown-Forsythe test (등분산검정) [R 통계분석] Brown-Forsythe test (등분산검정) #1. 방법 levene.test(y, group, location = c("median", "mean", "trim.mean"), trim.alpha = 0.25, bootstrap = FALSE, num.bootstrap = 1000, kruskal.test = FALSE, correction.method = c("none", "correction.factor", "zero.removal", "zero.correction")) y자리에 전체 데이터, group 자리에 분류기준을 입력한다. 예를들어 남녀 그룹의 키를 비교하는 경우, y자리에는 전체 키 데이터를 입력하고 group 자리에는 각 데이터의 성별을 입력한다. levene's t.. 2019. 11. 28.
[R] Levene's test (등분산검정) Levene's test 는 집단들의 분산이 같은지 여부를 검정할 때 사용합니다. 예제를 통해 이해해봅시다. 패키지 설치 및 불러우기 먼저 패키지를 설치합니다. install.packages("lawstat") 패키지를 불러옵니다. library(lawstat) 데이터 생성 예제에 사용될 테이터를 만들어봅시다. 두 집단의 키 데이터입니다. 그룹별로 50명을 추출하였습니다. set.seed(1) A=rnorm(50,175,10) B=rnorm(50,185,10) stack 형태의 데이터로 만들어줍니다. stack 형태의 데이터는 각 열에 독립변수와 종속변수가 입력된 데이터입니다. 위 데이터의 경우 독립변수는 그룹의 종류이고 종속변수는 키입니다. x=c(rep(1,50),rep(2,50)) y=c(A,B) .. 2019. 11. 28.
[R 통계분석] Shapiro-Wilk test (정규성 검정) [R 통계분석] Shapiro-Wilk test (정규성 검정) #1. 방법 shapiro.test(x) x 자리에 데이터 입력. #2. 예제 > 코드 #표본생성 set.seed(1) group1=rnorm(50,0,1) #ks test 수행 shapiro.test(group1) > 실행결과 > shapiro.test(group1) Shapiro-Wilk normality test data: group1 W = 0.96399, p-value = 0.1306 2019. 11. 28.
[R 통계분석] Anderson–Darling test (정규성 검정) [R 통계분석] Anderson–Darling test (정규성 검정) #1. 방법 ad.test(x) x 자리에 데이터 입력. #2. 예제 > 코드 #Anderson–Darling test를 하기 위해 nortest 패캐지를 먼저 설치합니다. install.packages("nortest") #패키지 불러오기 library(nortest)#표본생성 set.seed(1) group1=rnorm(50,0,1) #ad test 수행 ad.test(group1) > 실행결과 > ad.test(group1) Anderson-Darling normality test data: group1 A = 0.48194, p-value = 0.2213 2019. 11. 28.
[R 통계분석] Cramer-von Mises test (정규성 검정) [R 통계분석] Cramer-von Mises test (정규성 검정) #1. 방법 cvm.test(x) x 자리에 데이터 입력. #2. 예제 > 코드 #Cramer-von Mises test를 하기 위해 nortest 패캐지를 먼저 설치합니다. install.packages("nortest") #패키지 불러오기 library(nortest)#표본생성 set.seed(1) group1=rnorm(50,0,1) #CVM test 수행 cvm.test(group1) > 실행결과 > cvm.test(group1) Cramer-von Mises normality test data: group1 W = 0.067851, p-value = 0.2924 2019. 11. 28.
[R 통계분석] lilliefors test (정규성 검정) [R 통계분석] lilliefors test (정규성 검정) #1. 방법 lillie.test(x) x 자리에 데이터 입력. #2. 예제 > 코드 #lilliefors test를 하기 위해 nortest 패캐지를 먼저 설치합니다. install.packages("nortest") #패키지 불러오기 library(nortest) #표본생성 set.seed(1) group1=rnorm(50,0,1) #LF test 수행 lillie.test(group1) > 실행결과 > lillie.test(group1) Lilliefors (Kolmogorov-Smirnov) normality test data: group1 D = 0.088539, p-value = 0.4225 2019. 11. 28.
[R 통계분석] Kolmogorov-sminov test (정규성검정) [R 통계분석] Kolmogorov-sminov test (정규성검정) #1. 방법 ks.test(x, y, ..., alternative = c("two.sided", "less", "greater"), exact = NULL) x 자리에 데이터, y자리에 pnorm 입력. #2. 예제 > 코드 #표본생성 set.seed(1) group1=rnorm(50,0,1) #ks test 수행 ks.test(group1,pnorm) > 실행결과 > ks.test(group1,pnorm) One-sample Kolmogorov-Smirnov test data: group1 D = 0.13466, p-value = 0.2974 alternative hypothesis: two-sided 2019. 11. 28.
반응형