
종속변수 : 연속형 변수
독립변수 : 범주형 자료
T-검정은 두 집단의 평균 차이를 비교하는 통계적 방법입니다.
T-검정의 목적은 독립변수(범주형)가 종속변수(연속형)에 미치는 영향을 확인하는 것입니다.
R에서는 t.test() 함수를 사용하여 T-검정을 수행할 수 있습니다.
T-검정을 수행하기 전에, 정규성 가정을 검정해야 합니다.
정규성 검정을 위해 R에서는 Shapiro-Wilk test와 Kolmogorov-Smirnov test를 사용할 수 있습니다.
shapiro.test(x)로 수행합니다.ks.test(x, "pnorm", mean=mean(x), sd=sd(x))로 수행합니다.R 코드 예시
# 데이터 생성
set.seed(123)
data <- rnorm(50, mean = 5, sd = 1) # 평균 5, 표준편차 1을 따르는 정규분포 데이터 생성
# Shapiro-Wilk test
shapiro_test <- shapiro.test(data)
print(shapiro_test)
# Kolmogorov-Smirnov test
ks_test <- ks.test(data, "pnorm", mean = mean(data), sd = sd(data))
print(ks_test)
Shapiro-Wilk normality test
W = 0.9732, p-value = 0.2826
One-sample Kolmogorov-Smirnov test
D = 0.0725, p-value = 0.8456
Shapiro-Wilk test
Kolmogorov-Smirnov test
t.test(x, mu = target_mean)# 데이터 생성
set.seed(123)
data <- rnorm(30, mean = 5, sd = 1) # 평균 5, 표준편차 1을 따르는 정규분포 데이터 생성
# 단일표본 t-검정 (기준 평균 = 5)
t_test_result <- t.test(data, mu = 5)
print(t_test_result)
One Sample t-test
data: data
t = -0.3418, df = 29, p-value = 0.7348
alternative hypothesis: true mean is not equal to 5
95 percent confidence interval:
4.758385 5.228085
sample estimates:
mean of x
4.993235
해석
t.test(x, y, var.equal = TRUE/FALSE)# 데이터 생성 (두 그룹 A, B)
set.seed(123)
groupA <- rnorm(20, mean = 5, sd = 1) # A 그룹
groupB <- rnorm(20, mean = 6, sd = 1) # B 그룹
# 독립표본 t-검정
t_test_result <- t.test(groupA, groupB, var.equal = TRUE)
print(t_test_result)
Two Sample t-test
data: groupA and groupB
t = -2.576, df = 38, p-value = 0.01433
alternative hypothesis: true difference in means is not equal to 0
95 percent confidence interval:
-1.6212831 -0.1879357
sample estimates:
mean of x mean of y
5.049547 5.849249
해석
t.test(x, y, paired = TRUE)# 데이터 생성 (사전/사후 데이터)
set.seed(123)
before <- rnorm(20, mean = 5, sd = 1) # 운동 전
after <- before + rnorm(20, mean = 0.5, sd = 1) # 운동 후
# 대응표본 t-검정
t_test_result <- t.test(before, after, paired = TRUE)
print(t_test_result)
Paired t-test
data: before and after
t = -2.8412, df = 19, p-value = 0.01018
alternative hypothesis: true difference in means is not equal to 0
95 percent confidence interval:
-1.0745 -0.1535
sample estimates:
mean of the differences
-0.614
해석
| 종류 | 목적 | R 코드 | 주요 옵션 | 해석 포인트 |
|---|---|---|---|---|
| 단일표본 t-검정 | 한 집단의 평균 비교 | t.test(x, mu=기준값) | mu = 5 | 평균과 기준값이 같은지를 검정 |
| 독립표본 t-검정 | 두 집단의 평균 비교 | t.test(x, y, var.equal=TRUE) | var.equal = TRUE/FALSE | 두 집단의 평균 차이 검정 |
| 대응표본 t-검정 | 같은 집단의 전후 비교 | t.test(x, y, paired=TRUE) | paired = TRUE | 사전-사후 평균 차이 검정 |
t.test()를 수행합니다.




