0

这可能是一个简单的编码问题,但我一生都无法得到它。使用此代码进行 logit:

glm(formula = cbind(Found, Missing) ~ Male + Age, family = binomial, 
    data = table.5.15)

我无法让 Hosmer-Lemeshow 工作:

hosmerlem(miss.logit$cbind(Found,Missing), fitted(miss.logit))

Error in cbind(1 - y, y) : attempt to apply non-function

我意识到这是cbind在我的 logit 模型中存在的问题。

4

2 回答 2

4

假设您正在使用与Frank Harrell大致相似的 Hosmer Lemeshow 测试的一些实现,

您的错误似乎很可能是一个基本的语法问题:

miss.logit$cbind(Found,Missing),

您的$操作员不够聪明,无法同时引用FoundMissing作为在 . 范围内解析的对象miss.logit。例如:

> x <- data.frame('n'=1:26, 'l'=letters[1:26])
> x$cbind(n, l)
Error: attempt to apply non-function

问题是 R 认为cbind是一个函数,x你试图在其中评估两个全局变量nl. 即使我制作cbind了 , 的元素xnl需要在其中引用x

我可以改用 with 语句或仅使用基本数组子集来更正此代码。

> x[, c('n', 'l')]     ## works (best)
> with(x, cbind(n, l)) ## works
> cbind(x$n, x$l)      ## works (worst)
于 2013-10-23T21:58:29.853 回答
2

仅供参考。我是R新手,今天遇到了类似的问题...

我的代码:

hosmerlem(y = MM_LOGIT$sick_or_not, yhat = compatible(MM_LOGIT)) model.frame.default(formula = cbind(1 - y, y) ~ cutyhat) 中的错误:可变长度不同(为“cutyhat”找到)

我必须更改 y= 位以指向我的数据名称,而不是逻辑/ glm 输出...

hosmerlem(y=MYDATA$sick_or_not, yhat=fitted(MM_LOGIT))

$chisq
[1] 20.24864

$p.value
[1] 0.0003960473
于 2013-12-04T11:48:01.200 回答