【发布时间】:2021-04-06 23:37:55
【问题描述】:
我正在尝试将终端节点的美学编辑为:
-
增加框的大小,以便在其中列出全名。
-
如果可能,当存在不相等的回归器名称长度时,证明内部文本的合理性,以生成终端节点的类似表格的视图。
下面我列出了我的尝试,使用gp 选项(fontsize = 10, boxwidth = 10),但我怀疑我使用了错误的美学选项。
mysummary 函数在this question 中得到了极大的启发。
library("partykit")
set.seed(1234L)
data("PimaIndiansDiabetes", package = "mlbench")
## a simple basic fitting function (of type 1) for a logistic regression
logit <- function(y, x, start = NULL, weights = NULL, offset = NULL, ...) {
glm(y ~ 0 + x, family = binomial, start = start, ...)}
## Long name regressors
PimaIndiansDiabetes$looooong_name_1 <- rnorm(nrow(PimaIndiansDiabetes))
PimaIndiansDiabetes$looooong_name_2 <- rnorm(nrow(PimaIndiansDiabetes))
## Short name regressor
PimaIndiansDiabetes$short_name <- rnorm(nrow(PimaIndiansDiabetes))
## set up a logistic regression tree
pid_tree <- mob(diabetes ~ glucose +
looooong_name_1 +
looooong_name_2 +
short_name |
pregnant + pressure + triceps + insulin +
mass + pedigree + age, data = PimaIndiansDiabetes, fit = logit)
## Summary function from: https://stackoverflow.com/questions/65495322/partykit-modify-terminal-node-to-include-standard-deviation-and-significance-of/65500344#65500344
mysummary <- function(info, digits = 2) {
n <- info$nobs
na <- format(names(coef(info$object)))
cf <- format(coef(info$object), digits = digits)
se <- format(sqrt(diag(vcov(info$object))), digits = digits)
t <- format(coef(info$object)/sqrt(diag(vcov(info$object))) ,digits = digits)
c(paste("n =", n),
paste("Regressor","beta" ,"[", "t-ratio" ,"]"),
paste(na, cf, "[",t,"]")
)
}
#plot tree
plot(pid_tree,
terminal_panel = node_terminal,
tp_args = list(FUN = mysummary,fill = c("white")),
gp = gpar(fontsize = 10,
boxwidth = 10, ## aparently this option doesn't belonw here,
margins = rep(0.01, 4))) ## neither this does.
但我想得到类似以下的东西:
非常感谢。
【问题讨论】:
标签: r tree decision-tree party