종속변수 : 연속형 변수
독립변수 : 범주형 자료 (셋 이상)
분산분석(ANOVA, Analysis of Variance)은 세 개 이상의 집단의 평균 차이를 검정하는 통계 방법입니다.
독립변수(범주형, 3개 이상)가 종속변수(연속형)에 미치는 영향을 검정합니다.
분산분석의 목적은, 세 개 이상의 집단 중 하나 이상의 평균이 다른지를 검정하는 것입니다.
ANOVA의 귀무가설( H0H_0 )은 "모든 그룹의 평균이 같다"입니다.
ANOVA를 수행하기 전에, 정규성 가정을 검정해야 합니다.
R에서는 Shapiro-Wilk test와 Kolmogorov-Smirnov test를 사용할 수 있습니다.
shapiro.test(x)ks.test(x, "pnorm", mean = mean(x), sd = sd(x))# 데이터 생성
set.seed(123)
data <- rnorm(50, mean = 5, sd = 1) # 평균 5, 표준편차 1을 따르는 데이터 생성
# Shapiro-Wilk test
shapiro_test <- shapiro.test(data)
print(shapiro_test)
# Kolmogorov-Smirnov test
ks_test <- ks.test(data, "pnorm", mean = mean(data), sd = sd(data))
print(ks_test)
Shapiro-Wilk normality test
W = 0.9732, p-value = 0.2826
One-sample Kolmogorov-Smirnov test
D = 0.0725, p-value = 0.8456
aov(y ~ group, data = 데이터셋)# 데이터 생성 (A, B, C 그룹의 데이터)
set.seed(123)
data <- data.frame(
group = factor(rep(c("A", "B", "C"), each = 10)),
value = c(rnorm(10, mean = 5), rnorm(10, mean = 6), rnorm(10, mean = 7))
)
# ANOVA 수행
aov_result <- aov(value ~ group, data = data)
summary(aov_result)
Df Sum Sq Mean Sq F value Pr(>F)
group 2 54.25 27.125 7.919 0.00197 **
Residuals 27 92.30 3.420
TukeyHSD(aov_result)# 데이터 생성
set.seed(123)
data <- data.frame(
group = factor(rep(c("A", "B", "C"), each = 10)),
value = c(rnorm(10, mean = 5), rnorm(10, mean = 6), rnorm(10, mean = 7))
)
# ANOVA 수행
aov_result <- aov(value ~ group, data = data)
# Tukey 사후검정 수행
tukey_result <- TukeyHSD(aov_result)
print(tukey_result)
Tukey multiple comparisons of means
95% family-wise confidence level
Fit: aov(value ~ group, data = data)
$group
diff lwr upr p adj
B-A 1.0000 0.1121 1.8879 0.0254
C-A 2.0000 1.1121 2.8879 0.0001
C-B 1.0000 0.1121 1.8879 0.0254
p-value가 0.05보다 작으므로, 각 그룹 간의 평균 차이가 유의미함을 의미합니다.
| 함수 | 설명 | 사용 예 |
|---|---|---|
| shapiro.test() | 정규성 검정 | shapiro.test(x) |
| ks.test() | 정규성 검정 (큰 샘플) | ks.test(x, "pnorm", mean = mean(x), sd = sd(x)) |
| aov() | 분산분석 | aov(value ~ group, data = df) |
| summary() | ANOVA 결과 출력 | summary(aov_result) |
| TukeyHSD() | 사후검정 | TukeyHSD(aov_result) |




