如何从R

时间:2018-11-22 08:07:22

标签: r dataframe

我正在尝试获取cp最小的xerror值。我安装了如下所示的模型并打印了cptable。由于列表很长,我只显示了前20行。

>printcp(RT_model)

 Regression tree:
rpart(formula = BW ~ ., data = train, method = "anova", 
control = rpart.control(minsplit = 0, minbucket = 1, cp = -1))

Variables actually used in tree construction:
[1] age      black    boy      cigar    collgrad hsgrad   married  
natal2   natal3   nosmoke  novisit  somecoll wtgain  

Root node error: 5.2267e+10/159689 = 327304

n= 159689 

               CP nsplit rel error  xerror      xstd
1      4.3760e-02      0   1.00000 1.00001 0.0054277
2      1.6392e-02      1   0.95624 0.95661 0.0050844
3      1.1851e-02      2   0.93985 0.94067 0.0049671
4      1.1133e-02      3   0.92800 0.92446 0.0049150
5      1.0735e-02      4   0.91686 0.91709 0.0048956
6      6.1850e-03      5   0.90613 0.90692 0.0048695
7      3.3414e-03      6   0.89994 0.90054 0.0048561
8      2.6481e-03      7   0.89660 0.89680 0.0048502
9      2.4185e-03      8   0.89395 0.89441 0.0048449
10     2.1499e-03      9   0.89154 0.89232 0.0048248
11     2.0960e-03     10   0.88939 0.88993 0.0048055
12     1.3600e-03     11   0.88729 0.88822 0.0048031
13     1.3513e-03     12   0.88593 0.88616 0.0047898
14     1.2209e-03     13   0.88458 0.88600 0.0047862
15     9.2359e-04     14   0.88336 0.88454 0.0047731
16     9.1119e-04     15   0.88243 0.88364 0.0047679
17     7.8948e-04     16   0.88152 0.88300 0.0047662
18     7.4059e-04     17   0.88073 0.88221 0.0047638
19     6.8623e-04     18   0.87999 0.88142 0.0047610
20     6.7196e-04     19   0.87931 0.88077 0.0047620
...
[ erreichte getOption("max.print") --  25545 Zeilen ausgelassen ]

由于值太多:

要获得带有cp的{​​{1}},请使用以下代码:

xerror

minCP <- RT_model$cptable[which.min(RT_model$cptable[,"xerror"]), "CP"] 中相应的xerror等于:minCP

现在,我要应用一个称为“最小误差+标准偏差”的规则

相应的0.8690961 xerror的标准偏差等于minCP

我需要表的最大值等于或小于称为xerror_new(0.004700524 xstd)的新xerror。因此,我需要cptable的0.8690961 xerror + 0.004700524 xstd = 0.8737966列的最大值,该最大值小于或等于0.8737966

如何获取cptable的xerror值,该值的xerror小于或等于cp的值0.8737966?

我尝试了以下操作,但失败了。

xerror_new

这给了我表格中最小的 min_xerror <- RT_model$cptable[which.min(RT_model$cptable[,"xerror"]), "xerror"] 。以下内容为我提供了相应的最小xerror

xstd

在这里我应用“最小误差+标准差”规则:

   min_xstd <- RT_model$cptable[which.min(RT_model$cptable[,"xerror"]), "xstd"]

到目前为止,我已经有了价值观,一切都很好。我从这里开始奋斗:

  xerror_new <- min_xerror + min_xstd

或者我尝试过:

  xerror_plus_xstd <- RT_model$cptable[which.max(RT_model$cptable["xerror"<= 
  min_xerror_xstd] & RT_model$cptable["xerror" >= min_xerror]), "xerror"]

两者均未产生结果。

如何获得此值?谢谢。

0 个答案:

没有答案