Re: [问题] Area under curve/line

楼主: koai (可笑的自以为...)   2014-05-08 11:26:38
我猜测你需要自己手动
去调整threshold!!
package中的 thresh argument 似乎起不了作用!!
(或是我没弄懂怎么用... @@")
auc(c(0,30,60),c(145,327,189),thresh=0)
auc(c(0,30,60),c(145,327,189),thresh=145) ## 设定 thresh 没起作用!!
auc(c(0,30,60),c(145,327,189)-145,thresh=0) ## 手动设定 thresh 有作用!!
下面提供参考的程式码:
T=c(0,30,60)
X=matrix(c(145,327,189,188,275,165,100,89,121,201,223,188),nrow=3)
rownames(X) <- paste("T",1:3,sep="")
colnames(X) <- paste("S",1:ncol(X),sep="")
t(X)
AUC = sapply(1:ncol(X),function(k){auc(c(0,30,60),X[,k]-X[1,k],thresh=0)})
AUC
[1] 6120.0000 2337.1717 206.7202 537.4380
##
## 此方法算出来的auc不知道为什么也不精确?
## 不过误差小于 0.1 看你是否可以接受!!
## 以下提供我手动硬刻的验算程式码:
##
AA=c()
for(k in 1:ncol(X)){
if( min(X[,k])==X[1,k] ){
A = ( ( (X[2,]-X[1,])*(T[2]-T[1])+(X[2,]-X[1,]+X[3,]-X[1,] )*(T[2]-T[1]))/2 )[k]
}else{
if( min(X[,k])==X[2,k] ){
A = ( ( T[3]-( -(X[2,]-X[1,])/( (X[3,]-X[2,])/(T[3]-T[2]) )+T[2] ) )*( X[3,]-X[1,] )/2 )[k]
}else{
A = ( ( -(X[2,]-X[1,])/( (X[3,]-X[2,])/(T[3]-T[2]) )+T[2] )*( X[2,]-X[1,] )/2 )[k]
}
}
AA[k]=A
}
AA
[1] 6120.0000 2337.1364 206.7188 537.4286
##
## 比较 AUC 和 AA 参考一下:
##
> AUC
[1] 6120.0000 2337.1717 206.7202 537.4380
> AA
[1] 6120.0000 2337.1364 206.7188 537.4286
> AUC-AA
[1] 9.094947e-13 3.535354e-02 1.482629e-03 9.445100e-03
※ 引述《CKAXI (我不在...)》之铭言:
: [问题类型]:
: 程式咨询(我想用R 做某件事情,但是我不知道要怎么用R 写出来)
:
: [软件熟悉度]:
: 新手(没写过程式,R 是我的第一次)
: [问题叙述]:
: 我在三个时间点做了三次测验,想以第一次测验的结果为基准计算三次测验连线下
: 的面积(若第三次的结果低于第一次的结果,则面积只计算至基准线和二三次结果
: 交界处)
: 我原本想使用"flux"package中的"auc"来计算,但是经过几次测试发现其中
: thresh这个argument好像怪怪的
: http://artax.karlin.mff.cuni.cz/r-help/library/flux/html/auc.html
: 不知道各位有没有其它的方法可以解决原本的问题
: [程式范例]:
: 资料大略会是这样,需要计算每位受试者的area under line
: Subj T1(0) T2(30) T3(60)
: 1 145 327 189
: 2 188 275 165
: ...
: [关键字]:
作者: CKAXI (我不在...)   2014-05-08 19:46:00
感谢koai大!请让我来研究一下您提供的程式码

Links booklink

Contact Us: admin [ a t ] ucptt.com