종속변수 : 연속형 변수
독립변수 : 연속형 변수
# 데이터 생성
set.seed(123)
x <- rnorm(50, mean = 5, sd = 2)
y <- 2 * x + rnorm(50)
# 1. 상관계수 계산
cor_result <- cor(x, y) # Pearson 상관계수 계산
print(cor_result)
# 2. 상관계수 검정 (귀무가설 H0: 상관계수=0)
cor_test_result <- cor.test(x, y)
print(cor_test_result)
Pearson's product-moment correlation
data: x and y
t = 15.694, df = 48, p-value < 2.2e-16
alternative hypothesis: true correlation is not equal to 0
95 percent confidence interval:
0.8898 0.9612
sample estimates:
cor
0.9289
# 데이터 생성
set.seed(123)
x <- rnorm(50, mean = 5, sd = 2)
y <- 2 * x + rnorm(50)
# 1. 회귀모형 생성
lm_result <- lm(y ~ x)
print(lm_result)
# 2. 회귀모형 요약 (t-값, p-값, 결정계수, 회귀계수 등 출력)
summary_lm <- summary(lm_result)
print(summary_lm)
Call:
lm(formula = y ~ x)
Residuals:
Min 1Q Median 3Q Max
-2.7751 -0.7742 0.0299 0.6809 3.2801
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 0.0950 0.2875 0.330 0.743
x 1.9919 0.1220 16.331 < 2e-16 ***
# 데이터 생성
set.seed(123)
x <- rnorm(50, mean = 5, sd = 2)
y <- 2 * x + rnorm(50)
# 회귀모형 생성
lm_result <- lm(y ~ x)
# 산점도 및 회귀선 시각화
plot(x, y, main = "단순선형회귀분석", xlab = "x", ylab = "y", pch = 16)
abline(lm_result, col = "red", lwd = 2) # 회귀선 추가
| 함수 | 설명 | 예시 코드 |
|---|---|---|
| cor() | 상관계수 계산 | cor(x, y) |
| cor.test() | 상관계수 검정 | cor.test(x, y) |
| lm() | 단순선형회귀모형 생성 | lm(y ~ x, data = df) |
| summary() | 회귀모형의 통계 결과 출력 | summary(lm_result) |
| plot() | 데이터의 산점도 시각화 | plot(x, y) |
| abline() | 회귀선 추가 | abline(lm_result, col = "red") |


단순선형회귀분석은 독립변수(X)와 종속변수(Y) 간의 선형적 관계를 규명하는 통계 분석 방법입니다.
독립변수(X)가 종속변수(Y)에 미치는 영향을 확인하고, 예측 모델을 생성하는 데 사용됩니다.
단순선형회귀의 회귀식은 다음과 같이 정의됩니다.
Y=β0+β1X+εY = β0 + β1 X + ε
lm())summary())plot(), abline())set.seed(123)
x <- rnorm(50, mean = 5, sd = 2) # 평균 5, 표준편차 2를 따르는 독립변수 x 생성
y <- 2 * x + rnorm(50, mean = 0, sd = 1) # 종속변수 y는 x에 따라 생성
# 단순선형회귀모형 생성
lm_result <- lm(y ~ x)
print(lm_result)
출력 해석
Call:
lm(formula = y ~ x)
Coefficients:
(Intercept) x
0.0950 1.9919
# 회귀모형 요약
summary_lm <- summary(lm_result)
print(summary_lm)
출력 해석
Call:
lm(formula = y ~ x)
Residuals:
Min 1Q Median 3Q Max
-2.7751 -0.7742 0.0299 0.6809 3.2801
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 0.0950 0.2875 0.330 0.743
x 1.9919 0.1220 16.331 < 2e-16 ***
# 산점도와 회귀선 시각화
plot(x, y, main = "단순선형회귀분석", xlab = "독립변수 X", ylab = "종속변수 Y", pch = 16)
abline(lm_result, col = "red", lwd = 2) # 회귀선 추가
출력 해석
| 함수 | 설명 | 사용 예 |
|---|---|---|
| lm() | 단순선형회귀모형 생성 | lm(y ~ x, data = df) |
| summary() | 회귀모형의 통계 결과 출력 | summary(lm_result) |
| plot() | 데이터의 산점도 시각화 | plot(x, y) |
| abline() | 회귀선 추가 | abline(lm_result, col = "red") |
정규성 가정: 잔차(Residuals)가 정규분포를 따르는지 확인합니다.
shapiro.test(residuals(lm_result))
독립성 가정: 잔차의 독립성을 확인합니다.
plot(residuals(lm_result))
등분산성 가정: 잔차의 분산이 일정한지를 확인합니다.
plot(fitted(lm_result), residuals(lm_result))


