I am running my code in a loop and it does not work but when I run it outside the loop I get the values I want. n <- 1000; # Sample size fitglm <- function(sigma,tau){ x <- rnorm(n,0,sigma) intercept <- 0 beta <- 0 ystar <- intercept+beta*x z <- rbinom(n,1,plogis(ystar)) xerr <- x + rnorm(n,0,tau) model<-glm(z ~ xerr, family=binomial(logit)) int<-coef(model)[1] slope<-coef(model)[2] pred<-predict(model) result<-ifelse(pred>.5,1,0) accuracy<-length(which(result==z))/length(z) accuracy rocpreds<-prediction(result,z) auc<-performance(rocpreds,"auc")@y.values sentiv<-performance(rocpreds,"sens")@y.values sentiv<-slot(fp,"y.values")[[1]] sentiv<-sentiv[2] sentiv specs<-performance(rocpreds,"spec")@y.values specs<-slot(fp2,"y.values")[[1]] specs<-specs[2] specs output<-c(int,slope,.5,accuracy,auc,sentiv,specs) names(output)<-c("Intercept","Slope","CutPoint","Accuracy","AUC","Sentivity",Specificity") return(output) } y<-fitglm(.05,1) y The code runs without the sentiv and specs but when I remove the loop i can get the sensitivity and spec. values ??? [[alternative HTML version deleted]]
Berend Hasselman
2012-Oct-25 19:43 UTC
[R] How to extract auc, specificity and sensitivity
On 25-10-2012, at 21:28, Adel Powell wrote:> I am running my code in a loop and it does not work but when I run it > outside the loop I get the values I want. > > n <- 1000; # Sample size > > fitglm <- function(sigma,tau){ > x <- rnorm(n,0,sigma) > intercept <- 0 > beta <- 0 > ystar <- intercept+beta*x > z <- rbinom(n,1,plogis(ystar)) > xerr <- x + rnorm(n,0,tau) > model<-glm(z ~ xerr, family=binomial(logit)) > int<-coef(model)[1] > slope<-coef(model)[2] > pred<-predict(model) > > result<-ifelse(pred>.5,1,0) > > accuracy<-length(which(result==z))/length(z) > accuracy > > rocpreds<-prediction(result,z) > auc<-performance(rocpreds,"auc")@y.values > sentiv<-performance(rocpreds,"sens")@y.values > sentiv<-slot(fp,"y.values")[[1]] > sentiv<-sentiv[2] > sentiv > specs<-performance(rocpreds,"spec")@y.values > specs<-slot(fp2,"y.values")[[1]] > specs<-specs[2] > specs > output<-c(int,slope,.5,accuracy,auc,sentiv,specs) > > names(output)<-c("Intercept","Slope","CutPoint","Accuracy","AUC","Sentivity",Specificity")A missing " before Specificity?> return(output) > > } > > y<-fitglm(.05,1) > y >Running this after correction of the missing " one gets en error Error in fitglm(0.05, 1) : could not find function "prediction" How are you using a loop? Your example is not reproducible. Berend> > The code runs without the sentiv and specs but when I remove the loop i can > get the sensitivity and spec. values ??? > > [[alternative HTML version deleted]] > > ______________________________________________ > R-help at r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide http://www.R-project.org/posting-guide.html > and provide commented, minimal, self-contained, reproducible code.
Berend Hasselman
2012-Oct-25 20:05 UTC
[R] How to extract auc, specificity and sensitivity
Your code is still not runnable. It gives the error message Error in fitglm(0.05, 1) : could not find function "prediction" Berend On 25-10-2012, at 21:55, Adel Powell wrote:> I think I have corrected it. Can you tell me are my spec and sens values correct > n <- 1000; # Sample size > > fitglm <- function(sigma,tau){ > x <- rnorm(n,0,sigma) > intercept <- 0 > beta <- 0 > ystar <- intercept+beta*x > z <- rbinom(n,1,plogis(ystar)) > xerr <- x + rnorm(n,0,tau) > model<-glm(z ~ xerr, family=binomial(logit)) > int<-coef(model)[1] > slope<-coef(model)[2] > pred<-predict(model) > > result<-ifelse(pred>.5,1,0) > > accuracy<-length(which(result==z))/length(z) > accuracy > > rocpreds<-prediction(result,z) > auc<-performance(rocpreds,"auc")@y.values > fp<-performance(rocpreds,"sens") > sentiv<-slot(fp,"y.values")[[1]] > sentiv<-sentiv[2] > sentiv > fp2<-performance(rocpreds,"spec") > specs<-slot(fp2,"y.values")[[1]] > specs<-specs[2] > specs > output<-c(int,slope,.5,accuracy,auc,sentiv,specs) > names(output)<-c("Intercept","Slope","CutPoint","Accuracy","AUC","Sentivity","Specificity") > return(output) > > } > > y<-fitglm(.05,1) > y > > > On Thu, Oct 25, 2012 at 3:43 PM, Berend Hasselman <bhh at xs4all.nl> wrote: > > On 25-10-2012, at 21:28, Adel Powell wrote: > > > I am running my code in a loop and it does not work but when I run it > > outside the loop I get the values I want. > > > > n <- 1000; # Sample size > > > > fitglm <- function(sigma,tau){ > > x <- rnorm(n,0,sigma) > > intercept <- 0 > > beta <- 0 > > ystar <- intercept+beta*x > > z <- rbinom(n,1,plogis(ystar)) > > xerr <- x + rnorm(n,0,tau) > > model<-glm(z ~ xerr, family=binomial(logit)) > > int<-coef(model)[1] > > slope<-coef(model)[2] > > pred<-predict(model) > > > > result<-ifelse(pred>.5,1,0) > > > > accuracy<-length(which(result==z))/length(z) > > accuracy > > > > rocpreds<-prediction(result,z) > > auc<-performance(rocpreds,"auc")@y.values > > sentiv<-performance(rocpreds,"sens")@y.values > > sentiv<-slot(fp,"y.values")[[1]] > > sentiv<-sentiv[2] > > sentiv > > specs<-performance(rocpreds,"spec")@y.values > > specs<-slot(fp2,"y.values")[[1]] > > specs<-specs[2] > > specs > > output<-c(int,slope,.5,accuracy,auc,sentiv,specs) > > > > names(output)<-c("Intercept","Slope","CutPoint","Accuracy","AUC","Sentivity",Specificity") > > A missing " before Specificity? > > > return(output) > > > > } > > > > y<-fitglm(.05,1) > > y > > > > Running this after correction of the missing " one gets en error > > Error in fitglm(0.05, 1) : could not find function "prediction" > > How are you using a loop? > Your example is not reproducible. > > Berend > > > > > > The code runs without the sentiv and specs but when I remove the loop i can > > get the sensitivity and spec. values ??? > > > > [[alternative HTML version deleted]] > > > > ______________________________________________ > > R-help at r-project.org mailing list > > https://stat.ethz.ch/mailman/listinfo/r-help > > PLEASE do read the posting guide http://www.R-project.org/posting-guide.html > > and provide commented, minimal, self-contained, reproducible code. > >