You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R语言Benchmarking包运行dea模型报一元运算符参数无效错误如何解决

DEA模型报错解决方案

针对Error in -XREF[, h] : invalid argument to unary operator报错,可按以下顺序排查解决:

  • 排查1:校验输入输出矩阵的数值类型与缺失值
    该报错最常见诱因是输入输出矩阵中存在非数值类型数据或缺失值,运行以下代码校验:
    # 检查各列数据类型
    sapply(x, class)
    sapply(y, class)
    # 检查缺失值数量
    sum(is.na(x))
    sum(is.na(y))
    
    如存在缺失值,可直接剔除含缺失值的样本:
    valid_idx <- complete.cases(x, y)
    x <- x[valid_idx, ]
    y <- as.matrix(y[valid_idx, ])
    
  • 排查2:确认决策单元数量与变量数量的匹配关系
    DEA模型要求决策单元(即数据行)数量至少大于输入+输出变量的总数量,最优为变量总数的3倍以上,避免线性规划求解时矩阵奇异。运行以下代码校验数量:
    # 决策单元数量
    nrow(x)
    # 输入+输出变量总数量
    ncol(x) + ncol(y)
    
    如变量过多,可结合研究场景筛选核心输入输出指标,削减冗余变量。
  • 排查3:校验输入输出矩阵的有效性
    确保矩阵中无全列取值相同的无差异变量、无负数值/零值:
    • 如存在无差异变量直接删除对应列即可
    • 如存在零值/负值,可给全矩阵添加极小常数做偏移:
      x <- x + 1e-5
      y <- y + 1e-5
      
  • 调整后完整运行代码参考
    # 加载依赖包与数据
    library(Benchmarking)
    IES<-read.csv("_INPUTS & OUTPUTS.csv", sep=";", stringsAsFactors = FALSE)
    
    # 构造输入输出矩阵
    x <- as.matrix(with(IES, cbind(STUDENTS, FACULTY, AGE, PHD, MA, PRES, FTE, FTNE, PART, HOUR, TEC, TEC_SUP, TEC_SPEC, TEC_MA, TEC_PHD, PORTAL_CAPES, VIRT_JOURNAL, VIRT_BOOK, VL_DESPESA_PESSOAL_DOCENTE, VL_DESPESA_PESSOAL_TECNICO, VL_DESPESA_PESSOAL_ENCARGO, VL_DESPESA_CUSTEIO, VL_DESPESA_INVESTIMENTO, VL_DESPESA_PESQUISA, VL_DESPESA_OUTRA)))
    y <- as.matrix(IES$ST_COMPLETING)
    
    # 数据清洗
    valid_idx <- complete.cases(x, y)
    x <- x[valid_idx, ]
    y <- as.matrix(y[valid_idx, ])
    x <- x + 1e-5
    y <- y + 1e-5
    
    # 运行DEA模型
    dea(x,y, RTS="vrs", ORIENTATION="out")
    

内容的提问来源于stack exchange,提问作者João Augusto Freire

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 13:18:04