2014-04-17 9 views
6

Chciałbym uzyskać optymalny punkt odcięcia ROC w regresji logistycznej jako liczbę, a nie jako dwie krzywe przecinające się. Korzystając z poniższego kodu, mogę uzyskać wykres, który pokaże optymalny punkt, ale w niektórych przypadkach po prostu potrzebuję tego punktu jako liczby, której mogę użyć do innych obliczeń. Oto linie kodu:Jak mogę uzyskać Optymalny punkt odcięcia ROC w regresji logistycznej jako numer

library(Epi) 
ROC(form = IsVIP ~ var1+var2+var3+var4+var5, plot="sp", data=vip_data) 

Dzięki

+0

myślę, że trzeba grać z zwrócony wartości z 'ROC', aby utworzyć równanie/formułę reprezentującą' krzywą1 - krzywą2'. Następnie użyj 'uniroot', aby znaleźć punkt zerowy. Nie znam tego pakietu, więc może być łatwiejszy sposób w pakiecie 'Epi'. –

Odpowiedz

10

Zgodnie z dokumentacją optymalny punkt odcięcia jest zdefiniowany jako punkt, gdzie czułość + Swoistość jest maksymalna (patrz MX argument w ?ROC). Można uzyskać wartości zgodnie następująco (patrz przykład w ?ROC):

x <- rnorm(100) 
z <- rnorm(100) 
w <- rnorm(100) 
tigol <- function(x) 1 - (1 + exp(x))^(-1) 
y <- rbinom(100, 1, tigol(0.3 + 3*x + 5*z + 7*w)) 
rc <- ROC(form = y ~ x + z, plot="sp") 
## optimal combination 
opt <- which.max(rowSums(rc$res[, c("sens", "spec")])) 
## optimal cut-off point 
rc$res$lr.eta[opt] 

Jest to punkt, który zostanie pokazany podczas uruchamiania

ROC(form = y ~ x + z, plot = "ROC", MX = TRUE) 
+0

Dziękuję adibender .. – mql4beginner

+0

nie ma za co! – adibender

Powiązane problemy