varin sacha
2020-Mar-21 23:14 UTC
[R] Error in FastTau(formula, data = d) : unused argument(s) (data = d)
Dear R-helpers, Another problem with FastTau function from the RobPer packages. Any solution to solve my problem would be highly appreciated. # # # # # # # # # # # # # # # # # # # # # # # # install.packages( "boot",dependencies=TRUE ) install.packages( "RobPer",dependencies=TRUE ?) library(boot) library(RobPer) n<-200 b<-runif(n, 0, 5) z <- rnorm(n, 2, 3) a <- runif(n, 0, 5) y_model<- 0.1*b - 0.5 * z - a + 10 y_obs <- y_model +c( rnorm(n*0.9, 0, 0.1), rnorm(n*0.1, 0, 0.5) ) df<-data.frame(b,z,a,y_obs) ?# function to obtain MSE ?MSE <- function(data, indices, formula){ ? ? d <- data[indices, ] # allows boot to select sample ? ? fit <- FastTau(formula, data = d) ? ? ypred <- predict(fit) ?? mean((d[["y_obs"]]-ypred)^2) ?} ? # Make the results reproducible ?set.seed(1234) ? ?# bootstrapping with 600 replications ?results <- boot(data = df, statistic = MSE, ? ??????????????? R = 600, formula = model.matrix(~b+z+a)) str(results) boot.ci(results, type="bca"?) # # # # # # # # # # # # # # # # # # # # # # # # #
Rui Barradas
2020-Mar-22 09:59 UTC
[R] Error in FastTau(formula, data = d) : unused argument(s) (data = d)
Hello, 1. There is no need to install package 'boot', it's a base package. 2. The question. The problem is that FastTau returns an object of class "list" and there is no 'predict' method for lists, you will have to define your own. This is easy, it's just a matrix multiply. And you are not calling FastTau correctly, see the function documentation and the new MSE function below. MSE <- function(data, indices, formula){ predfun <- function(object, model){ beta <- object[["beta"]] as.vector(model %*% beta) } d <- data[indices, ] # allows boot to select sample modmat <- model.matrix(as.formula(formula), data = d) fit <- FastTau(x = modmat, y = d[["y_obs"]]) ypred <- predfun(fit, modmat) mean((d[["y_obs"]]-ypred)^2) } # Make the results reproducible set.seed(1234) # bootstrapping with 10 replications results <- boot(data = df, statistic = MSE, R = 10, formula = ~b+z+a) type <- c("norm","basic", "stud", "perc", "bca") boot.ci(results, type = type[-5]) Hope this helps, Rui Barradas ?s 23:14 de 21/03/20, varin sacha via R-help escreveu:> Dear R-helpers, > > Another problem with FastTau function from the RobPer packages. Any solution to solve my problem would be highly appreciated. > > > # # # # # # # # # # # # # # # # # # # # # # # # > install.packages( "boot",dependencies=TRUE ) > install.packages( "RobPer",dependencies=TRUE ?) > > library(boot) > library(RobPer) > > n<-200 > b<-runif(n, 0, 5) > z <- rnorm(n, 2, 3) > a <- runif(n, 0, 5) > > y_model<- 0.1*b - 0.5 * z - a + 10 > y_obs <- y_model +c( rnorm(n*0.9, 0, 0.1), rnorm(n*0.1, 0, 0.5) ) > df<-data.frame(b,z,a,y_obs) > > ?# function to obtain MSE > ?MSE <- function(data, indices, formula){ > ? ? d <- data[indices, ] # allows boot to select sample > ? ? fit <- FastTau(formula, data = d) > ? ? ypred <- predict(fit) > ?? mean((d[["y_obs"]]-ypred)^2) > ?} > > # Make the results reproducible > ?set.seed(1234) > > ?# bootstrapping with 600 replications > ?results <- boot(data = df, statistic = MSE, > ? ??????????????? R = 600, formula = model.matrix(~b+z+a)) > str(results) > > boot.ci(results, type="bca"?) > # # # # # # # # # # # # # # # # # # # # # # # # # > > ______________________________________________ > 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. >
Rui Barradas
2020-Mar-22 10:02 UTC
[R] Error in FastTau(formula, data = d) : unused argument(s) (data = d)
Correction: In MSE modmat <- model.matrix(as.formula(formula), data = d) doesn't need as.formula, it should be modmat <- model.matrix(formula, data = d) Sorry, rui Barradas ?s 09:59 de 22/03/20, Rui Barradas escreveu:> Hello, > > 1. There is no need to install package 'boot', it's a base package. > 2. The question. > > The problem is that FastTau returns an object of class "list" and there > is no 'predict' method for lists, you will have to define your own. > This is easy, it's just a matrix multiply. > And you are not calling FastTau correctly, see the function > documentation and the new MSE function below. > > > > MSE <- function(data, indices, formula){ > ? predfun <- function(object, model){ > ??? beta <- object[["beta"]] > ??? as.vector(model %*% beta) > ? } > ? d <- data[indices, ] # allows boot to select sample > ? modmat <- model.matrix(as.formula(formula), data = d) > ? fit <- FastTau(x = modmat, y = d[["y_obs"]]) > ? ypred <- predfun(fit, modmat) > ? mean((d[["y_obs"]]-ypred)^2) > } > > # Make the results reproducible > set.seed(1234) > # bootstrapping with 10 replications > results <- boot(data = df, statistic = MSE, > ??????????????? R = 10, formula = ~b+z+a) > > type <- c("norm","basic", "stud", "perc", "bca") > boot.ci(results, type = type[-5]) > > > Hope this helps, > > Rui Barradas > > ?s 23:14 de 21/03/20, varin sacha via R-help escreveu: >> Dear R-helpers, >> >> Another problem with FastTau function from the RobPer packages. Any >> solution to solve my problem would be highly appreciated. >> >> >> # # # # # # # # # # # # # # # # # # # # # # # # >> install.packages( "boot",dependencies=TRUE ) >> install.packages( "RobPer",dependencies=TRUE ?) >> >> library(boot) >> library(RobPer) >> >> n<-200 >> b<-runif(n, 0, 5) >> z <- rnorm(n, 2, 3) >> a <- runif(n, 0, 5) >> >> y_model<- 0.1*b - 0.5 * z - a + 10 >> y_obs <- y_model +c( rnorm(n*0.9, 0, 0.1), rnorm(n*0.1, 0, 0.5) ) >> df<-data.frame(b,z,a,y_obs) >> >> ??# function to obtain MSE >> ??MSE <- function(data, indices, formula){ >> ?? ? d <- data[indices, ] # allows boot to select sample >> ?? ? fit <- FastTau(formula, data = d) >> ?? ? ypred <- predict(fit) >> ??? mean((d[["y_obs"]]-ypred)^2) >> ??} >> # Make the results reproducible >> ??set.seed(1234) >> ??# bootstrapping with 600 replications >> ??results <- boot(data = df, statistic = MSE, >> ?? ??????????????? R = 600, formula = model.matrix(~b+z+a)) >> str(results) >> >> boot.ci(results, type="bca"?) >> # # # # # # # # # # # # # # # # # # # # # # # # # >> >> ______________________________________________ >> 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. >> > > ______________________________________________ > 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.