생각 작업실 The atelier of thinking

79. R 을 이용한 F분포 및 등분산성 검정 본문

통계학 이야기

79. R 을 이용한 F분포 및 등분산성 검정

knowledge-seeker 2024. 6. 21. 10:49

Chapter 79. R을 이용한 F 분포 및 등분산성 검정

 

1. R 에서의 확률분포

 

R에서는 이산확률분포와 연속확률분포 모두 다 제공합니다.분포별 확률질량(밀도)함수와 누적함수,분위수 및 랜덤 작업 등을 실행할 수 있습니다.

각 분포의 코드는 아래와 같습니다.

 

이산확률분포 연속확률분포
이항분포 binom 정규분포 norm
초기하분포 hyper T분포 t
포아송분포 pois F분포 f
기하분포 geom 카이분포 chisq
음이항분포 nbionom 균등분포 unif
다항분포 multinom 지수분포 exp

 

구하고자 하는 함수에 따라 아래의 접두사를 붙여 사용하면 됩니다.

  • d : probability mass/density function - 확률 질량/밀도 함수
  • p : cumulative distribution function - 누적함수
  • q : quantile function - 분위수
  • r : random number generator - 램덤 생성 작업

 

2. F 분포 (F-distribution)

 

F-분포는 두 개의 분산을 비교하는 데 사용되는 확률분포입니다.
F-분포의 모양은 자유도에 따라 달라지며, 일반적으로 오른쪽으로 꼬리가 긴 모양을 가집니다. F-분포는 두 개의 카이제곱분포를 이용하여 정의되는 확률분포입니다.


카이제곱분포가 단일 모집단의 분산을 나타내고 F분포는 두 집단의 분산을 나타냅니다.
자유도는 분자에 해당하는 카이제곱분포의 자유도와 분모에 해당하는 카이제곱분포의 자유도에 의해 결정됩니다.


F-분포는 ANOVA,회귀분석 등에서 사용되며, 변수가 여러 그룹으로 나뉘어 있는 경우에 사용됩니다. 반면 카이제곱분포는 주로 독립성 검정, 적합도 검정, 분할표 검정 등에서 사용됩니다.

 

(1) 확률밀도함수

R에서 F분포의 확률밀도함수 코드는 df( ) 입니다.

 

df(x, df1, df2)

 x: 계산하려는 확률 변수 값
 df1: 분자 자유도 (positive integer)
 df2: 분모 자유도 (positive integer)

 

분자의 자유도 3, 분모의 자유도가 10인 경우 F-분포 확률밀도함수 그래프는 아래와 같습니다.

 

x <- seq(0, 5, 0.01) # x 값 범위 설정
df1 <- 3 # 분자 자유도
df2 <- 10 # 분모 자유도
y <- df(x, df1, df2) # F 분포의 밀도함수 값 계산
plot(x, y, type = "l", lwd = 2, xlab = "F", ylab = "Density",
     main = "F-Distribution")

 

 

(2) 누적분포함수

 

누적분포함수 코드는 pf( ) 입니다.

 

pf(q, df1, df2, lower.tail = TRUE)

q : 계산하려는 F 분포 값 (quantile)
df1 : 분자 자유도 (positive integer)
df2 : 분모 자유도 (positive integer)
lower.tail: TRUE이면 왼쪽 꼬리 확률 값을 계산, 
            FALSE이면 오른쪽 꼬리 확률 값을 계산 (default = TRUE)

 

분자의 자유도 3, 분모의 자유도가 10인 경우 F-분포 누적분포함수 그래프는 아래와 같습니다.

 

x <- seq(0, 5, 0.01) # x 값 범위 설정
df1 <- 3 # 분자 자유도
df2 <- 10 # 분모 자유도
y1 <- pf(x, df1, df2) # F 분포의 밀도함수 값 계산
plot(x, y1, type = "l", lwd = 2, xlab = "X", ylab = "Porbability",
     main = "F-Distribution",col="blue")

 

 

(3) 분위수

 

분위수를 찾는 코드는 qf( ) 입니다.

 

qf(p, df1, df2)

p : 확률값
df1 : 분자 자유도 (positive integer)
df2 : 분모 자유도 (positive integer)

 

분자의 자유도 3, 분모의 자유도가 10인 경우 0.95를 나타내는 분위수는 아래와 같습니다.

x <- seq(0, 5, 0.01) # x 값 범위 설정
df1 <- 3 # 분자 자유도
df2 <- 10 # 분모 자유도
qf(0.95, df1, df2)
[1] 3.708265

 

