Many thanks David, But I am not sure the Dataset and newdata are the real problem. I have solved, at least I think so, what you were asking. Here below my new R code but still the same error message. IMHO the problem is with "boot.ci" function... # # # # # # # # # # # # # # # # # # # ## # # # # # # # # # # # # # # bmi=c(23,43,21,23,45,65,45,11,12,13,23,34,NA,NA,34,35,45,65,43,23,12,11,15,43,23,88,78,79,89,89,99,43,21,34,32,45,65,76,56,45,34,23,12,32) glucose=c(NA,12,23,11,12,21,23,21,23,43,23,12,NA,23,11,12,32,12,14,12,11,10,9,8,9,8,7,90,76,32,12,11,12,23,11,123,32,12,14,34,54,65,76,87) crp=c(123,212,154,342,123,111,121,765,453,123,213,211,NA,NA,32,123,213,145,143,123,132,143,165,176,181,123,87,567,342,123,143,132,143,234,345,32,123,132,143,345,321,543,231,123) age=c(67,45,34,56,87,NA,NA,23,18,65,45,87,65,33,23,65,43,23,43,12,132,56,76,87,98,78,76,56,78,54,34,56,76,99,12,45,34,65,76,87,98,97,64,53) sex=c(0,1,1,0,1,0,1,0,0,1,1,1,NA,NA,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,1,1,0,0) Dataset=data.frame( bmi,glucose,crp,age,sex) newdata=na.omit(Dataset) #install.packages( "robustbase",dependencies=TRUE ) #install.packages( "boot",dependencies=TRUE ) library(boot) library(robustbase) ?# function to obtain MSE ?MSE <- function(data, indices, formula,method) { ??? d <- data[indices, ] # allows boot to select sample ??? fastMM <- lmrob( crp ~ bmi+glucose+age+sex,data=newdata) ??? fit <- lmrob(formula, data = d, method="MM") ??? ypred <- predict(fit) ?? mean((d[["fastMM"]]-ypred)^2) ?} ?# bootstrapping with 100 replications ?results <- boot(data = newdata, statistic = MSE, ????????????????? R = 100, formula = crp ~ bmi+glucose+age+sex,method="MM") str(results) boot.ci(results, type="norm" ) str(Dataset) str(newdata) summary(results$t) # # # # # # # # # # # # # # # # # # # # # # # # # Le lundi 30 mars 2020 ? 00:40:33 UTC+2, David Winsemius <dwinsemius at comcast.net> a ?crit : On 3/28/20 12:25 PM, varin sacha via R-help wrote:> Dear R-experts, > > Here below my "toy" reproducible example showing many warnings and an error message. What I am interested in is the error message. > Of course I can access and view the results doing : summary(results$t) to give me an idea of what is going on. But I don't know how to correct/solve my problem. Any help to solve my problem would be highly appreciated.I do suggest you look at: str(Dataset) str(newdata) The problem is actually in your construction of Dataset. Do not quote object names next time. -- David> > # # # # # # # # # # # # # # # # # # # ## # # # # # # # # # # # # # # > bmi=c(23,43,21,23,45,65,45,11,12,13,23,34,NA,NA) > glucose=c(NA,12,23,11,12,21,23,21,23,43,23,12,NA,23) > crp=c(123,212,154,342,123,111,121,765,453,123,213,211,NA,NA) > age=c(67,45,34,56,87,NA,NA,23,18,65,45,87,65,33) > sex=c(0,1,1,0,1,0,1,0,0,1,1,1,NA,NA) > > Dataset=data.frame("bmi","glucose","crp","age","sex") > newdata=na.omit(Dataset) > > #install.packages( "robustbase",dependencies=TRUE ) > #install.packages( "boot",dependencies=TRUE ) > library(boot) > library(robustbase) > >? ?# function to obtain MSE >? ?MSE <- function(data, indices, formula,method) { > fastMM <- lmrob( crp ~ bmi+glucose+age+sex, data=newdata) >? ??? d <- data[indices, ] # allows boot to select sample >? ??? fit <- lmrob(formula, data = d, method="MM") >? ??? ypred <- predict(fit) >? ?? mean((d[["fastMM"]]-ypred)^2) >? ?} > >? ?# bootstrapping with 1000 replications >? ?results <- boot(data = newdata, statistic = MSE, >? ????????????????? R = 1000, formula = crp ~ bmi+glucose+age+sex,method="MM") > > str(results) > boot.ci(results, type="norm" ) > > summary(results$t) > # # # # # # # # # # # # # # # # # # # # # # # # # > > ______________________________________________ > R-help at 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.
On 3/30/20 2:45 AM, varin sacha wrote:> Many thanks David, > > But I am not sure the Dataset and newdata are the real problem. I have solved, at least I think so, what you were asking. Here below my new R code but still the same error message. IMHO the problem is with "boot.ci" function... > > # # # # # # # # # # # # # # # # # # # ## # # # # # # # # # # # # # # > bmi=c(23,43,21,23,45,65,45,11,12,13,23,34,NA,NA,34,35,45,65,43,23,12,11,15,43,23,88,78,79,89,89,99,43,21,34,32,45,65,76,56,45,34,23,12,32) > glucose=c(NA,12,23,11,12,21,23,21,23,43,23,12,NA,23,11,12,32,12,14,12,11,10,9,8,9,8,7,90,76,32,12,11,12,23,11,123,32,12,14,34,54,65,76,87) > crp=c(123,212,154,342,123,111,121,765,453,123,213,211,NA,NA,32,123,213,145,143,123,132,143,165,176,181,123,87,567,342,123,143,132,143,234,345,32,123,132,143,345,321,543,231,123) > age=c(67,45,34,56,87,NA,NA,23,18,65,45,87,65,33,23,65,43,23,43,12,132,56,76,87,98,78,76,56,78,54,34,56,76,99,12,45,34,65,76,87,98,97,64,53) > sex=c(0,1,1,0,1,0,1,0,0,1,1,1,NA,NA,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,1,1,0,0) > > Dataset=data.frame( bmi,glucose,crp,age,sex) > newdata=na.omit(Dataset) > > #install.packages( "robustbase",dependencies=TRUE ) > #install.packages( "boot",dependencies=TRUE ) > library(boot) > library(robustbase) > > ?# function to obtain MSE > ?MSE <- function(data, indices, formula,method) { > ??? d <- data[indices, ] # allows boot to select sample > ??? fastMM <- lmrob( crp ~ bmi+glucose+age+sex,data=newdata) > ??? fit <- lmrob(formula, data = d, method="MM") > ??? ypred <- predict(fit) > ?? mean((d[["fastMM"]]-ypred)^2)At this point I do not see any reason for assuming there is a column in the d-object with the name "fastMM". -- David> > ?} > > ?# bootstrapping with 100 replications > ?results <- boot(data = newdata, statistic = MSE, > ????????????????? R = 100, formula = crp ~ bmi+glucose+age+sex,method="MM") > > str(results) > boot.ci(results, type="norm" ) > > str(Dataset) > str(newdata) > summary(results$t) > # # # # # # # # # # # # # # # # # # # # # # # # # > > > > > > > > Le lundi 30 mars 2020 ? 00:40:33 UTC+2, David Winsemius <dwinsemius at comcast.net> a ?crit : > > > > > > > On 3/28/20 12:25 PM, varin sacha via R-help wrote: >> Dear R-experts, >> >> Here below my "toy" reproducible example showing many warnings and an error message. What I am interested in is the error message. >> Of course I can access and view the results doing : summary(results$t) to give me an idea of what is going on. But I don't know how to correct/solve my problem. Any help to solve my problem would be highly appreciated. > > I do suggest you look at: > > > str(Dataset) > > str(newdata) > > > The problem is actually in your construction of Dataset. Do not quote > object names next time. >
Hi David, Yes, you are right but it does not change anything to my problem. According to the error message, what I understand is that there is/are NAs values in "t". Using newdata <- na.omit(Dataset) I create new dataset without missing data, so I don't understand what is going on with these NAs values. I found on the Net (google search) Brian D. Ripley answers this : "Correct your 'statistic' function not to return NaN." Ben Bolker in another website answers this : "This is caused by the combination of the default na.omit setting and the fact that refit is trying to account for omitted values." So, instead of na.omit(Dataset) I have tried with newdata<- na.exclude(Dataset). It does not work ! I am lost ... ? # # # # # # # # # # # # # # # # # # # ## # # # # # # # # # # # # # # bmi=c(23,43,21,23,45,65,45,11,12,13,23,34,NA,NA,34,35,45,65,43,23,12,11,15,43,23,88,78,79,89,89,99,43,21,34,32,45,65,76,56,45,34,23,12,32) glucose=c(NA,12,23,11,12,21,23,21,23,43,23,12,NA,23,11,12,32,12,14,12,11,10,9,8,9,8,7,90,76,32,12,11,12,23,11,123,32,12,14,34,54,65,76,87) crp=c(123,212,154,342,123,111,121,765,453,123,213,211,NA,NA,32,123,213,145,143,123,132,143,165,176,181,123,87,567,342,123,143,132,143,234,345,32,123,132,143,345,321,543,231,123) age=c(67,45,34,56,87,NA,NA,23,18,65,45,87,65,33,23,65,43,23,43,12,132,56,76,87,98,78,76,56,78,54,34,56,76,99,12,45,34,65,76,87,98,97,64,53) sex=c(0,1,1,0,1,0,1,0,0,1,1,1,NA,NA,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,1,1,0,0) Dataset=data.frame( bmi,glucose,crp,age,sex) newdata=na.omit(Dataset) #install.packages( "robustbase",dependencies=TRUE ) #install.packages( "boot",dependencies=TRUE ) library(boot) library(robustbase) ?# function to obtain MSE ?MSE <- function(data, indices, formula,method) { ??? d <- data[indices, ] # allows boot to select sample ??? fit <- lmrob(formula, data = d, method="MM") ??? ypred <- predict(fit) ?? mean((d[["fastMM"]]-ypred)^2) ?} ?# bootstrapping with 100 replications ?results <- boot(data = newdata, statistic = MSE, ????????????????? R = 100, formula = crp ~ bmi+glucose+age+sex,method="MM") str(results) boot.ci(results, type="norm" ) str(Dataset) str(newdata) summary(results$t) # # # # # # # # # # # # # # # # # # # # # # # # # Le lundi 30 mars 2020 ? 16:56:57 UTC+2, David Winsemius <dwinsemius at comcast.net> a ?crit : On 3/30/20 2:45 AM, varin sacha wrote:> Many thanks David, > > But I am not sure the Dataset and newdata are the real problem. I have solved, at least I think so, what you were asking. Here below my new R code but still the same error message. IMHO the problem is with "boot.ci" function... > > # # # # # # # # # # # # # # # # # # # ## # # # # # # # # # # # # # # > bmi=c(23,43,21,23,45,65,45,11,12,13,23,34,NA,NA,34,35,45,65,43,23,12,11,15,43,23,88,78,79,89,89,99,43,21,34,32,45,65,76,56,45,34,23,12,32) > glucose=c(NA,12,23,11,12,21,23,21,23,43,23,12,NA,23,11,12,32,12,14,12,11,10,9,8,9,8,7,90,76,32,12,11,12,23,11,123,32,12,14,34,54,65,76,87) > crp=c(123,212,154,342,123,111,121,765,453,123,213,211,NA,NA,32,123,213,145,143,123,132,143,165,176,181,123,87,567,342,123,143,132,143,234,345,32,123,132,143,345,321,543,231,123) > age=c(67,45,34,56,87,NA,NA,23,18,65,45,87,65,33,23,65,43,23,43,12,132,56,76,87,98,78,76,56,78,54,34,56,76,99,12,45,34,65,76,87,98,97,64,53) > sex=c(0,1,1,0,1,0,1,0,0,1,1,1,NA,NA,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,1,1,0,0) > > Dataset=data.frame( bmi,glucose,crp,age,sex) > newdata=na.omit(Dataset) > > #install.packages( "robustbase",dependencies=TRUE ) > #install.packages( "boot",dependencies=TRUE ) > library(boot) > library(robustbase) > >? ?# function to obtain MSE >? ?MSE <- function(data, indices, formula,method) { >? ??? d <- data[indices, ] # allows boot to select sample >? ??? fastMM <- lmrob( crp ~ bmi+glucose+age+sex,data=newdata) >? ??? fit <- lmrob(formula, data = d, method="MM") >? ??? ypred <- predict(fit) >? ?? mean((d[["fastMM"]]-ypred)^2)At this point I do not see any reason for assuming there is a column in the d-object with the name "fastMM". -- David> >? ?} > >? ?# bootstrapping with 100 replications >? ?results <- boot(data = newdata, statistic = MSE, >? ????????????????? R = 100, formula = crp ~ bmi+glucose+age+sex,method="MM") > > str(results) > boot.ci(results, type="norm" ) > > str(Dataset) > str(newdata) > summary(results$t) > # # # # # # # # # # # # # # # # # # # # # # # # # > > > > > > > > Le lundi 30 mars 2020 ? 00:40:33 UTC+2, David Winsemius <dwinsemius at comcast.net> a ?crit : > > > > > > > On 3/28/20 12:25 PM, varin sacha via R-help wrote: >> Dear R-experts, >> >> Here below my "toy" reproducible example showing many warnings and an error message. What I am interested in is the error message. >> Of course I can access and view the results doing : summary(results$t) to give me an idea of what is going on. But I don't know how to correct/solve my problem. Any help to solve my problem would be highly appreciated. > > I do suggest you look at: > > > str(Dataset) > > str(newdata) > > > The problem is actually in your construction of Dataset. Do not quote > object names next time. >
Hello, David is right, the response is named 'crp', not 'fastMM'. And there is no need to run the regression twice. Try # function to obtain MSE MSE <- function(data, indices, formula, method) { d <- data[indices, ] # allows boot to select sample fit <- lmrob(formula, data = d, method = method) ypred <- predict(fit) mean((d[["crp"]] - ypred)^2) } Hope this helps, Rui Barradas ?s 15:56 de 30/03/20, David Winsemius escreveu:> > On 3/30/20 2:45 AM, varin sacha wrote: >> Many thanks David, >> >> But I am not sure the Dataset and newdata are the real problem. I have >> solved, at least I think so, what you were asking. Here below my new R >> code but still the same error message. IMHO the problem is with >> "boot.ci" function... >> >> # # # # # # # # # # # # # # # # # # # ## # # # # # # # # # # # # # # >> bmi=c(23,43,21,23,45,65,45,11,12,13,23,34,NA,NA,34,35,45,65,43,23,12,11,15,43,23,88,78,79,89,89,99,43,21,34,32,45,65,76,56,45,34,23,12,32) >> >> glucose=c(NA,12,23,11,12,21,23,21,23,43,23,12,NA,23,11,12,32,12,14,12,11,10,9,8,9,8,7,90,76,32,12,11,12,23,11,123,32,12,14,34,54,65,76,87) >> >> crp=c(123,212,154,342,123,111,121,765,453,123,213,211,NA,NA,32,123,213,145,143,123,132,143,165,176,181,123,87,567,342,123,143,132,143,234,345,32,123,132,143,345,321,543,231,123) >> >> age=c(67,45,34,56,87,NA,NA,23,18,65,45,87,65,33,23,65,43,23,43,12,132,56,76,87,98,78,76,56,78,54,34,56,76,99,12,45,34,65,76,87,98,97,64,53) >> >> sex=c(0,1,1,0,1,0,1,0,0,1,1,1,NA,NA,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,1,1,0,0) >> >> >> Dataset=data.frame( bmi,glucose,crp,age,sex) >> newdata=na.omit(Dataset) >> >> #install.packages( "robustbase",dependencies=TRUE ) >> #install.packages( "boot",dependencies=TRUE ) >> library(boot) >> library(robustbase) >> >> ??# function to obtain MSE >> ??MSE <- function(data, indices, formula,method) { >> ???? d <- data[indices, ] # allows boot to select sample >> ???? fastMM <- lmrob( crp ~ bmi+glucose+age+sex,data=newdata) >> ???? fit <- lmrob(formula, data = d, method="MM") >> ???? ypred <- predict(fit) >> ??? mean((d[["fastMM"]]-ypred)^2) > > At this point I do not see any reason for assuming there is a column in > the d-object with the name "fastMM". > >