这可能是一个简单的编码问题,但我不能为我的生活得到它。 使用此代码进行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
是一个问题。
答案 0 :(得分:4)
假设你正在使用Hosmer Lemeshow测试的一些实现,它大致类似于Frank Harrell's,
似乎很可能你的错误是一个基本的句法问题:
miss.logit$cbind(Found,Missing)
,
您的$
运算符不够智能,无法将Found
和Missing
作为在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
中的函数,您试图在两个全局n
和l
上进行评估。即使我将cbind
作为x
的元素,n
和l
也需要在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