r - 从函数环境运行时,R 的 `polr` 函数是否存在潜在错误?

标签 r function debugging regression

我可能发现了 RMASS 库的某种错误 polr 函数(序数/多项回归)。该问题似乎与 summary 对象上使用 coef() 有关,但也可能不是。

问题发生在以下类型的函数中:

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])) 返回半错误消息 重新拟合以获得 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)
}

关于r - 从函数环境运行时,R 的 `polr` 函数是否存在潜在错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39151409/

相关文章:

r - 将多个文件合并到一张大数据表中。文件中的列名称不匹配

R图: How to use mtext to get top-aligned vertical label with las=1

php - 在 PHP 中为完整路径设置 chmod

android - 如何使用 cordova 命令行为 android 创建不可调试的发布版本

java - 为什么堆栈跟踪会指向 Java 中的右大括号?

r - isSymmetric 为 R 3.2.2 中的对称矩阵返回 FALSE

r - 在向量的每个元素周围加上引号,并用逗号分隔

javascript - 在标记弹出窗口上显示自定义内容的功能

c - 迭代c中通过引用传递的数组

c - 如何检索当前正在运行的函数堆栈的堆栈跟踪?