Statistical Analytics - rxPredict

Sample Code


 사용할 데이터는 Revolution 폴더안의 Sample Data로, "mortDefaultSmall2009"라는 이름의 csv파일이다.  

데이터의 행 수는 총 10000개 이고, 'creditScore', 'houseAge', 'yearsEmploy', 'ccDebt', 'year', 'default' 로 총 6개의 변수(열)를 가지고 있다.  

현재 사용한 데이터는 2009년 데이터이지만, 실제는 2000년부터 2009년까지 10년간의 sample data가 있다.  

뒤에 데이터 합치기와 같은 부분에서 다른 연도의 데이터도 사용될 것이다.  

1. Data Import하기


# (1-1) data의 위치지정 Revolution R을 다운할 시, 자동으로 생성되는 Sample
# data중 하나인 데이터로, sampleData폴더의 'mortDefaultSmall2009'
# csv파일을 사용

text_mort <- "C:/Revolution/R-Enterprise-6.1/R-2.14.2/library/RevoScaleR/SampleData/mortDefaultSmall2009.csv"

# (1-2) rxImport를 사용한 data import

data_mort <- rxImport(inData = text_mort, outFile = "mort2009.xdf", overwrite = TRUE)

2.rxLodit에서 만든 데이터를 rxPredict에 사용하기


# (1-3) rxLogit을 사용한 로지스틱 회귀분석

mort_logit <- rxLogit(default ~ creditScore + houseAge + yearsEmploy + ccDebt, 
    data = data_mort)

# (1-4) rxPredict 를 사용하려 rxLinMod, rxLogitm rxGlm의 잔차의 예측값을
# 구함(이 중, rxLogit의 예제 이용)

mort_predict <- rxPredict(mort_logit, data = data_mort, overwrite = TRUE)

summary(mort_predict)
## Call:
## rxSummary(formula = form, data = object, byTerm = TRUE, reportProgress = 0L)
## 
## Summary Statistics Results for: ~creditScore + houseAge +
##     yearsEmploy + ccDebt + year + default + default_Pred
## File name: C:\Users\choi\Desktop\mort2009.xdf
## Number of valid observations: 10000 
##  
##  Name         Mean      StdDev    Min       Max       ValidObs MissingObs
##  creditScore   700.6322 5.083e+01 4.990e+02 8.720e+02 10000    0         
##  houseAge       19.9087 7.573e+00 0.000e+00 4.000e+01 10000    0         
##  yearsEmploy     5.0335 2.023e+00 0.000e+00 1.400e+01 10000    0         
##  ccDebt       5040.3651 1.989e+03 0.000e+00 1.252e+04 10000    0         
##  year         2009.0000 0.000e+00 2.009e+03 2.009e+03 10000    0         
##  default         0.0235 1.515e-01 0.000e+00 1.000e+00 10000    0         
##  default_Pred    0.0235 7.646e-02 8.898e-07 9.773e-01 10000    0

3.rxLinMod에서 만든 데이터를 rxPredict에 사용하기


# (1-5) rxLinMod에서 나온 모형을 rxPredict을 이용하여 잔차 예측

linMod <- rxLinMod(creditScore ~ yearsEmploy, data = data_mort)
Pred_rx <- rxPredict(modelObject = linMod, data = data_mort, computeResiduals = TRUE)

head(Pred_rx)
##   creditScore houseAge yearsEmploy ccDebt year default default_Pred
## 1         701       23           2   3661 2009       0    9.010e-04
## 2         683       12           5   3384 2009       0    2.380e-04
## 3         705       30           5   3210 2009       0    2.824e-04
## 4         769       13           5   2843 2009       0    6.005e-05
## 5         741       11           7   1532 2009       0    8.553e-06
## 6         731       14           4   5302 2009       0    2.245e-03
##   creditScore_Pred creditScore_Resid
## 1            699.6             1.446
## 2            700.6           -17.620
## 3            700.6             4.380
## 4            700.6            68.380
## 5            701.3            39.669
## 6            700.3            30.735

rxLinMod을 사용해서 만든 모형에 rxPredict으로 잔차의 예측값이 구해졌음을 확인할 수 있다.

4.lm함수로 만들어진 결과와 비교하기


# (1-6)lm을 사용하여 만든 모형

# lm함수를 사용하기 위해서는 data frame이 필요하므로, 새로 생성해줌

dataframe_mort <- rxImport(inData = text_mort, overwrite = TRUE)


mortLM <- lm(creditScore ~ yearsEmploy, data = dataframe_mort)

mortLM
## 
## Call:
## lm(formula = creditScore ~ yearsEmploy, data = dataframe_mort)
## 
## Coefficients:
## (Intercept)  yearsEmploy  
##     698.844        0.355

Appendix

rxPredict

Usage

rxPredict(modelObject, data = NULL, …)

Default S3 method:
rxPredict(modelObject, data = NULL, outData = NULL,
computeStdErrors = FALSE, interval = “none”, confLevel = 0.95,
computeResiduals = FALSE, type = c(“response”, “link”),
writeModelVars = FALSE, removeMissings = FALSE,
overwrite = FALSE, checkFactorLevels = TRUE,
predVarNames = NULL, residVarNames = NULL,
intervalVarNames = NULL, stdErrorsVarNames = NULL, predNames = NULL,
blocksPerRead = rxGetOption(“blocksPerRead”),
reportProgress = rxGetOption(“reportProgress”), verbose = 0,
xdfCompressionLevel = rxGetOption(“xdfCompressionLevel”), …)


Hankuk University of Foreign Studies. Dept of Statistics. Daewoo Choi Lab. Yeeseul Han.
한국외국어대학교 통계학과 최대우 연구실 한이슬
e-mail : han.lolove17@gmail.com