我正在使用RStudio。我使用来自nomogram包的命名图函数rms创建了一个命名图。以下是守则:
library("rms")
n <- 100
set.seed(17)
dat <- data.frame(BMI = abs(rnorm(n,30,0.5)),
Rib = abs(rnorm(n,10,0.1)),
LSM = abs(rnorm(n,36,2)))
dat <- upData(dat,
labels=c(BMI='BMI', LTR = 'LTR', LSM='LSM'),
units=c(BMI='kgm-2', LSM='mm', LTR='cm'),
L = .045*(BMI-30) +
(log(LSM - 10)-5.2),
y_sample = ifelse(runif(n) < plogis(L), 1, 0))
dst <- datadist(dat)
options(datadist ="dst")
mmwm <- rms::lrm(y_sample ~ as.numeric(1.43*BMI) - LTR*(1.03*LSM) - 33.19,
data=dat, x=TRUE, y=TRUE)
mmwmngram <- nomogram(mmwm, fun=plogis,
funlabel="dIMC-N Results")
plot(mmwmngram, xfrac=.45)预期的结果是绘制出如下所示的图:

我得到的错误如下所示:
terms.formula中的错误(公式,数据=数据,特殊值= NULL):ExtractVars中无效的模型公式
我想了解我需要编写什么样的代码才能使用这个等式(1.43*BMI) - LTR*(1.03*LSM) - 33.19。
发布于 2022-02-15 15:26:57
您在公式中使用了LTR,但它不是dat的列。因此,函数不能提取该变量。R公式是抽象型的,例如y ~ x + b表示任何线性函数,y ~ x + b - 1是没有偏差的任何线性函数。你能做某事。就像这样:
library("rms")
n <- 100
set.seed(17)
dat <- data.frame(
BMI = abs(rnorm(n, 30, 0.5)),
Rib = abs(rnorm(n, 10, 0.1)),
LSM = abs(rnorm(n, 36, 2))
)
dat <- upData(dat,
labels = c(BMI = "BMI", LTR = "LTR", LSM = "LSM"),
units = c(BMI = "kgm-2", LSM = "mm", LTR = "cm"),
L = .045 * (BMI - 30) +
(log(LSM - 10) - 5.2),
y_sample = ifelse(runif(n) < plogis(L), 1, 0)
)
dst <- datadist(dat)
options(datadist = "dst")
dat$BMI <- dat$BMI * 1.43
mmwm <- rms::lrm(y_sample ~ BMI + LSM + 1,
data = dat, x = TRUE, y = TRUE
)
mmwmngram <- nomogram(mmwm,
fun = plogis,
funlabel = "dIMC-N Results"
)
plot(mmwmngram, xfrac = .45)https://stackoverflow.com/questions/71122626
复制相似问题