종속변수 : 연속형 변수
독립변수 : 연속형 변수/범주형변수
다중선형회귀분석은 두 개 이상의 독립변수(연속형 또는 범주형)가 연속형 종속변수에 미치는 영향을 분석하는 방법입니다. 다중 선형 회귀는 다음과 같은 가정을 만족해야 합니다.
y=β0+β1X1+β2X2+⋯+βnXn+εy = \beta_0 + \beta_1X_1 + \beta_2X_2 + \cdots + \beta_nX_n + \varepsilon
y=β0+β1X1+β2X2+⋯+βnXn+ε
# 데이터 생성 (연속형 독립변수와 종속변수)
set.seed(123)
data <- data.frame(
y = rnorm(100, 50, 10),
x1 = rnorm(100, 10, 5),
x2 = rnorm(100, 20, 3),
x3 = rnorm(100, 30, 7)
)
# 다중선형회귀분석 수행
model <- lm(y ~ x1 + x2 + x3, data = data)
summary(model)


가변수 회귀분석은 범주형 독립변수를 포함하는 회귀분석을 의미합니다. 범주형 변수는 가변수(dummy variable)로 변환해야 회귀분석에 포함될 수 있습니다.
# 범주형 독립변수를 포함한 데이터 생성
set.seed(123)
data <- data.frame(
y = rnorm(100, 50, 10),
x1 = rnorm(100, 10, 5),
group = factor(sample(c("A", "B", "C"), 100, replace = TRUE))
)
# 가변수를 사용한 회귀분석
model <- lm(y ~ x1 + group, data = data)
summary(model)
다중공선성이란 독립변수들 간의 강한 상관관계가 존재할 때 발생하는 문제로, 회귀계수의 불안정성을 초래합니다.
R
코드 복사
# car 패키지 설치 및 로드
install.packages("car")
library(car)
# 다중공선성 확인
vif(model)
# 데이터 생성
set.seed(123)
data <- data.frame(
y = rnorm(100, 50, 10),
x1 = rnorm(100, 10, 5),
x2 = rnorm(100, 20, 3),
x3 = rnorm(100, 30, 7)
)
# 단계적 변수 선택법 (stepwise)
model <- lm(y ~ x1 + x2 + x3, data = data)
step_model <- step(model, direction = "both")
summary(step_model)
R2=1−SSresidualSStotalR^2 = 1 - \frac{SS{residual}}{SS{total}}
R2=1−SStotalSSresidual
| 분석 항목 | 설명 | R 함수 |
|---|---|---|
| 다중선형회귀 | 독립변수가 2개 이상인 회귀분석 | lm(y ~ x1 + x2, data = data) |
| 가변수 회귀 | 범주형 변수로 회귀분석 수행 | lm(y ~ group, data = data) |
| 다중공선성 확인 | VIF 계산, 공선성 문제 파악 | vif(model) |
| 변수 선택 방법 | 단계적 회귀분석 수행 | step(model) |
| 결정계수(R^2) | 회귀모형의 설명력 평가 | summary(model) |



