gpt4 book ai didi

使用非默认选项运行现有函数

转载 作者:行者123 更新时间:2023-12-02 03:37:57 25 4
gpt4 key购买 nike

下面粘贴的来自 ResourceSelection::hoslem.test 的代码执行 Hosmer 和 Lemeshow 拟合优度测试。在调查为什么输出与另一个软件 (Stata) 执行的输出不完全一致时,我发现差异与分位数函数 (type=7) 使用默认 R 参数有关。我想使用具有不同默认值的此函数来计算分位数 (type=6)。

FWIW,R 使用的 9 种可能方法的引用可以在以下位置找到:

https://www.amherst.edu/media/view/129116/original/Sample+Quantiles.pdf

Stata manual for pctile指的是默认方法和“altdef”方法。我发现很难将这两个方法映射到相应的 R 类型。

但是,

hoslem.test(yhat, y, type=6)

产品:

> hl <- hoslem.test(y, yhat, type=6)
Error in hoslem.test(y, yhat, type = 6) : unused argument (type = 6)

有没有办法使用分位数函数的非默认参数来运行下面的函数?

即。允许以下行添加 ', type=6':

qq <- unique(quantile(yhat, probs = seq(0, 1, 1/g), type=6))

有问题的函数是:

> ResourceSelection::hoslem.test
function (x, y, g = 10)
{
DNAME <- paste(deparse(substitute(x)), deparse(substitute(y)),
sep = ", ")
METHOD <- "Hosmer and Lemeshow goodness of fit (GOF) test"
yhat <- y
y <- x
qq <- unique(quantile(yhat, probs = seq(0, 1, 1/g)))
cutyhat <- cut(yhat, breaks = qq, include.lowest = TRUE)
observed <- xtabs(cbind(y0 = 1 - y, y1 = y) ~ cutyhat)
expected <- xtabs(cbind(yhat0 = 1 - yhat, yhat1 = yhat) ~
cutyhat)
chisq <- sum((observed - expected)^2/expected)
PVAL = 1 - pchisq(chisq, g - 2)
PARAMETER <- g - 2
names(chisq) <- "X-squared"
names(PARAMETER) <- "df"
structure(list(statistic = chisq, parameter = PARAMETER,
p.value = PVAL, method = METHOD, data.name = DNAME, observed = observed,
expected = expected), class = "htest")
}

最佳答案

我们可以修改一些函数。查看函数体

as.list(body(hoslem.test))

看到我们要修改的元素是body中的第6个元素

[[1]]
`{`

[[2]]
DNAME <- paste(deparse(substitute(x)), deparse(substitute(y)),
sep = ", ")

[[3]]
METHOD <- "Hosmer and Lemeshow goodness of fit (GOF) test"

[[4]]
yhat <- y

[[5]]
y <- x

[[6]]
qq <- unique(quantile(yhat, probs = seq(0, 1, 1/g)))

将第6个元素修改为你想要的内容

body(hoslem.test)[[6]] = substitute(qq <- unique(quantile(yhat,
probs = seq(0, 1, 1/g), type = 6)))

关于使用非默认选项运行现有函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31058629/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com