由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Statistics版 - 问一个关于R 的问题
相关主题
什么是Error in forecast(A, h = 4, level = 95) : unused argument (level = 95)?急需帮助,关于比较ROC的问题。
How to fit a smoothed line in R?报两个offer-updated-附面试心得 (转载)
[R] ROC curve怎么指定cutoffs?哪位用R做过CART MODEL
How to compute the area between my curve and diagonal lineordered label in ROCR
再一次请教apply function 在R中的应用这段R logistic regression code有没有问题?
请问诸位高手:lattice比一般的画图plot之类关于基因作为predictive biomarker的统计问题请教
proc logistic: how to build 2 X 2 classification table包子求助Survival问题,很菜,请大家包涵
想问一个关于评价prediction performance的问题ks 只有28%
相关话题的讨论汇总
话题: newlist话题: pred话题: modelscore话题: auc话题: newdata
进入Statistics版参与讨论
1 (共1页)
f*******n
发帖数: 2665
1
我在SAS里可以写这样一个macro, modelscore(model, outputscore)用来评价不同的
model,然后调用,%modelscore(model1, outputscore1),%modelscore(model2,
outputscore2)。但不知在R里怎么做.
这里model 就是一个之前modeling产生的object, 比如model1<-glm(...),
outputscore其实包含若干的统计值,比如AUC,KS等。但如何产生outputscore1和
outputscore2这些objects, 并save到global environment?
v*******e
发帖数: 11604
2
R里面用function。
modelscore = function(model){
花括号里面写function的内容
在这里产生KS, AUC之类的东西,可以返回成一个list,
这样的:return(list(KS,AUC))
}
使用是这样的:
outputscore1 = modelscore(你的第一个model)
outputscore2 = modelscore(你的第二个model)
f*******n
发帖数: 2665
3
多谢!!!下面是我写的function, output 是一个list,包含两项,一个是AUC,另
一个是pred, 是prediction()的结果。 function和output 都没有问题。可是我需要
用plot(performance(pred,...)),而pred是list,类型不符,这个问题如何解决?请
赐教!
modelscore<- function(model) {
pr <- predict(rpart, newdata=newdata[ , c(input, target)])[,2]
# ignore missing target values.
no.miss <- na.omit(newdata[ , c(input, target)]$goodbad)
miss.list <- attr(no.miss, "na.action")
attributes(no.miss) <- NULL
if (length(miss.list)) {
pred <- prediction(pr[-miss.list], no.miss)
} else {
pred <- prediction(pr, no.miss)
}
auc<-performance(pred,'auc')@y.values[[1]]
return (list(pred,auc))
}
newlist<- modelscore(rpart)
#plot(performance(newlist[1], "tpr", "fpr"), col="#CC0000FF", lty=1, add=
FALSE)
f*******n
发帖数: 2665
4
我刚开始学R,知道的class也就有dataframe, list之类的,下面的pred(pred <-
prediction())是什么class类型?
> class(pred)
[1] "prediction"
attr(,"package")
[1] "ROCR"
C***i
发帖数: 486
5
能把你的详细的CODE 贴出来么,包括错误。 你也可以在STACK OVERFLOW问然后贴个链
接过来
f*******n
发帖数: 2665
6
这是程序和错误信息,多谢!
> modelscore<- function(model, newdata) {
+ pr <- predict(rpart, newdata=newdata[ , c(input, target)])[,2]
+ # ignore missing target values.
+ no.miss <- na.omit(newdata[ , c(input, target)]$goodbad)
+ miss.list <- attr(no.miss, "na.action")
+ attributes(no.miss) <- NULL
+ if (length(miss.list)) {
+ pred <- prediction(pr[-miss.list], no.miss)
+ } else {
+ pred <- prediction(pr, no.miss)
+ }
+
+ auc<-performance(pred,'auc')@y.values[[1]]
+
+ newlist<-list(pred,auc)
+ return (newlist)
+ }
>
> newlist<- modelscore(rpart,newdata)
> newlist[2] #AUC
[[1]]
[1] 0.8712905
> plot(performance(newlist[1], "tpr", "fpr"), col="#CC0000FF", lty=1, add=
FALSE)
Error in plot(performance(newlist[1], "tpr", "fpr"), col = "#CC0000FF", :
error in evaluating the argument 'x' in selecting a method for function '
plot': Error in performance(newlist[1], "tpr", "fpr") :
Wrong argument types: First argument must be of type 'prediction'; second
and optional third argument must be available performance measures!
>
C***i
发帖数: 486
7
你的CODE 不可重复啊
performance(newlist[1], "tpr", "fpr")
猜是第一个ARGUMENT,newlist[1]这里。FUNCTION需要prediction类的, 你没有INDEX
对,试试newlist[[1]]
f*******n
发帖数: 2665
8
这正是我的问题,我的FUNCTION给出的结果是list,performance需要prediction类的
, 怎么解决这个问题呢?

INDEX

【在 C***i 的大作中提到】
: 你的CODE 不可重复啊
: performance(newlist[1], "tpr", "fpr")
: 猜是第一个ARGUMENT,newlist[1]这里。FUNCTION需要prediction类的, 你没有INDEX
: 对,试试newlist[[1]]

v*******e
发帖数: 11604
9
plot(performance(newlist[[1]], "tpr", "fpr"),注意是double方括号
c*****1
发帖数: 115
10
楼主,我觉得你FUNCTION里问题很多,比如说rpart并不是定义的argument,要改成
model;再有,c(input, target)是不是要写成c(“input”, “target”);goodbad从
何而来;等等。
我建议你先不要用FUNCTION,试着将程序跑顺了再用。
如果你想知道predict给出哪些结果,用str(),如果有需要可以强制用list()改成list
格式。
C***i
发帖数: 486
11

list
要实在还不WORK的话,可以把你的全部程序贴出来,给点数据,要不然没法帮你DEBUG


【在 c*****1 的大作中提到】
: 楼主,我觉得你FUNCTION里问题很多,比如说rpart并不是定义的argument,要改成
: model;再有,c(input, target)是不是要写成c(“input”, “target”);goodbad从
: 何而来;等等。
: 我建议你先不要用FUNCTION,试着将程序跑顺了再用。
: 如果你想知道predict给出哪些结果,用str(),如果有需要可以强制用list()改成list
: 格式。

f*******n
发帖数: 2665
12
改称newlist[[1]]就行了。多谢!!!

INDEX

【在 C***i 的大作中提到】
: 你的CODE 不可重复啊
: performance(newlist[1], "tpr", "fpr")
: 猜是第一个ARGUMENT,newlist[1]这里。FUNCTION需要prediction类的, 你没有INDEX
: 对,试试newlist[[1]]

f*******n
发帖数: 2665
13
多谢!!!

【在 v*******e 的大作中提到】
: plot(performance(newlist[[1]], "tpr", "fpr"),注意是double方括号
f*******n
发帖数: 2665
14
你说得对,我没有贴全部的code,input和target都是之前定义过的list。多谢指点,我
以后试试str()。

list

【在 c*****1 的大作中提到】
: 楼主,我觉得你FUNCTION里问题很多,比如说rpart并不是定义的argument,要改成
: model;再有,c(input, target)是不是要写成c(“input”, “target”);goodbad从
: 何而来;等等。
: 我建议你先不要用FUNCTION,试着将程序跑顺了再用。
: 如果你想知道predict给出哪些结果,用str(),如果有需要可以强制用list()改成list
: 格式。

1 (共1页)
进入Statistics版参与讨论
相关主题
ks 只有28%再一次请教apply function 在R中的应用
建模型,最后一步发现classification table不均匀,和解 ?请问诸位高手:lattice比一般的画图plot之类
Predict values of vectors generated by black box functionsproc logistic: how to build 2 X 2 classification table
R: how to refer function arguments within function?想问一个关于评价prediction performance的问题
什么是Error in forecast(A, h = 4, level = 95) : unused argument (level = 95)?急需帮助,关于比较ROC的问题。
How to fit a smoothed line in R?报两个offer-updated-附面试心得 (转载)
[R] ROC curve怎么指定cutoffs?哪位用R做过CART MODEL
How to compute the area between my curve and diagonal lineordered label in ROCR
相关话题的讨论汇总
话题: newlist话题: pred话题: modelscore话题: auc话题: newdata