On Oct 4, 2010, at 9:57 AM, 笑啸 wrote:

dear teacher:
thank you for your help,witn your help i develop the nomogram successfully.
after that i want to do the internal validation to the nomogram.

So you need some standard for accuracy, which would only come from the original data. Hence my suggestion that you bring the original data into R and rms. You cannot validate that model with the approaches you are attempting.

And it would not be correct to say that you are "validating the nomogram". It is simply a graphical tool for implementing predictions from a statistical model. You should be thinking of this as exploring the


i wish to use the bootstrap to achieve the prediction accuracy of the nomogram,and then i encounter problem again,just like that. (error to :complete.cases(x, y, wt) : (the length of the augment was different)) i hope you tell me where is the mistake,and maybe i have chosen the wrong function.

More accurately, I think you have chosen the wrong strategy. I think you need to add some statistical consultation fees to your research budget. Or you may get away with buying "Regression Modeling Strategies" and using it to work through the many worked examples that accompany the rms package. The first option may be faster, but the second option is probably slower but should result in a higher level of statistical understanding for you. The proper choice for you depends on your deadline, available time and what monetary value you assign to that "spare" time.

--
David.

thank you
                                                      turly yours
......
load package 'rms'

n<-100
set.seed(10)
T.Grade<-factor(0:3,labels=c("G0", "G1", "G2","G3"))
Sex<-factor(0:1,labels=c("F","M"))
Smoking<-factor(0:1,labels=c("No","yes"))
L<-0.559*as.numeric(T.Grade)-0.896*as.numeric(Smoking)
+0.92*as.numeric(Sex)-1.338
L
[1] -0.755 -0.172  0.363  0.946
y <- ifelse(runif(n) < plogis(L), 1, 0)
dfr <- data.frame(T.Grade,Sex,Smoking, L, y)
ddist <- datadist(dfr)  # wrap the vectors into a dataframe.
options(datadist='ddist')
f<-lrm(y~T.Grade +Sex+Smoking, data=dfr) # skip the as.numeric()'s
### Gives an error message due to singular X matrix.
f<-lrm(y~T.Grade +Sex+Smoking, data=dfr)
singular information matrix in lrm.fit (rank= 5 ).  Offending
variable(s):
Sex=M
Error in lrm(y ~ T.Grade + Sex + Smoking, data = dfr) :
  Unable to fit model using “lrm.fit”

#####    Try instead:

n<-100
set.seed(10)
T.Grade<-factor(0:3,labels=c("G0", "G1", "G2","G3"))
Sex<-factor(sample(0:1, 100, replace=TRUE),labels=c("F","M"))
Smoking<-factor(sample(0:1, 100, replace=TRUE),labels=c("No","yes"))

dfr$L <- with(dfr, 0.559*as.numeric(T.Grade)-0.896*as.numeric(Smoking)
+0.92*as.numeric(Sex)-1.338)
dfr$y <- with(dfr, ifelse(runif(n) < plogis(L), 1, 0) )
dfr <- data.frame(T.Grade,Sex,Smoking, L, y)

ddist <- datadist(dfr)
options(datadist='ddist')
f<-lrm(y~T.Grade +Sex+Smoking, data=dfr)
nom <- nomogram(f, fun=function(x)1/(1+exp(-x)),  # or fun=plogis
    fun.at=c(.001,.01,.05,seq(.1,.9,by=.1),.95,.99,.999),
    funlabel="Risk of Death")
plot(nom, xfrac=.45)

load package bootstrap(achieve the prediction accuracy of the nomogram)

.................the problem....................
theta.fit <- function(dfr,y){lsfit(dfr,y)}
theta.predict <- function(fit,dfr){cbind(1,dfr)%*%fit$coef}
sq.err <- function(y,yhat) { (y-yhat)^2}
results <- bootpred(x,y,50,theta.fit,theta.predict,err.meas=sq.err)
error to :complete.cases(x, y, wt) : (the length of the augment was different.__________________________________________
--

David Winsemius, MD
West Hartford, CT

______________________________________________
R-help@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.

Reply via email to