Dear Michael,
I found some of the errors, but others I wasn’t able to. And my huge huge problem concerns OR and OR confidence interval :( New Corrected code: casedata <-read.spss("tas_05112008.sav") tas.data<-data.frame(casedata) #Delete patients that were not discharged tas.data <- tas.data[ tas.data$hosp!="si ",] tas.data$resultado.hosp <- ifelse(tas.data$hosp=="l", 0, 1) tas.data$tas_d2 <- log(ifelse(tas.data$tas_d2==88888|tas.data$tas_d2==99999, NA, tas.data$tas_d2)) tas.data$tas_d3 <- log(ifelse(tas.data$tas_d3==88888|tas.data$tas_d3==99999, NA, tas.data$tas_d3)) tas.data$tas_d4 <- log(ifelse(tas.data$tas_d4==88888|tas.data$tas_d4==99999, NA, tas.data$tas_d4)) tas.data$tas_d5 <- log(ifelse(tas.data$tas_d5==88888|tas.data$tas_d5==99999, NA, tas.data$tas_d5)) tas.data$tas_d6 <- log(ifelse(tas.data$tas_d6==88888|tas.data$tas_d6==99999, NA, tas.data$tas_d6)) tas.data$age <- ifelse(tas.data$age==88888|tas.data$age==99999, NA, tas.data$age) tas.data <- data.frame(tas1 = tas.data$tas_d2, tas2 = tas.data$tas_d3, tas3 = tas.data$tas_d4, tas4 = tas.data$tas_d5, tas5 = tas.data$tas_d6, age = tas.data$age, discharge = tas.data$resultado.hosp, id.pat=tas.data$id) # tas.data$discharge <- factor( tas.data$discharge , levels=c(0,1), labels = c("dead", "alive")) #select only cases that have more than 3 tas tas.data <- tas.data[apply(tas.data[,-8:-6], 1, function(x) sum(!is.na(x)))>2,] nsample <- n.obs <- dim(tas.data)[1] #nr of patients with more than 2 tas measurements tas.data.long <- data.frame( tas=c(unlist(tas.data[,-8:-6])), time=rep(c(0:4), each=n.obs), age=rep(tas.data$age, 5), discharge=rep(tas.data$discharge, 5), id=rep(c(1:n.obs), 5)) tas.data.long <- tas.data.long [order(tas.data.long$id),] age=tas.data$age ################################################################################################## #PLOT EMPIRICAL MEANS OF CRP FOR ALIVE DEATh ################################################################################################## mean.alive <- apply(tas.data[tas.data$discharge==0, -8:-6], 2, mean, na.rm=T) mean.dead <- apply(tas.data[tas.data$discharge==1, -8:-6], 2, mean, na.rm=T) stderr <- function(x) sqrt(var(x,na.rm=TRUE)/length(na.omit(x))) se.alive <- apply(tas.data[tas.data$discharge==0, -8:-6], 2, stderr) se.dead <- apply(tas.data[tas.data$discharge==1, -8:-6], 2, stderr) summarytas <- data.frame (media = c(mean.dead, mean.alive), standarderror = c( se.dead, se.alive), discharge = c(rep("dead",5), rep("alive", 5))) ggplot(summarytas, aes(x=c(c(1:5), c(1:5)), y=mean, colour=discharge)) + geom_errorbar(aes(ymin=mean-2* standarderror, ymax=media+2* standarderror), width=.1) + scale_color_manual(values=c("blue", "red")) + theme(legend.text=element_text(size=20), axis.text=element_text(size=16), axis.title=element_text(size=20,face="bold")) + scale_x_continuous(name="Days") + scale_y_continuous(name="log tas") + geom_line() + geom_point() library(verification) prev <- summary(glm(tas.data[,7]~tas.data[,4],family=binomial(link=probit))) answer = c(prev$coefficients[,1:2]) roc.plot(tas.data[,7], prev, show.thres = FALSE, legen=F ) modelo<-function (dataainit) { #dataa<-tas.data dataa<-dataainit dataa$ident<-seq(1:90) tas.6days<-cbind(id=rep(dataa$id,5),tas=c(dataa$tas_d2, dataa$tas_d3, dataa$tas_d4, dataa$tas_d5, dataa$tas_d6), time=rep(c(2:6)-2, each=90), out.come=rep(dataa$hosp,5), ident=rep(dataa$ident,5)) tas.6days<-data.frame(tas.6days[order(tas.6days[,1]),]) tas.6days$tas[tas.6days$tas==88888|tas.6days$tas==99999 ]<-NA #mixed model for the longitudinal tas lme.1 <- lme(tas~ time+1, random = ~ time+1 |ident, data=tas.6days, na.action=na.exclude ) #Random intercept and slopes pred.lme<-predict(lme.1) lme.intercept<-lme.1$coef$random$ident[,1]+lme.1$coef$fixed[1] lme.slope<- lme.1$coef$random$ident[,2]+lme.1$coef$fixed[2] selector<-as.numeric(names(lme.intercept)) #to select not NA rows. Apply to the vector in the dataset test(dataa$intercept[resultado.hosp==1], dataa$intercept[resultado.hosp==0]) print(summary(model.surv1)) return(model.surv1$coef) } CONSOLE RESULT: (errors in red) > casedata <-read.spss("tas_05112008.sav") Warning message: In read.spss("tas_05112008.sav") : tas_05112008.sav: Unrecognized record type 7, subtype 18 encountered in system file > tas.data<-data.frame(casedata) > > #Delete patients that were not discharged > tas.data <- tas.data[ tas.data$hosp!="si ",] > tas.data$resultado.hosp <- ifelse(tas.data$hosp=="l", 0, 1) > > tas.data$tas_d2 <- > log(ifelse(tas.data$tas_d2==88888|tas.data$tas_d2==99999, NA, > tas.data$tas_d2)) > tas.data$tas_d3 <- > log(ifelse(tas.data$tas_d3==88888|tas.data$tas_d3==99999, NA, > tas.data$tas_d3)) > tas.data$tas_d4 <- > log(ifelse(tas.data$tas_d4==88888|tas.data$tas_d4==99999, NA, > tas.data$tas_d4)) > tas.data$tas_d5 <- > log(ifelse(tas.data$tas_d5==88888|tas.data$tas_d5==99999, NA, > tas.data$tas_d5)) > tas.data$tas_d6 <- > log(ifelse(tas.data$tas_d6==88888|tas.data$tas_d6==99999, NA, > tas.data$tas_d6)) > > tas.data$age <- ifelse(tas.data$age==88888|tas.data$age==99999, NA, > tas.data$age) > > > tas.data <- data.frame(tas1 = tas.data$tas_d2, tas2 > = tas.data$tas_d3, + tas3 = tas.data$tas_d4, tas4 = tas.data$tas_d5, + tas5 = tas.data$tas_d6, age = tas.data$age, + discharge = tas.data$resultado.hosp, id.pat=tas.data$id) > > # tas.data$discharge <- factor( tas.data$discharge , > levels=c(0,1), labels = c("dead", "alive")) > > #select only cases that have more than 3 tas > tas.data <- tas.data[apply(tas.data[,-8:-6], 1, > function(x) sum(!is.na(x)))>2,] > > > > nsample <- n.obs <- dim(tas.data)[1] #nr of patients with > more than 2 tas measurements > > tas.data.long <- data.frame( > tas=c(unlist(tas.data[,-8:-6])), time=rep(c(0:4), each=n.obs), > age=rep(tas.data$age, 5), discharge=rep(tas.data$discharge, 5), + id=rep(c(1:n.obs), 5)) > tas.data.long <- tas.data.long [order(tas.data.long$id),] > > age=tas.data$age > > ################################################################################################## > #PLOT EMPIRICAL MEANS OF CRP FOR ALIVE DEATh > ################################################################################################## > mean.alive <- apply(tas.data[tas.data$discharge==0, > -8:-6], 2, mean, na.rm=T) > mean.dead <- apply(tas.data[tas.data$discharge==1, > -8:-6], 2, mean, na.rm=T) > stderr <- function(x) > sqrt(var(x,na.rm=TRUE)/length(na.omit(x))) > se.alive <- apply(tas.data[tas.data$discharge==0, > -8:-6], 2, stderr) > se.dead <- apply(tas.data[tas.data$discharge==1, > -8:-6], 2, stderr) > summarytas <- data.frame (media = c(mean.dead, > mean.alive), + standarderror = c( se.dead, se.alive), discharge = c(rep("dead",5), rep("alive", 5))) > > > ggplot(summarytas, aes(x=c(c(1:5), c(1:5)), y=mean, colour=discharge)) + + geom_errorbar(aes(ymin=mean-2* standarderror, ymax=media+2* standarderror), width=.1) + + scale_color_manual(values=c("blue", "red")) + + theme(legend.text=element_text(size=20), axis.text=element_text(size=16), axis.title=element_text(size=20,face="bold")) + + scale_x_continuous(name="Days") + + scale_y_continuous(name="log tas") + + geom_line() + + geom_point() Error in mean - 2 * standarderror : non-numeric argument to binary operator > > > library(verification) > prev <- summary(glm(tas.data[,7]~tas.data[,4],family=binomial(link=probit))) > answer = c(prev$coefficients[,1:2]) > > > roc.plot(tas.data[,7], prev, show.thres = FALSE, legen=F ) Error in is.finite(x) : default method not implemented for type 'list' > > > > modelo<-function (dataainit) + + { + + #dataa<-tas.data + dataa<-dataainit + + dataa$ident<-seq(1:90) + tas.6days<-cbind(id=rep(dataa$id,5),tas=c(dataa$tas_d2, dataa$tas_d3, + dataa$tas_d4, dataa$tas_d5, dataa$tas_d6), + time=rep(c(2:6)-2, each=90), out.come=rep(dataa$hosp,5), ident=rep(dataa$ident,5)) + + tas.6days<-data.frame(tas.6days[order(tas.6days[,1]),]) + tas.6days$tas[tas.6days$tas==88888|tas.6days$tas==99999 ]<-NA + + #mixed model for the longitudinal tas + lme.1 <- lme(tas~ time+1, random = ~ time+1 |ident, data=tas.6days, na.action=na.exclude ) + + #Random intercept and slopes + pred.lme<-predict(lme.1) + lme.intercept<-lme.1$coef$random$ident[,1]+lme.1$coef$fixed[1] + lme.slope<- lme.1$coef$random$ident[,2]+lme.1$coef$fixed[2] + selector<-as.numeric(names(lme.intercept)) #to select not NA rows. Apply to the vector in the dataset + + test(dataa$intercept[resultado.hosp==1], dataa$intercept[resultado.hosp==0]) + + print(summary(model.surv1)) + return(model.surv1$coef) + + } > I can’t get the OR and OR CI :( DATA: Best, RO Atenciosamente, Rosa Oliveira -- ____________________________________________________________________________ Rosa Celeste dos Santos Oliveira, E-mail: rosit...@gmail.com Tlm: +351 939355143 Linkedin: https://pt.linkedin.com/in/rosacsoliveira ____________________________________________________________________________ "Many admire, few know" Hippocrates > On 23 Sep 2015, at 12:02, Michael Dewey <li...@dewey.myzen.co.uk> wrote: > > Dear Rosa > > It would help if you posted the error messages where they occur so that we > can see which of your commands caused which error. However see comment inline > below. > > On 22/09/2015 22:17, Rosa Oliveira wrote: >> Dear all, >> >> >> I’m trying to compute Odds ratio and OR confidence interval. >> >> I’m really naive, sorry for that. >> >> >> I attach my data and my code. >> >> I’m having lots of errors: >> >> 1. Error in data.frame(tas1 = tas.data$tas_d2, tas2 = tas.data$tas_d3, tas3 >> = tas.data$tas_d4, : >> arguments imply differing number of rows: 90, 0 >> > > At least one of tas_d2, tas_d3, tas_d4 does not exist > > I suggest fixing that one and hoping the rest go away. > >> 2. Error in data.frame(tas = c(unlist(tas.data[, -8:-6])), time = >> rep(c(0:4), : >> arguments imply differing number of rows: 630, 450, 0 >> >> 3. Error: object 'tas.data.long' not found >> >> 4. Error in data.frame(media = c(mean.dead, mean.alive), standarderror = >> c(se.dead, : >> arguments imply differing number of rows: 14, 10 >> >> 5. Error in ggplot(summarytas, aes(x = c(c(1:5), c(1:5)), y = mean, colour = >> discharge)) : >> object 'summarytas' not found >> >> 6. Error in summary(glm(tas.data[, 6] ~ tas.data[, 4], family = >> binomial(link = probit))) : >> error in evaluating the argument 'object' in selecting a method for >> function 'summary': Error in eval(expr, envir, enclos) : y values must be 0 >> <= y <= 1 >> >> 7. Error in wilcox.test.default(pred[obs == 1], pred[obs == 0], alternative >> = "great") : >> not enough (finite) 'x' observations >> In addition: Warning message: >> In is.finite(x) & apply(pred, 1, f) : >> longer object length is not a multiple of shorter object length >> >> >> and off course I’m not getting OR. >> >> Nonetheless all this errors, I think I have not been able to compute de code >> to get OR and OR confidence interval. >> >> >> Can anyone help me please. It’s really urgent. >> >> PLEASE >> >> THE CODE: >> >> the hospital outcome is discharge. >> >> require(gdata) >> library(foreign) >> library(nlme) >> library(lme4) >> library(boot) >> library(MASS) >> library(Hmisc) >> library(plotrix) >> library(verification) >> library(mvtnorm) >> library(statmod) >> library(epiR) >> >> ######################################################################################### >> # Data preparation >> # >> ######################################################################################### >> >> setwd("/Users/RO/Desktop") >> >> casedata <-read.spss("tas_05112008.sav") >> tas.data<-data.frame(casedata) >> >> #Delete patients that were not discharged >> tas.data <- tas.data[ tas.data$hosp!="si ",] >> tas.data$resultado.hosp <- ifelse(tas.data$hosp=="l", 0, 1) >> >> tas.data$tas_d2 <- >> log(ifelse(tas.data$tas_d2==88888|tas.data$tas_d2==99999, NA, >> tas.data$tas_d2)) >> tas.data$tas_d3 <- >> log(ifelse(tas.data$tas_d3==88888|tas.data$tas_d3==99999, NA, >> tas.data$tas_d3)) >> tas.data$tas_d4 <- >> log(ifelse(tas.data$tas_d4==88888|tas.data$tas_d4==99999, NA, >> tas.data$tas_d4)) >> tas.data$tas_d5 <- >> log(ifelse(tas.data$tas_d5==88888|tas.data$tas_d5==99999, NA, >> tas.data$tas_d5)) >> tas.data$tas_d6 <- >> log(ifelse(tas.data$tas_d6==88888|tas.data$tas_d6==99999, NA, >> tas.data$tas_d6)) >> >> tas.data$age <- ifelse(tas.data$age==88888|tas.data$age==99999, NA, >> tas.data$age) >> >> >> tas.data <- data.frame(tas1 = tas.data$tas_d2, >> tas2 = tas.data$tas_d3, >> tas3 = tas.data$tas_d4, tas4 = >> tas.data$tas_d5, >> tas5 = tas.data$tas_d6, age = >> tas.data$age, >> discharge = >> tas.data$resultado.hosp, id.pat=tas.data$ID) >> >> # tas.data$discharge <- factor( tas.data$discharge , >> levels=c(0,1), labels = c("dead", "alive")) >> >> #select only cases that have more than 3 tas >> tas.data <- tas.data[apply(tas.data[,-8:-6], 1, >> function(x) sum(!is.na(x)))>2,] >> >> >> >> nsample <- n.obs <- dim(tas.data)[1] #nr of patients with >> more than 2 tas measurements >> >> tas.data.long <- data.frame( >> tas=c(unlist(tas.data[,-8:-6])), time=rep(c(0:4), each=n.obs), >> age=rep(tas.data$age, 5), discharge=rep(tas.data$discharge, 5), >> id=rep(c(1:n.obs), 5)) >> tas.data.long <- tas.data.long >> [order(tas.data.long$id),] >> >> age=tas.data$age >> >> ################################################################################################## >> #PLOT EMPIRICAL MEANS OF CRP FOR ALIVE DEATh >> ################################################################################################## >> mean.alive <- apply(tas.data[tas.data$discharge==0, >> -8:-6], 2, mean, na.rm=T) >> mean.dead <- apply(tas.data[tas.data$discharge==1, >> -8:-6], 2, mean, na.rm=T) >> stderr <- function(x) >> sqrt(var(x,na.rm=TRUE)/length(na.omit(x))) >> se.alive <- apply(tas.data[tas.data$discharge==0, >> -8:-6], 2, stderr) >> se.dead <- apply(tas.data[tas.data$discharge==1, >> -8:-6], 2, stderr) >> summarytas <- data.frame (media = c(mean.dead, >> mean.alive), >> standarderror = c( se.dead, se.alive), >> discharge = c(rep("dead",5), rep("alive", 5))) >> >> >> ggplot(summarytas, aes(x=c(c(1:5), c(1:5)), y=mean, colour=discharge)) + >> geom_errorbar(aes(ymin=mean-2* standarderror, ymax=media+2* >> standarderror), width=.1) + >> scale_color_manual(values=c("blue", "red")) + >> theme(legend.text=element_text(size=20), axis.text=element_text(size=16), >> axis.title=element_text(size=20,face="bold")) + >> scale_x_continuous(name="Days") + >> scale_y_continuous(name="log tas") + >> geom_line() + >> geom_point() >> >> >> library(verification) >> prev <- summary(glm(tas.data[,6]~tas.data[,4],family=binomial(link=probit))) >> answer = c(prev$coefficients[,1:2]) >> >> >> roc.plot(tas.data[,6], prev, show.thres = FALSE, legen=F ) >> >> >> modelo<-function (dataainit) >> >> { >> >> #dataa<-tas.data >> dataa<-dataainit >> >> dataa$ident<-seq(1:90) >> tas.6days<-cbind(id=rep(dataa$id,5),tas=c(dataa$tas_d2, >> dataa$tas_d3, >> dataa$tas_d4, dataa$tas_d5, dataa$tas_d6), >> time=rep(c(2:6)-2, each=90), out.come=rep(dataa$hosp,5), >> ident=rep(dataa$ident,5)) >> >> tas.6days<-data.frame(tas.6days[order(tas.6days[,1]),]) >> tas.6days$tas[tas.6days$tas==88888|tas.6days$tas==99999 ]<-NA >> >> #mixed model for the longitudinal tas >> lme.1 <- lme(tas~ time+1, random = ~ time+1 |ident, >> data=tas.6days, na.action=na.exclude ) >> >> #Random intercept and slopes >> pred.lme<-predict(lme.1) >> lme.intercept<-lme.1$coef$random$ident[,1]+lme.1$coef$fixed[1] >> lme.slope<- lme.1$coef$random$ident[,2]+lme.1$coef$fixed[2] >> selector<-as.numeric(names(lme.intercept)) #to select not NA >> rows. Apply to the vector in the dataset >> >> test(dataa$intercept[resultado.hosp==1], dataa$intercept[resultado.hosp==0]) >> >> print(summary(model.surv1)) >> return(model.surv1$coef) >> >> } >> >> >> >> >> Best, >> RO >> >> >> >> ______________________________________________ >> R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see >> 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. >> > > -- > Michael > http://www.dewey.myzen.co.uk/home.html ______________________________________________ R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see 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.