######################################################
## 8. Multiple Regression
## 독립변수가 2개 이상인 경우에 사용하며 아래와 같은 방법이 있음
## – 이론을 미리 정해 놓고 분석하는 Conframtory 분석
## – 이론을 정하지 않고 가장 적절한 모형을 고르는 Exploratory 분석
## – 다중회귀 모형의 특수한 경우인 다항회귀분석
## CASE 분석은 아래와 같은 원칙을 따른다
## – 종속변수와 독립변수간의 상관관계가 높아야 한다.
## – 독립변수들 간의 상관관계는 낮아야 한다.
## – 소수 정예의 원칙을 따른다
## 모형 도출 방법은 아래의 방법들을 사용한다.
## – all possible regression : 모든 방안을 만들어 놓고 비교하는 방법
## – forward selection : 가장 유의한 변수 부터 덜 유의한 변수 순으로 하나씩 추가
## – backward selection : 모든 변수를 넣어 놓고 가장 기여도가 낮은 변수를 하나씩 제거
## – stepwise selection : forward 와 backward 조합
######################################################

## (1) Data Set Attitude 데이터 사용
setwd(“D:/DEVSource/CSV_DATA/”)
data = read.csv(“attitude.csv”)
print(data)
## (2) 전체 변수의 기여도를 확인
## anova 를 사용
## P-Value 가 높을 수로 기여도가 낮음
out1 = lm(rating ~ . , data=data)
anova(out1)

## (3) 일부 기여도가 낮은 데이터를 제외하고 선형식 구성
out2 = lm(rating ~ complaints + learning + advance , data=data)

## (4) 일부 기여도가 낮은 데이터를 제외하고 선형식 구성
out3 = lm(rating ~ complaints + learning , data=data)

## (5) 일부 기여도가 낮은 데이터를 제외하고 선형식 구성
out4 = lm(rating ~ learning , data=data)

## (6) 모델간 비교를 통해 제거한 변수의 기여도를 확인
## – rasies , critical, privaliges 는 기여도가 거의 없음
## – advance 도 기여도가 높지 않음
## – complaints 는 기여도가 매우 높음
anova(out4, out3, out2, out1)

## (7) Summary 로 모델을 확인
##모든 항목을 사용할 경우 조정R : 0.65
##out2 : 0.693
##out3 : 0.684
##out4 : 0.0002311
##out2 의 항목이 가장 높은 조정 R 을 갖는다.
summary(out1)
summary(out2)
summary(out3)
summary(out4)

## (8) 다중선형회귀식 확인
## out2 모델을 사용하여 예측을 진행해 본다.
## 모델 분석에 사용한 데이터를 그대로 넣는 경우
print(data[1,c(3,5,8)])
plot(predict(out2, newdata=data[1,c(3,5,8)], interval=”prediction”)[,1])

## complaints , learning, advance 를 임의로 정하여 예측
## 실행 결과 예
## 100, 100, 100 => 88.39
## 10, 10, 10 => 21.0594
## 10, 100, 100 => 32.3486
input = data.frame(10,100,100)
colnames(input) <- c(“complaints”, “learning”, “advance”)
print(predict(out2, newdata=input , interval=”prediction”))