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.