핵심함수 정리
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는 가격에 부(-)의 영향을 미친다.
'R > 머신러닝 & 딥러닝' 카테고리의 다른 글
[R] 시계열분석 관련 실습(2) (0) | 2022.11.07 |
---|---|
[R] 시계열분석 관련 실습(1) (0) | 2022.11.07 |
[R] 로지스틱 회귀분석관련 실습 (0) | 2022.11.04 |
[R] 변수선택 관련 간단한 실습 (0) | 2022.11.04 |
[R] 요인분석 연습문제 (+시각화) (0) | 2022.11.04 |