위 분위수를 확률밀도함수 위에 표시하면,

plot(x, y, type = "l", lwd = 2, xlab = "X", ylab = "Density",
 main = "F-Distribution",col="blue")
vline <- qf(0.95, df1, df2) # 95% 분위수 계산
abline(v = vline, h = 0, col = "red", lty = 2) # 수직선과 높이 설정

 

분위수 3.708265 위로 수직선이 나타냅니다.


4. 등분산성 검정

 

등분산성 검정은  주로 두 개 이상의 그룹 또는 처리 간에 동일한 분산을 가지고 있는지를 확인하기 위해 사용됩니다. 등분산성이 만족되지 않으면 적합한 통계 분석 기법을 선택하는 데 도움이 됩니다.

var.test( ) 함수는 등분산성, 두 개의 수치형 벡터의 분산이 같은지 다른지를 검정하는 데 사용됩니다.

 

var.test(x,y, alternative = )

x, y: 비교하려는 두 개의 수치형 벡터입니다.
alternative: 귀무가설 대립가설의 유형을 지정합니다. 
   기본값은 "two.sided"로, 두 분산이 같지 않다는 것을 검정합니다. 
  "less" 또는 "greater"를 선택하여 한쪽 방향의 대립가설을 검정할 수도 있습니다.

 

◈ 예제 : 신체검사 자료

지난 두 그룹의 평균비교시 사용했던 자료입니다.

 

2024.06.19 - [통계학 이야기] - 77. R을 이용한 두 그룹의 평균 비교

 

77. R을 이용한 두 그룹의 평균 비교

Chapter 77. R을 이용한 두 그룹의 평균 비교 두 그룹의 평균을 비교할 때 사용할 수 있는 R의 함수는 t.test( )입니다. 앞서 단일 모집단의 모평균을 추론할 때에도 t.test( )를 사용했었

thinking-atelier.tistory.com

 

신체검사.csv
0.00MB

health <- read.csv("신체검사.csv",header = TRUE, fileEncoding = "CP949",
                    encoding = "UTF-8")
head(health)
   ID 나이 성별 수축혈압 이완혈압 콜레스테롤1 콜레스테롤2
1  1   42    F      120       95         196         220
2  2   53    M      122       72         230         232
3  3   53    M      132       88         242         223
4  4   48    F      128       79         239         209
5  5   53    F      118       74         204         198
6  6   58    F      130       72         210         245

 

성인 50명의 신체검사 자료 입니다.
혈압과 운동전후의 콜레스테롤 수치를 나타내는 자료입니다.

남녀별로 수축혈압과 이완혈합의 분산에 대한 등분산성을 검정해보겠습니다.

 

var.test(타겟변수~범주형변수, data= )

 

 

남녀별 수축혈압의 등분산성 검정하는 코드 입니다.

 

var.test(수축혈압~성별, data = health)
F test to compare two variances

data:  수축혈압 by 성별
F = 0.42481, num df = 21, denom df = 27, p-value = 0.04791
alternative hypothesis: true ratio of variances is not equal to 1
95 percent confidence interval:
 0.1899214 0.9918562
sample estimates:
ratio of variances 
         0.4248052

 

p-value 는 귀무 가설이 참일 때 이 통계량이 현재 표본에서 관찰 될 확률입니다. 이 경우 0.04791입니다. 따라서 이 결과는 두 성별 그룹의 수축혈압의 분산이 서로 다르다는 것을 나타내며,유의수준을 0.05로 한다면, p-value가 이보다 작으므로 이 차이가 통계적으로 유의하다고 할 수 있습니다.

 

 

남녀별 이완혈합의 등분산성 검정하는 코드 입니다.

var.test(이완혈압~성별, data = health)

 

F test to compare two variances

data:  이완혈압 by 성별
F = 1.0585, num df = 21, denom df = 27, p-value = 0.8774
alternative hypothesis: true ratio of variances is not equal to 1
95 percent confidence interval:
 0.4732517 2.4715359
sample estimates:
ratio of variances 
          1.058542

 

"sample estimates" , 표본 추정치는 분산의 비율을 나타내며, 이 경우 1.058542입니다.
분산의 비율이 1에 가깝고, p-value는 0.8774로 유의수준인 0.05보다 크므로 남녀별 이완혈압의 분산이 서로 다르다고 할 수 없습니다. 따라서 이 결과에 따르면 두 그룹의 이완혈압의 분산은 유의하게 다르지 않습니다.

등분산성 검정의 결과에 따라 적합한 통계 분석 기법을 선택하여 진행할 수 있습니다.