varin sacha
2018-May-08 19:26 UTC
[R] Average of results coming from B=100 repetitions (looping)
Dear R-experts, Here below the reproducible example. I am trying to get the average of the 100 results coming from the "lst" function. I have tried lst$mean and mean(lst). It does not work. Any help would be highly appreciated. #################### ?## R script for getting MedAe and MedAeSQ from HBR model on Testing data install.packages("robustbase") install.packages( "MASS" ) install.packages( "quantreg" ) install.packages( "RobPer") install.packages("devtools") library("devtools") install_github("kloke/hbrfit") install.packages('http://www.stat.wmich.edu/mckean/Stat666/Pkgs/npsmReg2_0.1.1.tar.gz') library(robustbase) library(MASS) library(quantreg) library(RobPer) library(hbrfit) # numeric variables A=c(2,3,4,3,2,6,5,6,4,3,5,55,6,5,4,5,6,6,7,52) B=c(45,43,23,47,65,21,12,7,18,29,56,45,34,23,12,65,4,34,54,23) D=c(21,54,34,12,4,56,74,3,12,71,14,15,63,34,35,23,24,21,69,32) # Create a dataframe BIO<-data.frame(A,B,D)? # Create a list to store the results lst<-list() # This statement does the repetitions (looping) for(i in 1?:100) { # randomize sampling seed n=dim(BIO)[1] p=0.667 # Sample size sam=sample(1 :n,floor(p*n),replace=FALSE) # Sample training data Training =BIO [sam,] # Sample testing data Testing = BIO [-sam,] # Build the HBR model HBR<-hbrfit(D ~ A+B) # Grab the coefficients HBR_intercept <- as.numeric(HBR$coefficients[1]) HBR_coefA <- as.numeric(HBR$coefficients[2]) HBR_coefB <- as.numeric(HBR$coefficients[3]) # Predict response on testing data Testing$pred <- HBR_intercept + HBR_coefA * Testing$A + HBR_coefB *Testing$B # Get errors Testing$sq_error <- (Testing$D-Testing$pred)^2 Testing$abs_error <- abs(Testing$D-Testing$pred)? MedAe <- median(Testing$abs_error) MedAe MedAeSQ <-median(Testing$sq_error) MedAeSQ lst[i]<-MedAe } lst mean(lst) lst$mean ######################?
Eric Berger
2018-May-08 19:40 UTC
[R] Average of results coming from B=100 repetitions (looping)
mean(unlist(lst)) On Tue, May 8, 2018 at 10:26 PM, varin sacha via R-help < r-help at r-project.org> wrote:> > Dear R-experts, > > Here below the reproducible example. I am trying to get the average of the > 100 results coming from the "lst" function. I have tried lst$mean and > mean(lst). It does not work. > Any help would be highly appreciated. > > #################### > > ## R script for getting MedAe and MedAeSQ from HBR model on Testing data > install.packages("robustbase") > install.packages( "MASS" ) > install.packages( "quantreg" ) > install.packages( "RobPer") > install.packages("devtools") > library("devtools") > install_github("kloke/hbrfit") > install.packages('http://www.stat.wmich.edu/mckean/Stat666/ > Pkgs/npsmReg2_0.1.1.tar.gz') > library(robustbase) > library(MASS) > library(quantreg) > library(RobPer) > library(hbrfit) > > # numeric variables > A=c(2,3,4,3,2,6,5,6,4,3,5,55,6,5,4,5,6,6,7,52) > B=c(45,43,23,47,65,21,12,7,18,29,56,45,34,23,12,65,4,34,54,23) > D=c(21,54,34,12,4,56,74,3,12,71,14,15,63,34,35,23,24,21,69,32) > > # Create a dataframe > BIO<-data.frame(A,B,D) > > # Create a list to store the results > lst<-list() > > # This statement does the repetitions (looping) > for(i in 1 :100) > { > > # randomize sampling seed > n=dim(BIO)[1] > p=0.667 > > # Sample size > sam=sample(1 :n,floor(p*n),replace=FALSE) > > # Sample training data > Training =BIO [sam,] > > # Sample testing data > Testing = BIO [-sam,] > > # Build the HBR model > HBR<-hbrfit(D ~ A+B) > > # Grab the coefficients > HBR_intercept <- as.numeric(HBR$coefficients[1]) > HBR_coefA <- as.numeric(HBR$coefficients[2]) > HBR_coefB <- as.numeric(HBR$coefficients[3]) > > # Predict response on testing data > Testing$pred <- HBR_intercept + HBR_coefA * Testing$A + HBR_coefB > *Testing$B > > # Get errors > Testing$sq_error <- (Testing$D-Testing$pred)^2 > Testing$abs_error <- abs(Testing$D-Testing$pred) > MedAe <- median(Testing$abs_error) > MedAe > MedAeSQ <-median(Testing$sq_error) > MedAeSQ > > lst[i]<-MedAe > } > lst > mean(lst) > lst$mean > > ###################### > > ______________________________________________ > 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. >[[alternative HTML version deleted]]
Bert Gunter
2018-May-08 19:51 UTC
[R] Average of results coming from B=100 repetitions (looping)
mean(lst) ### See ?mean. A list cannot be an argument of mean. lst$mean ## nonsense! Don't guess -- read the docs. Here is an an example:> z <- list() > for(i in 1:5) z[i] <- i > z[[1]] [1] 1 [[2]] [1] 2 [[3]] [1] 3 [[4]] [1] 4 [[5]] [1] 5> mean(z)[1] NA Warning message: In mean.default(z) : argument is not numeric or logical: returning NA> class(z)[1] "list"> z <- unlist(z) > mean(z)[1] 3 Cheers, Bert Bert Gunter "The trouble with having an open mind is that people keep coming along and sticking things into it." -- Opus (aka Berkeley Breathed in his "Bloom County" comic strip ) On Tue, May 8, 2018 at 12:26 PM, varin sacha via R-help < r-help at r-project.org> wrote:> > Dear R-experts, > > Here below the reproducible example. I am trying to get the average of the > 100 results coming from the "lst" function. I have tried lst$mean and > mean(lst). It does not work. > Any help would be highly appreciated. > > #################### > > ## R script for getting MedAe and MedAeSQ from HBR model on Testing data > install.packages("robustbase") > install.packages( "MASS" ) > install.packages( "quantreg" ) > install.packages( "RobPer") > install.packages("devtools") > library("devtools") > install_github("kloke/hbrfit") > install.packages('http://www.stat.wmich.edu/mckean/Stat666/ > Pkgs/npsmReg2_0.1.1.tar.gz') > library(robustbase) > library(MASS) > library(quantreg) > library(RobPer) > library(hbrfit) > > # numeric variables > A=c(2,3,4,3,2,6,5,6,4,3,5,55,6,5,4,5,6,6,7,52) > B=c(45,43,23,47,65,21,12,7,18,29,56,45,34,23,12,65,4,34,54,23) > D=c(21,54,34,12,4,56,74,3,12,71,14,15,63,34,35,23,24,21,69,32) > > # Create a dataframe > BIO<-data.frame(A,B,D) > > # Create a list to store the results > lst<-list() > > # This statement does the repetitions (looping) > for(i in 1 :100) > { > > # randomize sampling seed > n=dim(BIO)[1] > p=0.667 > > # Sample size > sam=sample(1 :n,floor(p*n),replace=FALSE) > > # Sample training data > Training =BIO [sam,] > > # Sample testing data > Testing = BIO [-sam,] > > # Build the HBR model > HBR<-hbrfit(D ~ A+B) > > # Grab the coefficients > HBR_intercept <- as.numeric(HBR$coefficients[1]) > HBR_coefA <- as.numeric(HBR$coefficients[2]) > HBR_coefB <- as.numeric(HBR$coefficients[3]) > > # Predict response on testing data > Testing$pred <- HBR_intercept + HBR_coefA * Testing$A + HBR_coefB > *Testing$B > > # Get errors > Testing$sq_error <- (Testing$D-Testing$pred)^2 > Testing$abs_error <- abs(Testing$D-Testing$pred) > MedAe <- median(Testing$abs_error) > MedAe > MedAeSQ <-median(Testing$sq_error) > MedAeSQ > > lst[i]<-MedAe > } > lst > mean(lst) > lst$mean > > ###################### > > ______________________________________________ > 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. >[[alternative HTML version deleted]]
Daniel Nordlund
2018-May-08 19:58 UTC
[R] Average of results coming from B=100 repetitions (looping)
On 5/8/2018 12:26 PM, varin sacha via R-help wrote:> > Dear R-experts, > > Here below the reproducible example. I am trying to get the average of the 100 results coming from the "lst" function. I have tried lst$mean and mean(lst). It does not work. > Any help would be highly appreciated > > #################### > > ?## R script for getting MedAe and MedAeSQ from HBR model on Testing data > install.packages("robustbase") > install.packages( "MASS" ) > install.packages( "quantreg" ) > install.packages( "RobPer") > install.packages("devtools") > library("devtools") > install_github("kloke/hbrfit") > install.packages('http://www.stat.wmich.edu/mckean/Stat666/Pkgs/npsmReg2_0.1.1.tar.gz') > library(robustbase) > library(MASS) > library(quantreg) > library(RobPer) > library(hbrfit) > > # numeric variables > A=c(2,3,4,3,2,6,5,6,4,3,5,55,6,5,4,5,6,6,7,52) > B=c(45,43,23,47,65,21,12,7,18,29,56,45,34,23,12,65,4,34,54,23) > D=c(21,54,34,12,4,56,74,3,12,71,14,15,63,34,35,23,24,21,69,32) > > # Create a dataframe > BIO<-data.frame(A,B,D) > > # Create a list to store the results > lst<-list() ><<<snip>>> You need to spend some time with the Introduction to R that came with your R installation. First, lst in your example is not a function, it is a list. And as you found, the mean() function does not work on a list. Second, your "minimal reproducible" example could have been something like this lst <- list() for (i in 1:10) lst[i] <- i mean(lst) # does not work The documentation for mean, ?mean, says that it is looking for a numeric or logical vector. To convert your list to a numeric vector you could unlist() it. mean(unlist(lst)) Hope this is helpful, Dan -- Daniel Nordlund Port Townsend, WA USA
varin sacha
2018-May-08 20:32 UTC
[R] Average of results coming from B=100 repetitions (looping)
Many thanks for all of you for your responses. Best Regards, SV Le mardi 8 mai 2018 ? 21:58:37 UTC+2, Daniel Nordlund <djnordlund at gmail.com> a ?crit : On 5/8/2018 12:26 PM, varin sacha via R-help wrote:> >? Dear R-experts, > > Here below the reproducible example. I am trying to get the average of the 100 results coming from the "lst" function. I have tried lst$mean and mean(lst). It does not work. > Any help would be highly appreciated > > #################### > >? ?## R script for getting MedAe and MedAeSQ from HBR model on Testing data > install.packages("robustbase") > install.packages( "MASS" ) > install.packages( "quantreg" ) > install.packages( "RobPer") > install.packages("devtools") > library("devtools") > install_github("kloke/hbrfit") > install.packages('http://www.stat.wmich.edu/mckean/Stat666/Pkgs/npsmReg2_0.1.1.tar.gz') > library(robustbase) > library(MASS) > library(quantreg) > library(RobPer) > library(hbrfit) > > # numeric variables > A=c(2,3,4,3,2,6,5,6,4,3,5,55,6,5,4,5,6,6,7,52) > B=c(45,43,23,47,65,21,12,7,18,29,56,45,34,23,12,65,4,34,54,23) > D=c(21,54,34,12,4,56,74,3,12,71,14,15,63,34,35,23,24,21,69,32) > > # Create a dataframe > BIO<-data.frame(A,B,D) > > # Create a list to store the results > lst<-list() ><<<snip>>> You need to spend some time with the Introduction to R that came with your R installation.? First, lst in your example is not a function, it is a list. And as you found, the mean() function does not work on a list. Second, your "minimal reproducible" example could have been something like this lst <- list() for (i in 1:10) lst[i] <- i mean(lst)? # does not work The documentation for mean, ?mean, says that it is looking for a numeric or logical vector.? To convert your list to a numeric vector you could unlist() it. mean(unlist(lst)) Hope this is helpful, Dan -- Daniel Nordlund Port Townsend, WA? USA