종속변수 : 범주형
독립변수 : 범주형
범주형 자료는 명목형(Nominal) 또는 순위형(Ordinal)으로 구분됩니다. 이 자료는 숫자가 아닌 범주로 구분되며, 그 범주의 빈도와 비율을 분석합니다.
# 데이터 생성
data <- data.frame(
gender = c('Male', 'Female', 'Female', 'Male', 'Male', 'Female', 'Male', 'Female'),
outcome = c('Success', 'Failure', 'Success', 'Failure', 'Success', 'Failure', 'Failure', 'Success')
)
# 분할표 생성
table_data <- table(data$gender, data$outcome)
print(table_data)
table() 함수는 교차 빈도표를 생성합니다.연관성(association) 또는 관련성을 분석할 때, 주요 분석 방법은 독립성 검정과 동질성 검정으로 구분됩니다.
# 독립성 검정 (Chi-square test)
chisq_test <- chisq.test(table_data)
print(chisq_test)
Yates의 연속성 보정은 2x2 분할표에 적용되는 보정 방법입니다.
# Yates의 연속성 보정이 적용된 카이제곱 검정
yates_test <- chisq.test(table_data, correct = TRUE)
print(yates_test)
동질성 검정은 서로 다른 모집단의 범주형 자료가 같은 분포를 따르는지 확인합니다.
# 동질성 검정 (카이제곱 검정)
# 예시 데이터 생성
data2 <- matrix(c(50, 30, 20, 40, 60, 80), nrow = 2)
rownames(data2) <- c('Group A', 'Group B')
colnames(data2) <- c('Product 1', 'Product 2', 'Product 3')
# 동질성 검정
homogeneity_test <- chisq.test(data2)
print(homogeneity_test)
카이제곱 검정은 교차표에 대한 대표적인 분석 방법입니다.
# 교차표 생성
data <- data.frame(
gender = c('Male', 'Female', 'Female', 'Male', 'Male', 'Female', 'Male', 'Female'),
outcome = c('Success', 'Failure', 'Success', 'Failure', 'Success', 'Failure', 'Failure', 'Success')
)
# 교차표 생성
table_data <- table(data$gender, data$outcome)
# 카이제곱 검정
chi_test <- chisq.test(table_data)
print(chi_test)
# Fisher의 정확검정 수행
fisher_test <- fisher.test(table_data)
print(fisher_test)
| 분석 항목 | 설명 | R 함수 |
|---|---|---|
| 분할표 생성 | 두 범주형 변수의 빈도 확인 | table(data$var1, data$var2) |
| 독립성 검정 | 범주형 변수 간의 독립성 검정 | chisq.test(table) |
| 동질성 검정 | 두 집단의 분포가 같은지 검정 | chisq.test(data2) |
| Yates 보정 | Yates 보정을 적용한 카이제곱 검정 | chisq.test(table, correct = TRUE) |
| Fisher의 검정 | 작은 표본의 독립성 검정 | fisher.test(table) |



종속변수 : 범주형
독립변수 : 연속형/범주형 (여러개)
로지스틱 회귀분석은 종속변수가 범주형(이진 변수)인 경우에 사용하는 회귀분석 방법입니다.

