我可能已经发现了一些类型的错误polr
的功能(序/多分回归)MASS
库R
。问题似乎与coef()
在summary
对象上的使用有关,但可能与问题无关。
该问题发生在以下类型的函数中:
pol_me <- function(d){
some_x <- d[,1]
mod <- polr(some_x ~ d[,2])
pol_sum <- summary(mod)
return(pol_sum)
}
为了说明,我模拟了序数回归模型的一些数据。
set.seed(2016)
n=1000
x1 <- rnorm(n)
x2 <- 2*x1 +rnorm(n)
make_ord <- function(y){
y_ord <- y
y_ord[y < (-1)] <- 1
y_ord[y >= (-1) & y <= (1)] <- 2
y_ord[y >= 1] <- 3
y_ord <- as.factor(y_ord)
}
x1 <- make_ord(x1)
dat <- data.frame(x1,x2)
现在,当我们调用函数时:
library(MASS)
pol_me(d = dat)
我们得到错误
Error in eval(expr, envir, enclos) : object 'some_x' not found
我认为这在逻辑上不应该在这一点上发生。实际上,当我们定义替代函数时,其中模型命令由lm
数值因变量上的线性模型代替,即
mod <- lm(as.numeric(some_x) ~ d[,2])
生成的函数工作正常。
这真的是代码中的错误或编程问题,如何pol_me
运行?
summary(polr(dat[,1] ~ dat[,2]))
返回半错误消息Re-fitting to get Hessian
,这是错误的原因。polr
的论点Hess = T
将解决您的问题。(?polr
说:Hess:确定是否应返回Hessian(观察到的信息矩阵)的逻辑。如果您打算在合适的情况下调用summary或vcov,请使用此方法。)
pol_me <- function(d){
some_x <- d[,1]
mod <- polr(some_x ~ d[,2], Hess = T) # modify
pol_sum <- summary(mod)
return(pol_sum)
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句