R에서 lm()과 함께 predict() 함수를 사용하는 방법


R의 lm() 함수는 선형 회귀 모델을 맞추는 데 사용될 수 있습니다.

모델을 피팅한 후에는 예측() 함수를 사용하여 새로운 관측 값의 응답 값을 예측할 수 있습니다.

이 함수는 다음 구문을 사용합니다.

예측(객체, newdata, 유형 = “응답”)

금:

  • object: glm() 함수를 사용한 모델 조정의 이름
  • newdata: 예측할 새 데이터 프레임의 이름
  • 유형: 수행할 예측 유형입니다.

다음 예에서는 lm() 함수를 사용하여 R에서 선형 회귀 모델을 피팅하는 방법과 예측() 함수를 사용하여 모델이 이전에 본 적이 없는 새로운 관찰의 응답 값을 예측하는 방법을 보여줍니다.

예: R에서 lm()과 함께 Predict() 함수 사용

다양한 농구 선수에 대한 정보를 포함하는 다음과 같은 데이터 프레임이 R에 있다고 가정합니다.

 #create data frame
df <- data. frame (minutes=c(5, 10, 13, 14, 20, 22, 26, 34, 38, 40),
                 fouls=c(5, 5, 3, 4, 2, 1, 3, 2, 1, 1),
                 points=c(6, 8, 8, 7, 14, 10, 22, 24, 28, 30))

#view data frame
df

   minutes fouls points
1 5 5 6
2 10 5 8
3 13 3 8
4 14 4 7
5 20 2 14
6 22 1 10
7 26 3 22
8 34 2 24
9 38 1 28
10 40 1 30

각 선수가 득점한 점수를 예측하기 위해 플레이 시간과 총 파울을 사용하여 다음과 같은 다중 선형 회귀 모델을 적용한다고 가정해 보겠습니다.

포인트 = β 0 + β 1 (분) + β 2 (파울)

lm() 함수를 사용하여 이 모델을 조정할 수 있습니다.

 #fit multiple linear regression model
fit <- lm(points ~ minutes + fouls, data=df)

#view summary of model
summary(fit)

Call:
lm(formula = points ~ minutes + fouls, data = df)

Residuals:
    Min 1Q Median 3Q Max 
-3.5241 -1.4782 0.5918 1.6073 2.0889 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept) -11.8949 4.5375 -2.621 0.0343 *  
minutes 0.9774 0.1086 9.000 4.26e-05 ***
fouls 2.1838 0.8398 2.600 0.0354 *  
---
Significant. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 2.148 on 7 degrees of freedom
Multiple R-squared: 0.959, Adjusted R-squared: 0.9473 
F-statistic: 81.93 on 2 and 7 DF, p-value: 1.392e-05

모델 결과의 계수를 사용하여 적합 회귀 방정식을 작성할 수 있습니다.

포인트 = -11.8949 + 0.9774(분) + 2.1838(파울)

그런 다음 예측() 함수를 사용하여 15분 동안 플레이하고 총 3개의 파울을 범한 선수가 득점할 점수를 예측할 수 있습니다.

 #define new observation
newdata = data. frame (minutes=15, fouls=3)

#use model to predict points value
predict(fit, newdata)

       1 
9.317731

모델은 이 플레이어가 9.317731 점을 획득할 것으로 예측합니다.

여러 개의 새로운 관측값이 포함된 데이터 프레임이 있는 경우 한 번에 여러 예측을 할 수도 있습니다.

예를 들어, 다음 코드는 적합 회귀 모델을 사용하여 세 명의 플레이어의 점수 값을 예측하는 방법을 보여줍니다.

 #define new data frame of three cars
newdata = data. frame (minutes=c(15, 20, 25),
                     fouls=c(3, 2, 1))

#view data frame
newdata

  minutes fouls
1 15 3
2 20 2
3 25 1

#use model to predict points for all three players
predict(model, newdata)

        1 2 3 
 9.317731 12.021032 14.724334 

결과를 해석하는 방법은 다음과 같습니다.

  • 15분 동안 3개의 파울을 범한 선수의 예상 점수는 9.32점 입니다.
  • 20분 동안 2개의 파울을 범한 선수의 예상 점수는 12.02점 입니다.
  • 25분 동안 파울 1개를 기록한 선수의 예상 점수는 14.72점 입니다.

예측() 사용 시 참고 사항

새 데이터 프레임의 열 이름은 모델을 생성하는 데 사용된 데이터 프레임의 열 이름과 정확히 일치해야 합니다.

이전 예에서 모델을 생성하는 데 사용한 데이터 프레임에는 예측 변수에 대한 다음 열 이름이 포함되어 있습니다.

  • 실수

따라서 newdata 라는 새 데이터 프레임을 생성할 때 열 이름도 지정했습니다.

  • 실수

열 이름이 일치하지 않으면 다음 오류 메시지가 표시됩니다.

 Error in eval(predvars, data, env)

예측() 함수를 사용할 때 이 점을 명심하십시오.

추가 리소스

다음 튜토리얼에서는 R에서 다른 일반적인 작업을 수행하는 방법을 설명합니다.

R에서 단순 선형 회귀를 수행하는 방법
R에서 다중 선형 회귀를 수행하는 방법
R에서 다항식 회귀를 수행하는 방법
R에서 예측 구간을 만드는 방법

의견을 추가하다

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다