Odds=p1−pOdds = \frac{p}{1 - p}
로지스틱 회귀모형의 식은 다음과 같이 표현됩니다.
log(p1−p)=β0+β1X1+β2X2+⋯+βnXn\log\left(\frac{p}{1 - p}\right) = \beta_0 + \beta_1 X_1 + \beta_2 X_2 + \cdots + \beta_n X_n
# 데이터 생성
set.seed(123)
data <- data.frame(
outcome = sample(c(0, 1), 100, replace = TRUE), # 종속변수 (0 또는 1)
age = rnorm(100, mean = 50, sd = 10), # 연속형 독립변수 1
income = rnorm(100, mean = 3000, sd = 500), # 연속형 독립변수 2
gender = factor(sample(c("Male", "Female"), 100, replace = TRUE)) # 범주형 독립변수
)
# 로지스틱 회귀분석 수행
logit_model <- glm(outcome ~ age + income + gender, data = data, family = binomial)
summary(logit_model)
로지스틱 회귀의 회귀계수(Estimate)는 로그 오즈(log-odds)로 표현됩니다.
이를 오즈비(Odds Ratio)로 해석하기 위해서는 회귀계수를 지수화(Exponential)해야 합니다.
# 오즈비 계산
odds_ratios <- exp(coef(logit_model))
odds_ratios
로지스틱 회귀분석에서는 오즈비의 신뢰구간을 확인하여, 오즈비가 유의미한지 평가할 수 있습니다.
# 95% 신뢰구간 계산
confint(logit_model)
로지스틱 회귀모형이 얼마나 정확한지를 평가하기 위해 예측값과 정확도(Accuracy)를 확인합니다.
# 예측값 생성 (0 또는 1로 변환)
predicted_probs <- predict(logit_model, type = "response") # 확률 예측
predicted_classes <- ifelse(predicted_probs > 0.5, 1, 0) # 0.5 기준으로 0 또는 1로 변환
# 혼동행렬 (Confusion Matrix) 생성
table(Predicted = predicted_classes, Actual = data$outcome)
# 정확도 계산
accuracy <- mean(predicted_classes == data$outcome)
accuracy
# 데이터 생성
set.seed(123)
data <- data.frame(
outcome = sample(c(0, 1), 100, replace = TRUE), # 종속변수 (0 또는 1)
age = rnorm(100, mean = 50, sd = 10), # 연속형 독립변수 1
income = rnorm(100, mean = 3000, sd = 500), # 연속형 독립변수 2
gender = factor(sample(c("Male", "Female"), 100, replace = TRUE)) # 범주형 독립변수
)
# 로지스틱 회귀모형 생성
logit_model <- glm(outcome ~ age + income + gender, data = data, family = binomial)
summary(logit_model)
# 오즈비 계산
odds_ratios <- exp(coef(logit_model))
print(odds_ratios)
# 95% 신뢰구간
confint(logit_model)
# 예측값 생성 및 정확도 평가
predicted_probs <- predict(logit_model, type = "response")
predicted_classes <- ifelse(predicted_probs > 0.5, 1, 0)
table(Predicted = predicted_classes, Actual = data$outcome)
accuracy <- mean(predicted_classes == data$outcome)
print(accuracy)
| 분석 항목 | 설명 | R 함수 |
|---|---|---|
| 로지스틱 회귀 | 종속변수가 이진변수인 회귀분석 | glm(outcome ~ x1 + x2, family = binomial) |
| 오즈비 | 회귀계수를 오즈비로 변환 | exp(coef(model)) |
| 95% 신뢰구간 | 회귀계수의 신뢰구간 | confint(model) |
| 정확도 평가 | 예측값과 실제값의 정확도 계산 | mean(predicted == actual) |
glm() 함수를 사용해 쉽게 로지스틱 회귀모형을 구축하고 예측값을 생성할 수 있습니다.
# 데이터 생성
set.seed(123)
data <- data.frame(
y = as.factor(sample(c(0, 1), 100, replace = TRUE)), # 종속변수 (이진형)
x1 = rnorm(100, mean = 10, sd = 2), # 연속형 독립변수 1
x2 = rnorm(100, mean = 5, sd = 1), # 연속형 독립변수 2
x3 = as.factor(sample(c('A', 'B', 'C'), 100, replace = TRUE)) # 범주형 독립변수
)
# 범주형 변수 factor 변환
data$x3 <- as.factor(data$x3)
# 데이터 확인
str(data)
glm() 함수를 이용하여 모델을 생성합니다.family = binomial을 설정합니다.# 다중 로지스틱 회귀 모델 생성
logit_model <- glm(y ~ x1 + x2 + x3, data = data, family = binomial)
# VIF 확인을 위해 car 패키지 설치 및 로드
install.packages("car")
library(car)
# VIF 계산
vif(logit_model)
해석
# 최적 모델 찾기 (step 함수)
optimal_model <- step(logit_model, direction = "both")
해석
summary(optimal_model)로 확인합니다.summary() 함수를 사용하여 모델의 회귀계수, 유의성(p-value), 잔차 등을 확인합니다.exp()를 사용합니다.# 모델 요약 확인
summary(optimal_model)
해석 방법
# 회귀계수와 신뢰구간
round(exp(cbind(coef(optimal_model), confint(optimal_model))), 3)
해석 방법
# AIC 확인
AIC(optimal_model)
# 새로운 데이터 생성
new_data <- data.frame(x1 = c(12, 8), x2 = c(4, 6), x3 = factor(c('A', 'B'), levels = c('A', 'B', 'C')))
# 예측 (확률값으로 출력)
predict(optimal_model, newdata = new_data, type = "response")
# 1. 데이터 생성
set.seed(123)
data <- data.frame(
y = as.factor(sample(c(0, 1), 100, replace = TRUE)),
x1 = rnorm(100, mean = 10, sd = 2),
x2 = rnorm(100, mean = 5, sd = 1),
x3 = as.factor(sample(c('A', 'B', 'C'), 100, replace = TRUE))
)
# 2. 다중 로지스틱 회귀 모델 생성
logit_model <- glm(y ~ x1 + x2 + x3, data = data, family = binomial)
# 3. 다중공선성 확인 (VIF)
install.packages("car")
library(car)
vif(logit_model)
# 4. 최적 모델 선택
optimal_model <- step(logit_model, direction = "both")
# 5. 회귀계수 해석
summary(optimal_model)
# 6. 오즈비 해석
round(exp(cbind(coef(optimal_model), confint(optimal_model))), 3)
# 7. 예측 수행
new_data <- data.frame(x1 = c(12, 8), x2 = c(4, 6), x3 = factor(c('A', 'B'), levels = c('A', 'B', 'C')))
predict(optimal_model, newdata = new_data, type = "response")
이 과정을 통해 VIF 확인, 최적 모델 선택, 오즈비 해석, 예측값 생성이 모두 완료됩니다.
round(exp(cbind(coef(), confint())), 3)는 로지스틱 회귀 분석의 결과 해석에 매우 중요한 부분으로, 회귀계수(Estimate)와 신뢰구간(Confidence Interval, CI)을 오즈비(Odds Ratio, OR)로 변환하고, 소수점 3자리로 반올림한 결과를 나타내는 것입니다.
이 코드를 하나하나 단계별로 해석해보겠습니다.
x의 회귀계수가 0.5라면, x가 1 단위 증가할 때 로그오즈(log-odds)가 0.5만큼 증가합니다.# 로지스틱 회귀 모델
model <- glm(y ~ x1 + x2, data = data, family = binomial)
# 회귀계수 출력
coef(model)
출력 예시
(Intercept) x1 x2
-2.105 0.150 -0.025
해석
# 회귀계수의 신뢰구간 계산
confint(model)
출력 예시
2.5 % 97.5 %
(Intercept) -3.876 -0.450
x1 0.010 0.290
x2 -0.120 0.050
해석
cbind(coef(model), confint(model))
출력 예시
Coefficient 2.5 % 97.5 %
(Intercept) -2.105 -3.876 -0.450
x1 0.150 0.010 0.290
x2 -0.025 -0.120 0.050
해석
exp(cbind(coef(model), confint(model)))
출력 예시
OR 2.5 % 97.5 %
(Intercept) 0.121 0.021 0.637
x1 1.162 1.010 1.337
x2 0.975 0.887 1.051
해석
round(exp(cbind(coef(model), confint(model))), 3)
출력 예시
OR 2.5 % 97.5 %
(Intercept) 0.121 0.021 0.637
x1 1.162 1.010 1.337
x2 0.975 0.887 1.051
해석
# 데이터 생성
set.seed(123)
data <- data.frame(
y = as.factor(sample(c(0, 1), 100, replace = TRUE)),
x1 = rnorm(100, mean = 10, sd = 2),
x2 = rnorm(100, mean = 5, sd = 1)
)
# 다중 로지스틱 회귀 모델 생성
model <- glm(y ~ x1 + x2, data = data, family = binomial)
# 회귀계수, 신뢰구간, 오즈비 해석
round(exp(cbind(coef(model), confint(model))), 3)
출력 예시
OR 2.5 % 97.5 %
(Intercept) 0.121 0.021 0.637
x1 1.162 1.010 1.337
x2 0.975 0.887 1.051


