Hosmer-Lemeshow错误

时间:2013-10-23 21:13:27

标签: r

这可能是一个简单的编码问题,但我不能为我的生活得到它。 使用此代码进行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

我意识到在我的logit模型中使用cbind是一个问题。

2 个答案:

答案 0 :(得分:4)

假设你正在使用Hosmer Lemeshow测试的一些实现,它大致类似于Frank Harrell's

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

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作为x的元素,nl也需要在x中引用。

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

> x[, c('n', 'l')]     ## works (best)
> with(x, cbind(n, l)) ## works
> cbind(x$n, x$l)      ## works (worst)

答案 1 :(得分:2)

其他人的费用。 我是R新手,今天我遇到了类似的问题...

我的代码:

  

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

我不得不将y =位更改为指向我的数据名称,而不是logistic / glm输出......

  

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

$chisq
[1] 20.24864

$p.value
[1] 0.0003960473