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()
함수에는 선형 회귀 모델에 대해 최소 두 개의 인수가 필요합니다.
- 모델 객체.
- 새로운 데이터.
이 맥락에서 고려해야 할 두 가지 중요한 고려 사항이 있습니다.
-
새로운 데이터를 데이터 프레임으로 제공해야 합니다. 이 예에서 기능은 단일 변수입니다.
predict()
함수에 벡터를 제공하면 오류가 발생합니다. -
새 데이터 프레임의 기능 변수 열 이름이 원래 데이터 프레임의 해당 열 이름과 다른 경우 예기치 않은 출력이 발생합니다.
예제 코드:
# 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()
함수에서 올바른 출력을 얻으려면 두 가지를 확인해야 합니다.
predict()
함수의newdata
인수에 데이터 프레임을 전달해야 합니다. 이것은 첫 번째 오류 이후 위에서 수행되었습니다.- 특성 변수의 열 이름은 모델을 구축하기 위해 원래 데이터 프레임에서 사용된 것과 동일해야 합니다. 다음 코드 세그먼트에서 이 변경을 수행합니다.
인수의 이름을 지정하는 것도 좋습니다.
이러한 측면이 해결되면 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