merge, join으로 두 데이터를 합쳐주어서 분석
round
종속변수 : 연속형 변수
독립변수 : 범주형 (2개)
모수검정과 비모수검정은 데이터의 분포에 따라 분석 방법을 선택하는 기준이 됩니다.
# 데이터 생성
set.seed(123)
group1 <- rnorm(30, mean = 10, sd = 3) # 그룹 1 데이터
group2 <- rnorm(30, mean = 12, sd = 3) # 그룹 2 데이터
# 독립표본 t-test
t.test(group1, group2, var.equal = TRUE)

# 데이터 생성
group1 <- c(8, 7, 9, 10, 12, 8, 9, 6, 10, 8)
group2 <- c(15, 14, 13, 16, 12, 18, 17, 20, 19, 21)
# Mann-Whitney U Test
wilcox.test(group1, group2)
# 데이터 생성
before <- c(90, 85, 100, 95, 105, 110)
after <- c(88, 83, 97, 92, 102, 108)
# 대응표본 t-test
t.test(before, after, paired = TRUE)


# 데이터 생성
before <- c(90, 85, 100, 95, 105, 110)
after <- c(88, 83, 97, 92, 102, 108)
# Wilcoxon Signed-Rank Test
wilcox.test(before, after, paired = TRUE)
# 데이터 생성
group_A <- rnorm(30, mean = 10, sd = 3)
group_B <- rnorm(30, mean = 12, sd = 3)
group_C <- rnorm(30, mean = 15, sd = 3)
# 데이터 프레임 생성
data <- data.frame(
value = c(group_A, group_B, group_C),
group = factor(rep(c("A", "B", "C"), each = 30))
)
# ANOVA 분석
anova_result <- aov(value ~ group, data = data)
summary(anova_result)


