Data Analysis

R/머신러닝 & 딥러닝

[R] 회귀분석 연습문제

Holy_Water 2022. 11. 4. 10:31

핵심함수 정리

lm():  lm( )함수는linear regression의 핵심으로,회귀분석,단일 계층 분석,공분산 분석에 이용할 수 있다. (여기서는 회귀분석용도로 활용하였다.)

summary():

- 수치형 변수는 최소값, 제1사분위수(Q1), 중앙값, 평균, 제3사분위수(Q3), 최대값, NA 개수를 보여준다.
- 범주형 변수는 table()과 유사한 형식을 보여준다.
- 단순 요약 외에도 분산분석, 회귀분석 등 통계모형 피팅 결과를 보여줄 때도 흔히 사용한다.

predict():

lm(), glm()과 같은 명령문으로 얻어낸 회귀선으로 주어진 x값에 해당하는 새로운 y값을 predict하는 command

cor(): cor()함수는 상관계수를 구하는 함수이다

 

 

 

문제: 1. product.csv 파일의 데이터를 이용하여 다음의 단계별로 다중 회귀분석을 수행하시오.

 

1단계: 학습데이터(train), 검정데이터(test)를 7:3비율로 샘플링

변수모델링: y변수는 제품_만족도, x변수는 제품_적절성과 제품_친밀도

idx <- sample(1:nrow(product), 0.7*nrow(product))
idx # 1~product의 끝인 264까지, product값의 70% 뽑아내기)

train <- product[idx,] # idx값을 통해product중 70%값 뽑아내기
dim(train) # [1] 184 3 #dim함수로 확인
train # 70%짜리 학습데이터추출 완료

test <- product[-idx, ] # idx값에 (-)를 붙여 result중 나머지 30% 뽑아내기 
dim(test) # [1] 80 3
test # 30%짜리 학습데이터추출 완료

 

2단계: 학습데이터 이용 회귀모델 생성, 변수 모델링) y변수 : 제품_만족도, (x변수 : 제품_적절성, 제품_친밀도)

#lm()함수를통해 구한 값의 회귀모델 생성
model <- lm(formula=제품_만족도 ~ 제품_적절성 + 제품_친밀도, data=train)
summary(model) #p-value 확인 (p-value: < 2.2e-16)

 

3단계: 검정데이터 이용 모델 예측치 생성

pred <- predict(model, test) ; pred # pred()함수를 사용하여 예측치 생성

 

4단계: 모델 평가: cor()함수 이용

cor(pred, test$제품_만족도) # 상관계수를 구할 수 있는cor()함수로 모델 평가하기

 

 

문제2: ggplot2 패키지에서 제공하는 diamonds 데이터 셋을 대상으로 carat, table, depth 변수 중에서 다이아몬드의 가격(price)에 영향을 미치는 관계를 다중회귀 분석을 이용하여 예측하시오.

library(ggplot2) #ggplot2 라이브러리 불러오기
head(diamonds) #데이터 확인

 

조건1: 다이아몬드 가격 결정에 가장 큰 영향을 미치는 변수는?

result <- lm(price ~ carat + table + depth, data = diamonds) 
#lm()함수를 활용해서 회귀분석 후 result값에 저장

summary(result) #summary()함수로 결과 값 확인

회귀분석 결과 carat의 estimate값이 가장 높음으로 가격 결정에 가장 큰 영향을 미치는 변수는 'carrat' 이다. 

 

 

조건2: 다중회귀 분석 결과를 정(+)과 부(-)관계로 해설

Coefficients:
             Estimate Std. Error t value Pr(>|t|)    
(Intercept) 13003.441    390.918   33.26   <2e-16 ***
carat        7858.771     14.151  555.36   <2e-16 ***
table        -104.473      3.141  -33.26   <2e-16 ***
depth        -151.236      4.820  -31.38   <2e-16 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 1526 on 53936 degrees of freedom
Multiple R-squared:  0.8537,   Adjusted R-squared:  0.8537 
F-statistic: 1.049e+05 on 3 and 53936 DF,  p-value: < 2.2e-16

회귀분석 결과 carat은 price에 정(+)의 영향을 미치지만, table,depth는 가격에 부(-)의 영향을 미친다.