代码之家  ›  专栏  ›  技术社区  ›  Indrajeet Patil

稳健回归不起作用-“找不到对象'msg.ucv'

  •  1
  • Indrajeet Patil  · 技术社区  · 7 年前

    我尝试使用 robust 打包 R . 但它不起作用,而且失败的原因是一个相当神秘的错误。

    以下是重现此分析的设置详细信息和数据-

    # setup
    set.seed(123)
    library(tidyverse)
    library(robust)
    #> Loading required package: fit.models
    
    # data
    df <- structure(list(value = c(0.833333333333333, 0, 0, 0, 0, 0.166666666666667, 
                             0.166666666666667, 0, 0, 0.166666666666667, 0, 0, 0, 0.333333333333333, 
                             0.333333333333333, 0, 0, 0, 0.5, 0, 0, 0.166666666666667, 0, 
                             0, 0.166666666666667, 0, 0, 0, 0, 0.166666666666667, 0, 0, 0.5, 
                             0.166666666666667, 0, 0, 0, 0.333333333333333, 0, 0.5, 0.333333333333333, 
                             0.5, 0, 0.166666666666667, 0.333333333333333, 0.166666666666667, 
                             0, 0, 0.166666666666667, 0, 0.833333333333333, 0, 0, 0.333333333333333, 
                             0, 0, 0.166666666666667, 0, 0.166666666666667, 0.5, 0, 0, 0, 
                             0.166666666666667, 0, 0, 0.166666666666667, 0.166666666666667, 
                             0, 0, 0, 0, 0, 0, 0, 0, 0.166666666666667, 0.166666666666667, 
                             0.166666666666667, 0.666666666666667, 0, 0, 0, 0.166666666666667, 
                             0.166666666666667, 0, 0.166666666666667, 0, 0, 0, 0.166666666666667, 
                             0, 0, 0, 0.166666666666667, 0, 0.333333333333333, 0.166666666666667, 
                             0.166666666666667, 0, 0.166666666666667, 0.166666666666667, 0, 
                             0, 0, 0, 0, 0.166666666666667, 0.166666666666667, 0, 0, 0, 0.333333333333333, 
                             0, 0, 0, 0, 0.333333333333333, 0, 0, 0, 0.166666666666667, 0.166666666666667, 
                             0.166666666666667, 0.166666666666667, 0, 0.166666666666667, 0.166666666666667, 
                             0.166666666666667, 0.166666666666667, 0, 0.666666666666667, 0.333333333333333, 
                             0.166666666666667, 0, 0.166666666666667, 0.333333333333333, 0.333333333333333, 
                             0, 0.166666666666667, 0, 0.166666666666667, 0.333333333333333, 
                             0.333333333333333, 0, 0.166666666666667, 0.166666666666667, 0.666666666666667, 
                             0.5, 0, 0, 0, 0, 0.666666666666667, 0.166666666666667, 0, 0.333333333333333, 
                             0.166666666666667), parameter = c(-0.26053156261281, 0.294881565797054, 
                                                               0.294881565797054, -0.260531562612809, -1.37135781943254, 0.294881565797054, 
                                                               0.850294694206917, -1.37135781943254, -0.260531562612809, -1.37135781943254, 
                                                               -0.26053156261281, 1.40570782261678, -0.26053156261281, 0.850294694206917, 
                                                               1.96112095102664, -0.260531562612809, -1.9267709478424, 0.850294694206917, 
                                                               1.40570782261678, 0.850294694206917, -1.37135781943254, -0.26053156261281, 
                                                               0.294881565797054, -2.48218407625226, 0.850294694206917, 1.40570782261678, 
                                                               -0.260531562612809, 0.294881565797053, 0.294881565797054, -0.260531562612809, 
                                                               -0.260531562612809, -1.37135781943254, 0.294881565797054, 0.294881565797054, 
                                                               0.294881565797054, 0.850294694206917, 1.96112095102664, 0.850294694206917, 
                                                               0.294881565797054, 0.294881565797054, -0.815944691022672, 0.294881565797054, 
                                                               0.850294694206917, -0.260531562612809, 0.850294694206917, -1.37135781943254, 
                                                               -1.37135781943254, -0.815944691022673, -1.37135781943254, -1.9267709478424, 
                                                               1.40570782261678, -1.37135781943254, 0.294881565797054, -0.815944691022673, 
                                                               0.850294694206917, 0.850294694206917, -0.260531562612809, 0.850294694206917, 
                                                               -0.26053156261281, 0.850294694206917, -1.37135781943254, -1.9267709478424, 
                                                               1.40570782261678, 1.96112095102664, 0.850294694206917, -0.815944691022672, 
                                                               -0.260531562612809, 0.850294694206917, 0.850294694206917, -0.815944691022673, 
                                                               0.294881565797053, -0.260531562612809, -0.260531562612809, -1.9267709478424, 
                                                               -0.815944691022673, -1.9267709478424, -1.9267709478424, 0.294881565797054, 
                                                               0.294881565797054, -1.9267709478424, 0.850294694206917, 0.850294694206917, 
                                                               -0.815944691022672, -0.815944691022672, -1.9267709478424, 1.40570782261678, 
                                                               -0.815944691022673, 0.294881565797054, 0.850294694206917, -1.37135781943254, 
                                                               0.850294694206917, 0.294881565797054, -0.260531562612809, -1.9267709478424, 
                                                               1.40570782261678, -0.815944691022673, -0.260531562612809, 1.40570782261678, 
                                                               0.294881565797054, 1.40570782261678, -0.815944691022672, -0.815944691022673, 
                                                               -0.815944691022673, 0.850294694206917, -1.37135781943254, 0.294881565797054, 
                                                               1.96112095102664, -0.260531562612809, -0.26053156261281, 0.294881565797054, 
                                                               0.850294694206917, 0.850294694206917, -0.260531562612809, 0.294881565797054, 
                                                               1.96112095102664, -0.260531562612809, 1.40570782261678, 1.96112095102664, 
                                                               -0.815944691022672, 0.294881565797054, -0.815944691022672, -0.815944691022672, 
                                                               -0.815944691022673, 0.850294694206917, -1.9267709478424, -1.37135781943254, 
                                                               -1.37135781943254, -0.815944691022672, 1.96112095102664, 0.850294694206917, 
                                                               -0.26053156261281, -0.815944691022672, 0.850294694206917, 0.294881565797054, 
                                                               0.294881565797053, -0.815944691022672, 0.850294694206917, -0.815944691022673, 
                                                               1.40570782261678, 1.96112095102664, -0.815944691022673, 0.294881565797054, 
                                                               0.850294694206917, -0.260531562612809, 0.294881565797054, 1.40570782261678, 
                                                               0.850294694206917, 1.96112095102664, -0.260531562612809, 2.51653407943651, 
                                                               0.294881565797054, 0.294881565797054, 0.294881565797053, -0.815944691022672, 
                                                               -1.37135781943254, -1.37135781943254, -1.37135781943254, 0.294881565797054
                             )), row.names = c(NA, -158L), class = c("tbl_df", "tbl", "data.frame"
                             ))
    

    这正是我所得到的错误-

    # running robust linear model
    # using robust
    robust::lmRob(
      data = df,
      formula = value ~ parameter,
      control = robust::lmRob.control(
        tlo = 1e-100,
        tua = 1.5e-100,
        tl = 1e-100,
        mxr = 10000,
        mxf = 10000,
        mxs = 10000,
        final.alg = "Adaptive"
      ),
      nrep = 100000
    )
    #> Error in paste(msg.UCV, " when refining initial estimates."): object 'msg.UCV' not found
    

    另一方面,如果我使用 robustbase 包裹,它给了我一个可能的原因-

    # using robustbase
    robustbase::lmrob(data = df,
                      formula = value ~ parameter,
                      method = "MM")
    #> Warning in lmrob.S(x, y, control = control): S-estimated scale == 0:
    #> Probably exact fit; check your data
    #> 
    #> Call:
    #> robustbase::lmrob(formula = value ~ parameter, data = df, method = "MM")
    #> 
    #> Exact fit detected
    #> 
    #> Coefficients:
    #> (Intercept)    parameter  
    #>           0            0
    

    所以我想知道是否有任何方法可以同样地得到 robust::lmRob 使用我拥有的数据。

    这是因为我在一个分组变量的所有级别上运行相同的分析,而函数只在一个级别上失败,因此整个分析都失败了。我更喜欢更安全的方法。

    1 回复  |  直到 7 年前
        1
  •  1
  •   Julius Vainora    7 年前

    here msg.UCV

    msg.UCV <- "A WORKAROUND"
    
    robust::lmRob(
      data = df,
      formula = value ~ parameter,
      control = robust::lmRob.control(
        tlo = 1e-100,
        tua = 1.5e-100,
        tl = 1e-100,
        mxr = 10000,
        mxf = 10000,
        mxs = 10000,
        final.alg = "Adaptive"
      ),
      nrep = 100000
    )
    # Call:
    # robust::lmRob(formula = value ~ parameter, data = df, nrep = 1e+05, 
    #     control = robust::lmRob.control(tlo = 1e-100, tua = 1.5e-100, 
    #         tl = 1e-100, mxr = 10000, mxf = 10000, mxs = 10000, final.alg = "Adaptive"))
    # 
    # Coefficients:
    # (Intercept)    parameter  
    #           0            0  
    #
    # Warning message:
    # In lmRob.fit.compute(x, y, x1.idx = x1.idx, nrep = nrep, robust.control =  robust.control,  :
    #   A WORKAROUND  when refining initial estimates.
    
    推荐文章