fit_with()
是 pipe-friendly 工具,它将公式列表应用于拟合函数,例如 stats::lm()
。公式列表通常使用 formulas()
创建。
参数
- data
-
用于拟合模型的数据集。
- .f
-
拟合函数,例如
stats::lm()
、lme4::lmer()
或rstanarm::stan_glmer()
。 - .formulas
-
指定模型的公式列表。
- ...
-
传递给
.f
的附加参数
例子
# fit_with() is typically used with formulas().
disp_fits <- mtcars %>% fit_with(lm, formulas(~disp,
additive = ~drat + cyl,
interaction = ~drat * cyl,
full = add_predictors(interaction, ~am, ~vs)
))
# The list of fitted models is named after the names of the list of
# formulas:
disp_fits$full
#>
#> Call:
#> .f(formula = disp ~ drat * cyl + am + vs, data = data)
#>
#> Coefficients:
#> (Intercept) drat cyl am vs
#> -164.83 27.58 75.84 -38.22 -15.53
#> drat:cyl
#> -6.97
#>
# Additional arguments are passed on to .f
mtcars %>% fit_with(glm, list(am ~ disp), family = binomial)
#> [[1]]
#>
#> Call: .f(formula = am ~ disp, family = function (link = "logit")
#> {
#> linktemp <- substitute(link)
#> if (!is.character(linktemp))
#> linktemp <- deparse(linktemp)
#> okLinks <- c("logit", "probit", "cloglog", "cauchit", "log")
#> family <- "binomial"
#> if (linktemp %in% okLinks)
#> stats <- make.link(linktemp)
#> else if (is.character(link)) {
#> stats <- make.link(link)
#> linktemp <- link
#> }
#> else {
#> if (inherits(link, "link-glm")) {
#> stats <- link
#> if (!is.null(stats$name))
#> linktemp <- stats$name
#> }
#> else {
#> stop(gettextf("link \"%s\" not available for %s family; available links are %s",
#> linktemp, family, paste(sQuote(okLinks), collapse = ", ")),
#> domain = NA)
#> }
#> }
#> variance <- function(mu) mu * (1 - mu)
#> validmu <- function(mu) all(is.finite(mu)) && all(mu > 0 &
#> mu < 1)
#> dev.resids <- function(y, mu, wt) .Call(C_binomial_dev_resids,
#> y, mu, wt)
#> aic <- function(y, n, mu, wt, dev) {
#> m <- if (any(n > 1))
#> n
#> else wt
#> -2 * sum(ifelse(m > 0, (wt/m), 0) * dbinom(round(m *
#> y), round(m), mu, log = TRUE))
#> }
#> simfun <- function(object, nsim) {
#> ftd <- fitted(object)
#> n <- length(ftd)
#> ntot <- n * nsim
#> wts <- object$prior.weights
#> if (any(wts%%1 != 0))
#> stop("cannot simulate from non-integer prior.weights")
#> if (!is.null(m <- object$model)) {
#> y <- model.response(m)
#> if (is.factor(y)) {
#> yy <- factor(1 + rbinom(ntot, size = 1, prob = ftd),
#> labels = levels(y))
#> split(yy, rep(seq_len(nsim), each = n))
#> }
#> else if (is.matrix(y) && ncol(y) == 2) {
#> yy <- vector("list", nsim)
#> for (i in seq_len(nsim)) {
#> Y <- rbinom(n, size = wts, prob = ftd)
#> YY <- cbind(Y, wts - Y)
#> colnames(YY) <- colnames(y)
#> yy[[i]] <- YY
#> }
#> yy
#> }
#> else rbinom(ntot, size = wts, prob = ftd)/wts
#> }
#> else rbinom(ntot, size = wts, prob = ftd)/wts
#> }
#> structure(list(family = family, link = linktemp, linkfun = stats$linkfun,
#> linkinv = stats$linkinv, variance = variance, dev.resids = dev.resids,
#> aic = aic, mu.eta = stats$mu.eta, initialize = binomInitialize(family),
#> validmu = validmu, valideta = stats$valideta, simulate = simfun),
#> class = "family")
#> }, data = data)
#>
#> Coefficients:
#> (Intercept) disp
#> 2.6308 -0.0146
#>
#> Degrees of Freedom: 31 Total (i.e. Null); 30 Residual
#> Null Deviance: 43.23
#> Residual Deviance: 29.73 AIC: 33.73
#>
相关用法
- R modelr formulas 创建公式列表
- R modelr typical 求典型值
- R modelr resample “惰性”重采样。
- R modelr crossv_mc 生成测试训练对以进行交叉验证
- R modelr model_matrix 构建设计矩阵
- R modelr model-quality 计算给定数据集的模型质量
- R modelr permute 生成 n 个排列重复。
- R modelr add_residuals 将残差添加到 DataFrame
- R modelr data_grid 生成数据网格。
- R modelr add_predictions 将预测添加到 DataFrame
- R modelr seq_range 生成向量范围内的序列
- R modelr resample_partition 生成数据帧的独占分区
- R modelr add_predictors 将预测变量添加到公式中
- R modelr na.warn 处理缺失值并发出警告
- R modelr bootstrap 生成 n 个引导程序重复。
- R modelr resample_bootstrap 生成 boostrap 复制
- R vcov.gam 从 GAM 拟合中提取参数(估计器)协方差矩阵
- R gam.check 拟合 gam 模型的一些诊断
- R matrix转list用法及代码示例
- R as 强制对象属于某个类
- R null.space.dimension TPRS 未惩罚函数空间的基础
- R language-class 表示未评估语言对象的类
- R gam.reparam 寻找平方根惩罚的稳定正交重新参数化。
- R className 类名包含对应的包
- R extract.lme.cov 从 lme 对象中提取数据协方差矩阵
注:本文由纯净天空筛选整理自Hadley Wickham等大神的英文原创作品 Fit a list of formulas。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。