This function implements conformal prediction for regression models using a split conformal approach.

conformalize(
  formula = NULL,
  x = NULL,
  y = NULL,
  data = NULL,
  fit_func,
  predict_func = predict,
  split_ratio = 0.5,
  seed = NULL,
  ...
)

Arguments

formula

A formula specifying the model to be fitted.

x

A numeric matrix of predictors.

y

A numeric vector of responses.

data

A data frame containing the variables in the formula.

fit_func

A function to fit the model. It should take a formula and data as arguments.

predict_func

A function to make predictions. It should take a fitted model and new data as arguments.

split_ratio

The proportion of data to use for training. Default is 0.5.

seed

An optional seed for reproducibility.

Value

A list containing the fitted model, residuals, and other relevant information.

Examples

# Example usage with a linear model
library(MASS)
data(Boston)
set.seed(123)
fit_func <- function(formula, data) {
  lm(formula, data = data)
}
predict_func <- function(fit, newdata) {
  predict(fit, newdata)
}
conformalize(formula = medv ~ ., data = Boston, fit_func = fit_func,
predict_func = predict_func, split_ratio = 0.5, seed = 123)
#> 
#> [1] "cal_pred's value:"
#>          1          2          3          6          8          9         12 
#> 29.9318978 24.6093573 30.4750561 25.4657850 17.7567556  8.5716408 20.6460225 
#>         15         17         18         19         21         24         28 
#> 19.9822286 21.7275708 17.0698867 16.8142400 12.0217207 13.3772498 14.4763556 
#>         29         30         31         35         36         37         38 
#> 19.7639227 21.1030328 10.6966433 12.9972255 23.8710147 22.1936496 23.3251021 
#>         44         46         47         49         50         53         56 
#> 24.3455705 21.6872117 19.4551125  6.2418635 16.1400922 27.4138143 31.1401155 
#>         58         59         60         62         65         68         70 
#> 32.8599289 22.2654598 21.3273033 18.0889504 22.9533396 21.1403436 20.7330943 
#>         71         73         75         79         80         82         87 
#> 25.0996763 24.7662717 25.4954652 20.6370139 22.3333613 26.9210555 21.3856023 
#>         88         92         93         95         96         97         99 
#> 25.6136044 27.1169454 28.7864672 26.6729898 28.2360090 23.9541227 34.6228100 
#>        100        101        103        104        108        111        112 
#> 31.6171426 24.9508078 19.9466178 20.4109750 20.7250525 20.7472560 26.2542842 
#>        114        119        120        122        123        124        126 
#> 19.8113018 19.6833865 20.4692728 22.3686383 19.9985972 14.8672723 22.3147370 
#>        128        130        131        132        133        138        139 
#> 15.7311522 14.5053856 20.8914963 20.3901443 21.1580077 19.9423291 13.7537032 
#>        140        142        144        146        147        149        150 
#> 16.6450742  2.5857021 11.3847736 10.6487200 16.1011218  8.7709280 14.5859562 
#>        156        157        162        167        169        170        171 
#> 21.6376675 14.0813284 36.9036625 36.9067544 25.7821918 26.0009558 21.6832099 
#>        172        173        175        176        180        181        182 
#> 23.7836151 21.9625602 26.0281755 30.4874587 32.6511369 33.8148740 27.2606663 
#>        183        187        188        189        190        191        192 
#> 33.5998971 35.3472573 32.5843871 31.9721551 33.7205229 30.1892105 29.8773553 
#>        193        201        202        203        204        206        207 
#> 32.5558720 30.6942826 28.7383460 36.4529443 41.0688667 22.4544176 23.3092401 
#>        208        213        216        219        220        221        227 
#> 16.8028495 23.1706802 24.3560217 24.8506385 30.4388256 33.6706344 37.1825174 
#>        228        230        231        233        234        237        239 
#> 31.9274935 31.3099027 23.8401054 37.6479903 36.5848162 30.8097212 27.9514766 
#>        241        242        246        247        248        251        258 
#> 26.0431991 22.7103135 12.4549889 20.0458066 19.7499882 24.4378773 42.1488620 
#>        259        260        261        264        266        268        269 
#> 35.5758025 34.4172294 33.7208791 33.1032923 27.7090496 39.1755094 38.5755767 
#>        271        274        275        276        281        283        284 
#> 21.7706944 36.3087606 37.4767407 33.9298743 37.6175082 40.6325163 44.7673557 
#>        285        293        295        296        297        298        300 
#> 30.7140466 32.2430175 23.4642742 27.7662442 26.5974221 18.0236747 31.2050087 
#>        301        304        305        311        313        314        317 
#> 30.0164214 32.2156901 32.7958849 18.6820548 23.1624689 25.8397212 16.7403329 
#>        320        321        322        323        324        327        329 
#> 21.0769062 25.1947086 25.2438458 23.2857856 19.5022513 24.2039048 20.6879567 
#>        333        336        337        338        340        341        343 
#> 23.1695688 21.2323556 20.5783629 19.6288161 21.5998230 21.8599783 21.6941401 
#>        344        345        346        349        351        354        357 
#> 27.8192235 28.9298004 16.4217974 27.6120685 21.1488588 25.6607399 21.6425237 
#>        360        361        364        365        367        370        372 
#> 20.5377042 24.5182664 22.6764108 39.6056819 16.8127209 35.4013005 25.8958759 
#>        375        376        381        382        384        385        386 
#> -0.7316503 25.7084270 15.6181379 18.1531425 12.7389227  2.7745809  7.1666954 
#>        387        388        390        391        392        394        397 
#>  5.9636250  4.7834675 14.4374949 17.7825892 17.4718127 20.8221517 19.2077269 
#>        399        400        402        403        404        410        412 
#>  5.9515438  9.6543130 17.7680616 18.1047333 13.6115719 19.0092328 15.9214623 
#>        413        414        418        419        421        422        423 
#> -0.1039418 11.9091330  6.4195928  6.9571279 20.2718202 18.8043421 19.0619722 
#>        424        428        429        433        435        437        438 
#> 12.0650433 14.9420460 13.7431051 21.6356161 16.6053281 14.7786815  8.1147701 
#>        442        443        445        446        447        448        449 
#> 17.5279026 19.3695786 11.3761906 11.4038686 18.0684980 18.8392364 17.8919600 
#>        451        453        454        456        457        461        466 
#> 16.4620924 18.9397490 22.5169873 15.7612848 12.7284592 19.2760828 18.4962333 
#>        467        468        469        471        472        473        474 
#> 14.3596134 16.1687355 16.8436217 20.0111385 22.9858917 22.4043144 25.8124725 
#>        476        482        484        487        488        489        490 
#> 14.9019271 27.5824139 21.5925332 19.7568409 21.9046237 12.3730804  7.9580707 
#>        495        496        497        498        499        504        505 
#> 20.6588048 16.5222363 13.3580994 19.2055845 21.4185994 28.6816869 27.1595787 
#>        506 
#> 23.5134516 
#> 
#> 
#> [1] "cal_y's value:"
#>   [1] 24.0 21.6 34.7 28.7 27.1 16.5 18.9 18.2 23.1 17.5 20.2 13.6 14.5 14.8 18.4
#>  [16] 21.0 12.7 13.5 18.9 20.0 21.0 24.7 19.3 20.0 14.4 19.4 25.0 35.4 31.6 23.3
#>  [31] 19.6 16.0 33.0 22.0 20.9 24.2 22.8 24.1 21.2 20.3 23.9 22.5 22.2 22.0 22.9
#>  [46] 20.6 28.4 21.4 43.8 33.2 27.5 18.6 19.3 20.4 21.7 22.8 18.7 20.4 19.3 20.3
#>  [61] 20.5 17.3 21.4 16.2 14.3 19.2 19.6 23.0 17.1 13.3 17.8 14.4 15.6 13.8 15.6
#>  [76] 17.8 15.4 15.6 13.1 50.0 50.0 23.8 22.3 17.4 19.1 23.1 22.6 29.4 37.2 39.8
#>  [91] 36.2 37.9 50.0 32.0 29.8 34.9 37.0 30.5 36.4 32.9 24.1 42.3 48.5 22.6 24.4
#> [106] 22.5 22.4 25.0 21.5 23.0 26.7 37.6 31.6 31.5 24.3 41.7 48.3 25.1 23.7 22.0
#> [121] 20.1 18.5 24.3 20.5 24.4 50.0 36.0 30.1 33.8 31.0 22.8 50.0 43.5 21.1 35.2
#> [136] 32.4 32.0 45.4 46.0 50.0 32.2 27.9 21.7 28.6 27.1 20.3 29.0 24.8 33.1 36.1
#> [151] 16.1 19.4 21.6 17.8 21.0 23.8 23.1 20.4 18.5 23.0 19.3 19.4 21.1 19.5 18.5
#> [166] 19.0 18.7 16.5 23.9 31.2 17.5 24.5 22.9 30.1 17.8 22.6 25.0 16.8 21.9 21.9
#> [181] 50.0 50.0 13.8 15.0 10.4 10.9 12.3  8.8  7.2 10.5  7.4 11.5 15.1 23.2 13.8
#> [196] 12.5  5.0  6.3  7.2 12.1  8.3 27.5 17.2 17.9 16.3 10.4  8.8 16.7 14.2 20.8
#> [211] 13.4 10.9 11.0 16.1 11.7  9.6  8.7 17.1 18.4 10.8 11.8 14.9 12.6 14.1 13.4
#> [226] 16.1 17.8 14.1 12.7 16.4 19.9 19.0 19.1 19.1 19.9 19.6 23.2 29.8 13.3 23.7
#> [241] 21.8 19.1 20.6 15.2  7.0 24.5 23.1 19.7 18.3 21.2 23.9 22.0 11.9
#> 
#> $fit
#> 
#> Call:
#> lm(formula = formula, data = data)
#> 
#> Coefficients:
#> (Intercept)         crim           zn        indus         chas          nox  
#>   32.345703    -0.090792     0.051840     0.027244     3.978434   -12.332055  
#>          rm          age          dis          rad          tax      ptratio  
#>    3.388799     0.001790    -1.414487     0.281171    -0.011314    -0.718374  
#>       black        lstat  
#>    0.009914    -0.655356  
#> 
#> 
#> $residuals
#>            1            2            3            6            8            9 
#>  -5.93189785  -3.00935726   4.22494386   3.23421500   9.34324443   7.92835920 
#>           12           15           17           18           19           21 
#>  -1.74602250  -1.78222860   1.37242919   0.43011329   3.38575997   1.57827926 
#>           24           28           29           30           31           35 
#>   1.12275023   0.32364441  -1.36392273  -0.10303276   2.00335673   0.50277448 
#>           36           37           38           44           46           47 
#>  -4.97101469  -2.19364956  -2.32510207   0.35442952  -2.38721172   0.54488750 
#>           49           50           53           56           58           59 
#>   8.15813653   3.25990784  -2.41381427   4.25988450  -1.25992887   1.03454021 
#>           60           62           65           68           70           71 
#>  -1.72730334  -2.08895036  10.04666043   0.85965644   0.16690569  -0.89967625 
#>           73           75           79           80           82           87 
#>  -1.96627172  -1.39546520   0.56298611  -2.03336132  -3.02105546   1.11439774 
#>           88           92           93           95           96           97 
#>  -3.41360439  -5.11694542  -5.88646719  -6.07298982   0.16399099  -2.55412274 
#>           99          100          101          103          104          108 
#>   9.17719004   1.58285735   2.54919223  -1.34661782  -1.11097500  -0.32505252 
#>          111          112          114          119          120          122 
#>   0.95274396  -3.45428418  -1.11130179   0.71661351  -1.16927281  -2.06863831 
#>          123          124          126          128          130          131 
#>   0.50140276   2.43272774  -0.91473705   0.46884781  -0.20538562  -1.69149626 
#>          132          133          138          139          140          142 
#>  -0.79014435   1.84199231  -2.84232908  -0.45370321   1.15492584  11.81429793 
#>          144          146          147          149          150          156 
#>   4.21522637   3.15127996  -0.50112182   9.02907198   0.81404382  -6.03766746 
#>          157          162          167          169          170          171 
#>  -0.98132841  13.09633745  13.09324559  -1.98219176  -3.70095576  -4.28320989 
#>          172          173          175          176          180          181 
#>  -4.68361512   1.13743984  -3.42817552  -1.08745868   4.54886314   5.98512598 
#>          182          183          187          188          189          190 
#>   8.93933375   4.30010288  14.65274272  -0.58438710  -2.17215513   1.17947708 
#>          191          192          193          201          202          203 
#>   6.81078951   0.62264470   3.84412795   2.20571744  -4.63834603   5.84705568 
#>          204          206          207          208          213          216 
#>   7.43113330   0.14558243   1.09075989   5.69715052  -0.77068021   0.64397826 
#>          219          220          221          227          228          230 
#>  -3.35063851  -7.43882560  -6.97063444   0.41748260  -0.32749353   0.19009727 
#>          231          233          234          237          239          241 
#>   0.45989459   4.05200968  11.71518384  -5.70972121  -4.25147663  -4.04319913 
#>          242          246          247          248          251          258 
#>  -2.61031353   6.04501106   4.25419343   0.75001177  -0.03787734   7.85113795 
#>          259          260          261          264          266          268 
#>   0.42419748  -4.31722945   0.07912086  -2.10329230  -4.90904963  10.82449060 
#>          269          271          274          275          276          281 
#>   4.92442332  -0.67069443  -1.10876056  -5.07674065  -1.92987430   7.78249180 
#>          283          284          285          293          295          296 
#>   5.36748370   5.23264428   1.48595341  -4.34301754  -1.76427420   0.83375579 
#>          297          298          300          301          304          305 
#>   0.50257791   2.27632527  -2.20500867  -5.21642142   0.88430990   3.30411506 
#>          311          313          314          317          320          321 
#>  -2.58205478  -3.76246891  -4.23972121   1.05966711  -0.07690617  -1.39470863 
#>          322          323          324          327          329          333 
#>  -2.14384581  -2.88578557  -1.00225134  -1.20390481  -1.38795675  -3.76956876 
#>          336          337          338          340          341          343 
#>  -0.13235556  -1.07836293  -1.12881613  -2.59982299  -3.15997827  -5.19414013 
#>          344          345          346          349          351          354 
#>  -3.91922353   2.27019961   1.07820257  -3.11206850   1.75114118   4.43926014 
#>          357          360          361          364          365          367 
#>  -3.84252368   2.06229578   0.48173358  -5.87641082 -17.70568186   5.08727909 
#>          370          372          375          376          381          382 
#>  14.59869952  24.10412405  14.53165030 -10.70842703  -5.21813791  -7.25314247 
#>          384          385          386          387          388          390 
#>  -0.43892271   6.02541908   0.03330461   4.53637500   2.61653252  -2.93749494 
#>          391          392          394          397          399          400 
#>  -2.68258921   5.72818733  -7.02215173  -6.70772692  -0.95154379  -3.35431296 
#>          402          403          404          410          412          413 
#> -10.56806161  -6.00473330  -5.31157186   8.49076723   1.27853768  18.00394179 
#>          414          418          419          421          422          423 
#>   4.39086699   3.98040719   1.84287210  -3.57182021  -4.60434214   1.73802777 
#>          424          428          429          433          435          437 
#>   1.33495669  -4.04204600  -2.74310512  -5.53561611  -4.90532812  -5.17868149 
#>          438          442          443          445          446          447 
#>   0.58522991  -0.42790262  -0.96957856  -0.57619059   0.39613138  -3.16849803 
#>          448          449          451          453          454          456 
#>  -6.23923636  -3.79196000  -3.06209235  -2.83974904  -4.71698730  -1.66128477 
#>          457          461          466          467          468          469 
#>  -0.02845920  -2.87608278   1.40376674   4.64038658   2.93126454   2.25637829 
#>          471          472          473          474          476          482 
#>  -0.11113848  -3.38589175   0.79568555   3.98752747  -1.60192710  -3.88241389 
#>          484          487          488          489          490          495 
#>   0.20746680  -0.65684094  -1.30462369   2.82691957  -0.95807072   3.84119515 
#>          496          497          498          499          504          505 
#>   6.57776371   6.34190063  -0.90558448  -0.21859935  -4.78168690  -5.15957869 
#>          506 
#> -11.61345162 
#> 
#> $sd_residuals
#> [1] 4.949644
#> 
#> $scaled_residuals
#> [1] 0.03378207
#> 
#> attr(,"class")
#> [1] "conformalize"