【问题标题】:rpart package median or geometric mean instead of meanrpart 包中位数或几何平均值而不是平均值
【发布时间】:2015-07-23 14:27:56
【问题描述】:

是否可以使用R 中的rpart 库将区域中的平均估计值更改为不同于平均值的值,例如中值或几何平均值? (或其他图书馆)

我相信我的树分区受极值影响很大,我想构建显示其他估算器的树。

谢谢!

【问题讨论】:

    标签: r median rpart


    【解决方案1】:

    右偏响应的常用技巧之一是记录日志。在许多应用中,这使得响应分布更加对称,因此您无需切换通常的均值预测。

    改变树学习的另一个解决方案是使用一些更稳健的分数,例如排名等。partykit 中的ctree() 函数为此提供了一个非参数推理框架。

    最后,partykit 包还允许计算除所有终端节点的平均值之外的其他预测。您可以通过as.party() 轻松地将rpart 树转换为party 树。一个非常简单的例子是为cars 数据学习rpart

    library("rpart")
    data("cars", package = "datasets")
    rp <- rpart(dist ~ speed, data = cars)
    

    然后将其转换为party

    library("partykit")
    pr <- as.party(rp)
    

    树形结构保持不变,但您可以得到增强的绘图和预测。默认绘图方法产量:

    此外,两个对象的默认预测是相同的。

    nd <- data.frame(speed = c(10, 15, 20))
    predict(rp, nd)
    ##        1        2        3 
    ## 18.20000 39.75000 65.26316 
    predict(pr, nd)
    ##        1        2        3 
    ## 18.20000 39.75000 65.26316 
    

    但是,后者允许您指定应在每个节点中使用的FUNction。这必须是function(y, w) 的形式,其中y 是响应,w 是案例权重。由于我们在这里没有使用任何权重,我们可以简单地忽略该参数并执行以下操作:

    predict(pr, nd, FUN = function(y, w) mean(y))
    ##        1        2        3 
    ## 18.20000 39.75000 65.26316 
    predict(pr, nd, FUN = function(y, w) median(y))
    ##  1  2  3 
    ## 18 35 64 
    predict(pr, nd, FUN = function(y, w) quantile(y, 0.9))
    ##    1    2    3 
    ## 28.0 57.0 92.2 
    

    等等...有关更多详细信息,请参阅包小插曲。

    【讨论】:

      猜你喜欢
      • 2020-03-07
      • 2021-03-16
      • 1970-01-01
      • 1970-01-01
      • 2016-08-01
      • 1970-01-01
      • 2020-09-20
      • 1970-01-01
      • 2013-01-14
      相关资源
      最近更新 更多