# 데이터 생성
group_A <- c(8, 7, 9, 10, 12)
group_B <- c(15, 14, 13, 16, 12)
group_C <- c(20, 18, 17, 22, 21)
# 데이터 프레임 생성
data <- data.frame(
value = c(group_A, group_B, group_C),
group = factor(rep(c("A", "B", "C"), each = 5))
)
# Kruskal-Wallis Test
kruskal.test(value ~ group, data = data)
# 데이터 생성
x <- rnorm(50)
y <- 2 * x + rnorm(50)
# Pearson 상관계수
cor(x, y, method = "pearson")
cor.test(x, y, method = "pearson")
# 데이터 생성
x <- rnorm(50)
y <- 2 * x + rnorm(50)
# Spearman 상관계수
cor(x, y, method = "spearman")
cor.test(x, y, method = "spearman")
| 검정 유형 | 모수검정 (P) | 비모수검정 (N) | 검정 목적 |
|---|---|---|---|
| 독립 두 집단 비교 | t-test | Mann-Whitney U Test | 평균 비교 (모수) / 중위수 비교 (비모수) |
| 대응 두 집단 비교 | Paired t-test | Wilcoxon Signed-Rank Test | 평균 차이 (모수) / 중위수 차이 (비모수) |
| 세 집단 이상 비교 | ANOVA | Kruskal-Wallis Test | 평균 비교 (모수) / 중위수 비교 (비모수) |
| 상관관계 분석 | Pearson Correlation | Spearman Correlation | 선형 상관 (모수) / 비선형 상관 (비모수) |