Statti

[R Studio] 일원분산분석(one-way ANOVA)과 사후검정(scheffe test, tukey test) 본문

농업생물통계/R Studio

[R Studio] 일원분산분석(one-way ANOVA)과 사후검정(scheffe test, tukey test)

꿈꾸 2021. 12. 9. 18:32
반응형

R Studio에 내장되어 있는 데이터인 iris 데이터를 불러와서 일원분산분석(one-way ANOVA)을 실행해보겠습니다.

iris_data로 불러옵니다.


iris 데이터는 다음과 같이 Sepal.Lenght, Sepal.Width, Petal.Length, Petal.Width, Species로 구성되어 있습니다.


따라서, Species에 따라 Sepal.Length에 차이가 있는지 분산분석을 통해 알아보겠습니다.

먼저 shapiro.test()를 통해 정규성을 만족하는지 알아봅니다.

세가지 방법으로 알아볼 수 있습니다. 각각의 Species에 대해 서로 다른 방법으로 정규성을 만족하는지 검정해보겠습니다.

가장 편한 방법을 쓰시면 됩니다.

첫번째는 subset() 함수를 이용해 iris_data에서 Species가 setosa인 행만 추출하고, 추출한 데이터에서 Sepal.Length가 정규성을 만족하는지 알아보는 방법입니다.

shapiro.test(subset(데이터명, 종속변수 == '종속변수명')$독립변수)


p-value=0.2715로 0.05 이상이기 때문에 정규성을 만족합니다.

다른 Species에 대해서도 정규성을 만족하는지 알아봅니다.

shapiro.test(데이터명[데이터명$종속변수 == '종속변수명', '독립변수',])


p-value=0.338로 정규성을 만족합니다.

shapiro.test(데이터명[데이터명$종속변수 == '종속변수명',]$독립변수)


p-value=0.1809으로 정규성을 만족합니다. 따라서 모든 Species에 대해 Sepal.Length가 정규성을 만족합니다.

다음은 등분산성을 만족하는지 알아봅니다. leven.test()를 이용합니다.

먼저, leven.test()를 이용하기 위해 library(lawstat)를 입력합니다.


그 후 leven.test()를 이용해 등분산성을 검정합니다.

leven.test(데이터명$독립변수, 데이터명$종속변수)


p-value=0.5555로 등분산성을 만족합니다.

모든 가정을 확인하였으니, 이제 분산분석(ANOVA)를 실행해보겠습니다.

분산분석한 데이터를 iris_sw_aov로 저장하겠습니다.

분산분석 후 저장한 데이터명=aov(독립변수~종속변수, data=분석할 데이터명)

그 다음 summary()를 이용해줍니다.

summary(분산분석 후 저장한 데이터명)

그러면 다음과 같이 분산분석 결과가 나타납니다.

***이 나타납니다. 따라서 유의수준 0.001로 Species에 따라 Sepal.Width에 차이가 있음을 알 수 있습니다.

정확히 어떤 Species에 차이가 있는지 알아보기 위해 분산분석 사후검정으로 넘어갑니다.

scheffe test는 주로 비교하려는 집단의 표본의 크기가 다를 때 이용하는 분산분석 사후분석입니다.

이를 이용하기 위해서는 agricolae 패키지가 필요하니 library(agricolae)를 먼저 입력해줍니다.


scheffe.test(분산분석 후 저장한 데이터명, "종속변수", alpha=유의수준, console = T)를 입력해줍니다.


setosa 품종이 Sepal.Width가 가장 크고, virginica, versicolor순임을 알 수 있습니다.

tukey test는 주로 비교하려는 집단의 표본 크기가 같을 때 이용합니다.

마찬가지로, tukey test 이용 전에 agricolae 패키지를 먼저 불러오는 것이 좋습니다.

그 후 tukey test를 수행합니다.

tukey.test(분산분석 후 저장한 데이터명)

tukey.test()를 이용하면 다음과 같은 결과가 나타납니다.

좀 더 쉽게 결과를 보기 위해 HSD.test()도 이용해보겠습니다. HSD.test한 결과를 다시 새로운 데이터로 저장해줍니다. 저는 iris_sw_hsd라고 저장하겠습니다.

HSD.test 후 저장할 데이터명 <- HSD.test(분산분석 후 저장한 데이터명, "종속변수")


그 후 irsi_sw_hsd를 다시 입력해줍니다. 그러면 다음과 같이 결과값이 좀 더 보기 쉽게 나타납니다.


따라서 setosa 품종이 Sepal.Width가 가장 크고, virginica, versicolor순임을 알 수 있습니다.

반응형
Comments