我正在尝试获取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"]
两者均未产生结果。
如何获得此值?谢谢。