R의 선형 회귀 모델에서 예측 함수 사용

Jesse John 2023년6월21일
R의 선형 회귀 모델에서 예측 함수 사용

lm() 함수를 사용하여 선형 회귀 모델을 구축한 후 우리가 할 수 있는 작업 중 하나는 기능의 새 값에 대한 응답(출력 또는 종속이라고도 함) 변수의 값을 예측하는 것입니다. 입력 또는 독립) 변수.

이 기사에서는 선형 회귀의 맥락에서 R의 predict() 함수의 기본 인수를 살펴보겠습니다. 특히, 함수는 입력이 특정 열 이름을 가진 특정 형식일 것으로 기대한다는 것을 알 수 있습니다.

R의 선형 회귀 모델에서 predict() 함수 사용

predict() 함수를 시연하기 위해 먼저 일부 샘플 데이터로 선형 회귀 모델을 빌드합니다.

데이터 프레임에서 열 이름을 관찰하고 선형 회귀 공식에서 어떻게 사용되는지 확인합니다.

예제 코드:

Feature = c(15:24)
set.seed(654)
Response = 2* c(15:24) + 5 + rnorm(10, 0,3)
DFR = data.frame(Response, Feature)
DFR

# The arguments' formula and data are named for clarity.
LR_mod = lm(formula = Response~Feature, data = DFR)
LR_mod

출력:

> Feature = c(15:24)
> set.seed(654)
> Response = 2* c(15:24) + 5 + rnorm(10, 0,3)
> DFR = data.frame(Response, Feature)
> DFR
   Response Feature
1  32.71905      15
2  35.83089      16
3  44.06888      17
4  40.71729      18
5  43.28590      19
6  47.45182      20
7  50.19730      21
8  51.81954      22
9  53.22364      23
10 51.69406      24
> # The arguments' formula and data are named for clarity.
> LR_mod = lm(formula = Response~Feature, data = DFR)
> LR_mod

Call:
lm(formula = Response ~ Feature, data = DFR)

Coefficients:
(Intercept)      Feature
      2.096        2.205

predict()를 사용하여 응답 예측

이제 선형 회귀 모델이 있으므로 R의 predict() 기능을 사용하여 기능 변수의 새 값에 해당하는 응답 값을 예측할 수 있습니다.

predict() 함수에는 선형 회귀 모델에 대해 최소 두 개의 인수가 필요합니다.

  1. 모델 객체.
  2. 새로운 데이터.

이 맥락에서 고려해야 할 두 가지 중요한 고려 사항이 있습니다.

  1. 새로운 데이터를 데이터 프레임으로 제공해야 합니다. 이 예에서 기능은 단일 변수입니다.

    predict() 함수에 벡터를 제공하면 오류가 발생합니다.

  2. 새 데이터 프레임의 기능 변수 열 이름이 원래 데이터 프레임의 해당 열 이름과 다른 경우 예기치 않은 출력이 발생합니다.

예제 코드:

# First, let us create new values for the feature variable.
NewFeature = c(20.5, 16.5, 22.5)

# If we provide a vector, we get an error.
predict(object = LR_mod, newdata = NewFeature)

# Make a data frame.
DFR2 = data.frame(NewFeature)

# Another error.
# R saw the correct number of rows in the new data but did not use them.
predict(LR_mod, newdata = DFR2)

출력:

> # First, let us create new values for the feature variable.
> NewFeature = c(20.5, 16.5, 22.5)

> # If we provide a vector, we get an error.
> predict(object = LR_mod, newdata = NewFeature)
Error in model.frame.default(Terms, newdata, na.action = na.action, xlev = object$xlevels) :
  'data' must be a data.frame, environment, or list

> # Make a data frame.
> DFR2 = data.frame(NewFeature)

> # Another error.
> # R saw the correct number of rows in the new data but did not use them.
> predict(LR_mod, newdata = DFR2)
       1        2        3        4        5        6        7        8        9       10
35.17674 37.38209 39.58745 41.79280 43.99816 46.20351 48.40887 50.61422 52.81958 55.02494
Warning message:
'newdata' had 3 rows but variables found have 10 rows

predict() 함수에서 올바른 출력을 얻으려면 두 가지를 확인해야 합니다.

  1. predict() 함수의 newdata 인수에 데이터 프레임을 전달해야 합니다. 이것은 첫 번째 오류 이후 위에서 수행되었습니다.
  2. 특성 변수의 열 이름은 모델을 구축하기 위해 원래 데이터 프레임에서 사용된 것과 동일해야 합니다. 다음 코드 세그먼트에서 이 변경을 수행합니다.

인수의 이름을 지정하는 것도 좋습니다.

이러한 측면이 해결되면 predict() 함수에서 예상되는 출력을 얻습니다.

예제 코드:

# The feature column of the new data frame is given the same name as in the original data frame.
DFR3 = data.frame(Feature = NewFeature)

# Finally, predict() works as expected.
predict(LR_mod, newdata = DFR3)

출력:

> # The feature column of the new data frame is given the same name as in the original data frame.
> DFR3 = data.frame(Feature = NewFeature)

> # Finally, predict() works as expected.
> predict(LR_mod, newdata = DFR3)
       1        2        3
47.30619 38.48477 51.71690
작가: Jesse John
Jesse John avatar Jesse John avatar

Jesse is passionate about data analysis and visualization. He uses the R statistical programming language for all aspects of his work.

관련 문장 - R Error