반응형
교차분석
수집한 설문 결과에 대해서 단일 변수에 대한 빈도분석을 수행한 후, 의미있는 정보를 얻기 위해서는 두 가지 이상의 변수를 결합하여 분석한다.
R / Rstudio
addmargins + table
addmargins() 함수는 행렬 또는 데이터 프레임에 마진(margin)을 추가하는 데 사용되는 함수
마진은 행과 열의 합계 또는 평균, 최대값, 최소값, 중앙값 등을 계산하여 제공
addmargins(table (penguins$species, penguins$island) ) #옵션을 지정하지 않으면, 행과 열의 합계를 출력 | ||||
Biscoe | Dream | Torgersen | Sum | |
Adelie | 44 | 56 | 52 | 152 |
Chinstrap | 0 | 68 | 0 | 68 |
Gentoo | 124 | 0 | 0 | 124 |
Sum | 168 | 124 | 52 | 344 |
addmargins 옵션
addmargins(table (penguins$species, penguins$island), 1 ) #열 기준의 합계만 출력 addmargins(table (penguins$species, penguins$island), 2 ) #행 기준의 합계만 출력 |
||||
Biscoe | Dream | Torgersen | ||
Adelie | 44 | 56 | 52 | |
Chinstrap | 0 | 68 | 0 | |
Gentoo | 124 | 0 | 0 | |
Sum | 168 | 124 | 52 | |
Biscoe | Dream | Torgersen | Sum | |
Adelie | 44 | 56 | 52 | 152 |
Chinstrap | 0 | 68 | 0 | 68 |
Gentoo | 124 | 0 | 0 | 124 |
addmargins(table (penguins$species, penguins$island), ,mean ) # 마진(margin)에 사용할 함수를 지정할 수 있음 (mean, min, max, median) |
||||
Biscoe | Dream | Torgersen | mean | |
Adelie | 44 | 56 | 52 | 50.66667 |
Chinstrap | 0 | 68 | 0 | 22.66667 |
Gentoo | 124 | 0 | 0 | 41.33333 |
mean | 56 | 41.33333 | 17.33333 | 38.22222 |
300x250
prop.table + table
행렬 또는 데이터 프레임의 행열의 비율을 산출하는 데 사용되는 함수
prop.table (table (penguins$species, penguins$island) ) #전체 데이터셋에 대한 비율을 계산 |
|||
Biscoe | Dream | Torgersen | |
Adelie | 0.127907 | 0.162791 | 0.151163 |
Chinstrap | 0 | 0.197674 | 0 |
Gentoo | 0.360465 | 0 | 0 |
prop.table 옵션
prop.table(table (penguins$species, penguins$island), 1 ) # 각 행의 합으로 나눈 비율을 계산 | |||
Biscoe | Dream | Torgersen | |
Adelie | 0.289474 | 0.368421 | 0.342105 |
Chinstrap | 0 | 1 | 0 |
Gentoo | 1 | 0 | 0 |
prop.table(table (penguins$species, penguins$island), 2 ) # 각 열의 합으로 나눈 비율을 계산 | |||
Biscoe | Dream | Torgersen | |
Adelie | 0.261905 | 0.451613 | 1 |
Chinstrap | 0 | 0.548387 | 0 |
Gentoo | 0.738095 | 0 | 0 |
round 함수를 사용하여 소숫점 표시
- round(x, digits = 0)
- digits: 반올림할 소수점 자릿수를 지정
- 기본값은 0으로, 소수점 첫째 자리에서 반올림
- 양수를 지정하면 해당 소수점 자릿수까지 반올림하고, 음수를 지정하면 해당 자릿수 이전에서 반올림
round (prop.table (table (penguins$species, penguins$island), 1), 2) #round함수를 사용하여 소수점 세 번째 자리에서 반올림하여 소수점 두 자리의 결과가 표시됨 |
|||
Biscoe | Dream | Torgersen | |
Adelie | 0.29 | 0.37 | 0.34 |
Chinstrap | 0.00 | 1.00 | 0.00 |
Gentoo | 1.00 | 0.00 | 0.00 |
ceiling()과 floor()
- ceiling() 함수는 올림을 수행
- floor() 함수는 버림을 수행
- ceiling() 함수와 floor() 함수는 소수점 이하의 자릿수를 직접 지정하는 것이 아니라, 정수를 올리거나 내릴 때 사용
- 이들 함수는 주어진 숫자를 가장 가까운 큰 정수 또는 작은 정수로 반올림하지 않고 그냥 올리거나 내림
test_x <- 3.423 | |
ceiling(test_x) | [1] 4 |
ceiling(test_x * 10) / 10 #3.423 X 10 = 34.23 → 35 → 3.5 | [1] 3.5 |
ceiling(test_x * 100) / 100 #3.423 X 100 = 342.3 → 343 → 3.43 | [1] 3.43 |
test_x <- 3.457 | |
floor(test_x) | [1] 3 |
floor(test_x * 10) / 10 #3.457 X 10 = 34.57 → 34 → 3.4 | [1] 3.4 |
floor(test_x * 100) / 100 #3.457 X 100 = 345.7 → 345 → 3.45 | [1] 3.45 |
교차분석 통계량
카이제곱 통계량 (Chi-Square Statistic) : 주로 범주형 변수 간의 관계를 검정하고, 독립성 여부를 판단하기 위해 사용
상관관계 통계량 (Correlation Statistic) : 주로 두 연속형 변수 간의 관계의 강도와 방향을 측정하기 위해 사용
R / Rstudio
아래 카이제곱 검정과 상관계수는 팔머 펭귄 (Palmerpenguins) Dataset을 사용한 단순 예시임
종(species)과 서식지(island)의 카이제곱 검정
독립변수 : 종(species), 종속변수 : 서식지(island)
귀무가설 : 종별 서식지가 다르지 않다.
대립가설 : 종별 서식지가 다르다
# 두 범주형 변수 X와 Y의 교차 테이블 생성 cross_table <- table(penguins$species, penguins$island) # 카이제곱 검정 수행 result <- chisq.test(cross_table) # 결과 출력 print(result) |
Pearson's Chi-squared test data: cross_table X-squared = 299.55, df = 4, p-value < 2.2e-16 |
- data: cross_table: 검정이 수행된 데이터는 cross_table
- X-squared = 299.55: 검정 통계량인 카이제곱 통계량(X-squared)의 값은 299.55
- 관찰된 데이터와 기대값 간의 차이를 나타내며, 큰 값일수록 변수들 간에 연관성이 강하다는 것을 시사
- df = 4: 자유도(degree of freedom)는 4
- 자유도는 카이제곱 검정에서 검정 통계량의 분포를 결정하는데 사용되며, 교차 테이블의 크기와 변수 수에 의해 결정
- p-value < 2.2e-16: p-값(p-value)은 귀무가설(두 변수는 독립이다)의 유의성을 나타내는 값
- 이 p-값은 거의 0에 가깝기 때문에 매우 낮은 유의수준에서 검정되었음을 나타내며, 귀무가설을 기각하고, 두 변수 간에는 통계적으로 유의한 연관성이 있다고 결론할 수 있음
날개 팔 길이 (flipper_length_mm)와 몸무게 (body_mass_g)의 상관 관계
# NA 값을 제거한 데이터프레임 생성 cleaned_data <- na.omit(penguins[c("flipper_length_mm", "body_mass_g")]) # 상관계수 계산 correlation <- cor(cleaned_data$flipper_length_mm, cleaned_data$body_mass_g) # 결과 출력 print(correlation) |
[1] 0.8712018 |
- 상관 관계를 산출하기 위한 변수들은 반드시 수치형이어야 함
- 상관계수의 값이 0.871로, 이 값은 0에서 1 사이의 범위에 있으며, 1에 가까울수록 강한 양의 선형 관계를 나타냄
- flipper_length_mm이 증가할 때 body_mass_g도 증가하는 경향이 있으며, 두 변수 간의 상관계수가 0.871로 상당히 높기 때문에, 한 변수의 변화가 다른 변수에 영향을 미칠 가능성이 크다고 볼 수 있음
- 상관계수는 두 변수 간의 선형 관계만을 측정하며, 다른 유형의 관계(비선형 관계 또는 인과 관계)는 측정하지 않음
- 상관관계는 인과 관계를 나타내지 않으므로 주의해야 함
- 변수 간의 상관관계를 더 자세히 이해하려면 그림 그리기나 추가적인 통계 분석을 수행할 필요가 있을 수 있음
728x90
'데이터 분석 (with Rstudio)' 카테고리의 다른 글
[R 기초] 기술통계 (논문 작성을 위한 세 번째 분석) (1) | 2023.09.26 |
---|---|
[R 기초] 결측값 결측치 처리 (데이터 클린징) (0) | 2023.09.21 |
[R 기초] 빈도 분석 (논문 작성을 위한 첫 번째 분석) (1) | 2023.09.18 |
[R 기초] 변수 및 자료 유형 (벡터 및 주요함수) (0) | 2023.09.10 |
대한민국 출산율 및 출생인구 동향 (0) | 2023.09.06 |