programming/r

[R] 상관 분석과 회귀 분석

8. 상관 분석과 회귀 분석

 

8.1 상관 분석

8.1.1 상관계수

8.1.1.1 피어슨 상관계수(Pearson correlation coefficient)

두 변수간의 관련성을 구하기 위해 보편적으로 이용됨

r = X와 Y가 함께 변하는 정도 / X와 Y가 따로 변하는 정도

결과의 해석

r 값은 X와 Y가 완전히 동일하면 +1, 전혀 다르면 0, 반대방향으로 완전히 동일하면 -1 을 가진다.

결정계수 (coefficient of determination) 는 r^2 로 계산하며 이것은 X 로부터 Y 를 예측할 수 있는 정도를 의미한다.

일반적으로

r이 -1.0과 -0.7 사이이면, 강한 음적 선형관계,

r이 -0.7과 -0.3 사이이면, 뚜렷한 음적 선형관계,

r이 -0.3과 -0.1사이이면, 약한 음적 선형관계,

r이 -0.1과 +0.1 사이이면, 거의 무시될 수 있는 선형관계,

r이 +0.1과 +0.3 사이이면, 약한 양적 선형관계,

r이 +0.3과 +0.7 사이이면, 뚜렷한 양적선형관계,

r이 +0.7과 +1.0 사이이면, 강한 양적선형관계

로 해석한다.

 

8.1.1.2 Spearman상관계수(Spearman correlation coefficient)

데이터가 서열척도인 경우 즉 자료의 값 대신 순위를 이용하는 경우의 상관계수로서, 데이터를 작은 것부터 차례로 순위를 매겨 서열 순서로 바꾼 뒤 순위를 이용해 상관계수를 구한다. 두 변수 간의 연관 관계가 있는지 없는지를 밝혀주며 자료에 이상점이 있거나 표본크기가 작을 때 유용하다. 스피어만 상관계수는 -1과 1 사이의 값을 가지는데 두 변수 안의 순위가 완전히 일치하면 +1이고, 두 변수의 순위가 완전히 반대이면 -1이 된다. 예를 들어 수학 잘하는 학생이 영어를 잘하는 것과 상관있는지 없는지를 알아보는데 쓰일 수 있다.

x <- c(0, 1, 4, 9, 16)

mean(x) # x의 평균

y <- c(1, 2, 3, 4)

z <- c(0, 5, 7, 9)

cor(y, z, method="pearson") # y와 z의 pearson 상관계수

cor(y, z, method="spearman") # y와 z의 spearman 상관계수

6

0.96936309217407

1

 

8.1.2 담배값의 인상이 흡연에 미치는 영향을 분석

담배값 인상 전의 월별 매출액 자료와 인상 후의 월별 매출액 자료를 조사하여 상관분석을 하면 담배값의 인상이 흡연에 미치는 영향을 분석할 수 있다.

귀무가설 : 담배값 인상과 흡연과 상관관계가 없다

대립가설 : 담배값 인상과 흡연과 상관관계가 있다

x <- c(70, 72,62,64, 71, 76, 0, 65, 74, 72)

y <- c(70, 74, 65, 68, 72, 74, 61, 66, 76, 75)

cor.test(x, y, method="pearson")

Pearson's product-moment correlation

 

 

8.2 회귀분석

8.2.1 독립변수가 한단위 증가할 때 종속변수에 미치는 영향을 측정하기 위한 통계적 예측 모형

8.2.1.1 단순선형회귀분석 - 1개의 독립변수를 사용

8.2.1.2다중회귀분석 - 여러개의 독립변수를 사용

 

8.2.2 회귀분석 프로세스

- 분석을 위한 주제 결정

ex) 교육시간이 직원의 업무 수행에 영향을 주는가?

식사시간이 아이의 두뇌발달에 영향을 주는가?

- 독립변수와 종속변수 선정

독립변수 : 교육시간

종속변수 : 업무능력

- 가설 설정

귀무가설(H0) : 교육시간이 업무 능력 점수에 영향을 주지 않는다.

대립가설(H1) : 교육시간이 업무 능력 점수에 영향을 준다.

- 데이터 수집

- 데이터 중에서 특이하거나 이상한 데이터의 제거

- 모델을 적용하여 데이터 분석

- 결과 해석

p-value가 0.05보다 작으면 대립가설(H1) 채택

결정계수가 0~1 사이의 값을 가지며 0.65~0.7 이상이어야 좋은 회귀모형이라고 할 수 있음

 

8.2.3 단순회귀분석 실습1

# 20명의 신장과 체중 데이터

height <- c(179,166,175, 172, 173, 167, 169, 172, 172, 179, 161, 174, 166, 176, 182, 175, 177, 167, 176, 177)

weight <- c(113, 84, 99, 103, 102, 83, 85, 113, 84, 99, 51, 90, 77, 112, 150, 128, 133, 85, 112, 85)

plot(height, weight)

9;40

# 상관계수 계산

cor(height, weight)

0.800235051021387

# 단순회귀분석 모델 생성

# 체중 = 기울기 x 체중 + 절편

model <- lm(weight ~ height)

# 절편(Intercept) -478.816

# 기울기 3.347

model

Call:

lm(formula = weight ~ height)

Coeffiecients:

(Intercept) height

-478.816 3.347

# 키가 180인 사람의 체중 예측

model$coefficients[[2]] * 180 + model$coefficients[[1]]

123.666666666667

summary(model)

8.10;00

 

8.2.5 다중회귀분석

독립변수가 2개 이상인 경우

1. 분석의 대상이 되는 모든 독립변수를 넣고 회귀식을 구성

2. 기여도가 낮은 변수부터 하나씩 제거

3. 최종적으로 종속 변수에 대한 기여도가 높은 변수들로 구성된 회귀식을 완성

# R에 기본적으로 포함되는 데이터셋 목록

data()

# 데이터셋에 대한 도움말

# help(데이터셋이름)

head(attitude)

tail(attitude)

rating complaints .....2048

다중회귀분석 모델 생성

model <- lm(rating ~ . , data=attitude)

model

2120

분석결과 요약

summary(model)

2229

p-value가 0.05보다 작으므로 통계적으로 유의함

예측의 정확성은 66%

Coefficients: 를 보면 complaints와 learning 항목만이 유의미한 것으로 평가됨

*표가 많을수록 유의하다.

기여도가 낮은 항목을 제거함으로써 의미있는 회귀식을 구성하는 과정

reduced <- step(model, direction="backward")

Start:AIC=