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".
>
>