File: estimateResidualVariance.R

package info (click to toggle)
r-cran-mlr 2.19.2%2Bdfsg-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 8,264 kB
  • sloc: ansic: 65; sh: 13; makefile: 5
file content (40 lines) | stat: -rw-r--r-- 1,278 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#' Estimate the residual variance.
#'
#' Estimate the residual variance of a regression model on a given task.
#' If a regression learner is provided instead of a model, the model is
#' trained (see [train]) first.
#'
#' @param x ([Learner] or [WrappedModel])\cr
#'   Learner or wrapped model.
#' @param task ([RegrTask])\cr
#'   Regression task.
#'   If missing, `data` and `target` must be supplied.
#' @param data ([data.frame])\cr
#'   A data frame containing the features and target variable.
#'   If missing, `task` must be supplied.
#' @param target (`character(1)`)\cr
#'   Name of the target variable.
#'   If missing, `task` must be supplied.
#' @export
estimateResidualVariance = function(x, task, data, target) {
  UseMethod("estimateResidualVariance")
}

#' @export
estimateResidualVariance.Learner = function(x, task, data, target) {
  if (missing(task)) {
    task = makeRegrTask(data = data, target = target)
  }
  estimateResidualVariance.WrappedModel(train(x, task), task)
}

#' @export
estimateResidualVariance.WrappedModel = function(x, task, data, target) {
  if (missing(task)) {
    task = makeRegrTask(data = data, target = target)
  } else {
    assertClass(task, classes = "RegrTask")
  }
  p = predict(x, task)
  var(p$data$response - p$data$truth)
}