楼主: liuqiang0704
2251 5

[问答] 求R语言rms包的calibrate函数源代码 [推广有奖]

  • 0关注
  • 0粉丝

已卖:1份资源

硕士生

64%

还不是VIP/贵宾

-

威望
0
论坛币
28 个
通用积分
34.3151
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
3063 点
帖子
46
精华
0
在线时间
291 小时
注册时间
2015-8-18
最后登录
2025-6-23

楼主
liuqiang0704 发表于 2022-5-30 08:58:49 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
请问谁知道rms包的calibrate函数源代码,我想研究一下,找了好久没找到
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:calibrate Rate lib R语言 bra

回帖推荐

llb_321 发表于2楼  查看完整内容

rms 6.2-0 calibrate的源代码:

沙发
llb_321 在职认证  发表于 2022-5-30 14:50:53
rms 6.2-0 calibrate的源代码:
  1. function (fit, predy, method = c("boot", "crossvalidation",
  2.     ".632", "randomization"), B = 40, bw = FALSE,
  3.     rule = c("aic", "p"), type = c("residual",
  4.         "individual"), sls = 0.05, aics = 0, force = NULL,
  5.     estimates = TRUE, pr = FALSE, kint, smoother = "lowess",
  6.     digits = NULL, ...)
  7. {
  8.     call <- match.call()
  9.     method <- match.arg(method)
  10.     rule <- match.arg(rule)
  11.     type <- match.arg(type)
  12.     ns <- num.intercepts(fit)
  13.     if (missing(kint))
  14.         kint <- floor((ns + 1)/2)
  15.     clas <- attr(fit, "class")
  16.     model <- if (any(clas == "lrm"))
  17.         "lr"
  18.     else if (any(clas == "ols"))
  19.         "ol"
  20.     else stop("fit must be from lrm or ols")
  21.     lev.name <- NULL
  22.     yvar.name <- as.character(formula(fit))[2]
  23.     y <- fit$y
  24.     n <- length(y)
  25.     if (length(y) == 0)
  26.         stop("fit did not use x=TRUE,y=TRUE")
  27.     if (model == "lr") {
  28.         y <- factor(y)
  29.         lev.name <- levels(y)[kint + 1]
  30.         fit$y <- as.integer(y) - 1
  31.     }
  32.     predicted <- if (model == "lr")
  33.         plogis(fit$linear.predictors - fit$coefficients[1] +
  34.             fit$coefficients[kint])
  35.     else fit$linear.predictors
  36.     if (missing(predy)) {
  37.         if (n < 11)
  38.             stop("must have n > 10 if do not specify predy")
  39.         p <- sort(predicted)
  40.         predy <- seq(p[5], p[n - 4], length = 50)
  41.         p <- NULL
  42.     }
  43.     penalty.matrix <- fit$penalty.matrix
  44.     cal.error <- function(x, y, iter, smoother, predy, kint,
  45.         model, digits = NULL, ...) {
  46.         if (model == "lr") {
  47.             x <- plogis(x)
  48.             y <- y >= kint
  49.         }
  50.         if (length(digits))
  51.             x <- round(x, digits)
  52.         smo <- if (is.function(smoother))
  53.             smoother(x, y)
  54.         else lowess(x, y, iter = 0)
  55.         cal <- approx(smo, xout = predy, ties = function(x) x[1])$y
  56.         if (iter == 0)
  57.             structure(cal - predy, keepinfo = list(orig.cal = cal))
  58.         else cal - predy
  59.     }
  60.     fitit <- function(x, y, model, penalty.matrix = NULL, xcol = NULL,
  61.         ...) {
  62.         if (length(penalty.matrix) && length(xcol)) {
  63.             if (model == "ol")
  64.                 xcol <- xcol[-1] - 1
  65.             penalty.matrix <- penalty.matrix[xcol, xcol, drop = FALSE]
  66.         }
  67.         f <- switch(model, lr = lrm.fit(x, y, penalty.matrix = penalty.matrix,
  68.             tol = 1e-13), ol = if (length(penalty.matrix) ==
  69.             0) {
  70.             w <- lm.fit.qr.bare(x, y, intercept = TRUE, xpxi = TRUE)
  71.             w$var <- w$xpxi * sum(w$residuals^2)/(length(y) -
  72.                 length(w$coefficients))
  73.             w
  74.         } else lm.pfit(x, y, penalty.matrix = penalty.matrix))
  75.         if (any(is.na(f$coefficients)))
  76.             f$fail <- TRUE
  77.         f
  78.     }
  79.     z <- predab.resample(fit, method = method, fit = fitit, measure = cal.error,
  80.         pr = pr, B = B, bw = bw, rule = rule, type = type, sls = sls,
  81.         aics = aics, force = force, estimates = estimates, non.slopes.in.x = model ==
  82.             "ol", smoother = smoother, predy = predy, model = model,
  83.         kint = kint, penalty.matrix = penalty.matrix, ...)
  84.     orig.cal <- attr(z, "keepinfo")$orig.cal
  85.     z <- cbind(predy, calibrated.orig = orig.cal, calibrated.corrected = orig.cal -
  86.         z[, "optimism"], z)
  87.     structure(z, class = "calibrate.default", call = call,
  88.         kint = kint, model = model, lev.name = lev.name, yvar.name = yvar.name,
  89.         n = n, freq = fit$freq, non.slopes = ns, B = B, method = method,
  90.         predicted = predicted, smoother = smoother)
  91. }
复制代码
已有 2 人评分论坛币 学术水平 热心指数 信用等级 收起 理由
cheetahfly + 10 热心帮助其他会员
Sunknownay + 3 + 3 + 3 热心帮助其他会员

总评分: 论坛币 + 10  学术水平 + 3  热心指数 + 3  信用等级 + 3   查看全部评分

藤椅
liuqiang0704 发表于 2022-5-30 16:04:07
llb_321 发表于 2022-5-30 14:50
rms 6.2-0 calibrate的源代码:
感谢大神

板凳
liuqiang0704 发表于 2022-5-31 00:32:56
llb_321 发表于 2022-5-30 14:50
rms 6.2-0 calibrate的源代码:
大神方便说一下怎么找到的吗?我把rms包下载下来也没看见这个函数的源代码

报纸
llb_321 在职认证  发表于 2022-5-31 11:19:18
liuqiang0704 发表于 2022-5-31 00:32
大神方便说一下怎么找到的吗?我把rms包下载下来也没看见这个函数的源代码
  1. library(rms)
  2. getAnywhere(calibrate.default)
复制代码

地板
liuqiang0704 发表于 2022-5-31 17:46:03
llb_321 发表于 2022-5-31 11:19
非常感谢

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-4 18:07