[R] step.gam with a list of data frames

From: Kim Vanselow <Vanselow_at_gmx.de>
Date: Tue, 03 May 2011 18:10:52 +0200


Dear R-helpers,
I used the step.gam function (package gam, Trevor Hastie) on a data frame without problems. Then I created a list of several bootstrap samples from this data frame. Now I want to use the step.gam function on this list using a for-loop. The code is working well until the step.gam function starts. Step.gam is starting but then suddenly breaks (see error below). However, if I replace the for-loop (see below) the whole thing is working well.

for-loop with which the code does not work:

for(i in 1:4){
fit_list[[i]] <- gam(dom_teresken ~ 1, family = poisson, data = Pamir_res[[i]]) }

Replace this with:

fit_list[[1]] <- gam(dom_teresken ~ 1, family = poisson, data = Pamir_res[[1]])
fit_list[[2]] <- gam(dom_teresken ~ 1, family = poisson, data = Pamir_res[[2]])
fit_list[[3]] <- gam(dom_teresken ~ 1, family = poisson, data = Pamir_res[[3]])
fit_list[[4]] <- gam(dom_teresken ~ 1, family = poisson, data = Pamir_res[[4]])

Now everything works well. But I have to use the loop as I want to use much more than only 4 bootstrap samples.

This is the error message:

Start:  dom_teresken ~ 1; AIC= 516.6801 
Trial:  dom_teresken ~  ALTITUDE + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1; AIC= 512.2938 
Trial:  dom_teresken ~  1 + SLOPE + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1; AIC= 495.0212 
Trial:  dom_teresken ~  1 + 1 + SOUTH_EXPOSEDNESS + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1; AIC= 486.8359 
Trial:  dom_teresken ~  1 + 1 + 1 + WEST_EXPOSEDNESS + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1; AIC= 529.8005 
Trial:  dom_teresken ~  1 + 1 + 1 + 1 + DISTANCE_TO_ISOBATH + 1 + 1 + 1 + 1 + 1 + 1 + 1Error in Pamir_res[[i]] : subscript out of bounds

This is my full code:

# take bootstrap samples
require(MIfuns) # resample functions
Pamir_res <- resample(Pamir, names= 1:4, replace=TRUE) # take n bootstrap # samples from data = Pamir

# calculate gam for each bootstrap sample

fit_list <- vector(4, mode = "list") # create empty list

for(i in 1:4){
fit_list[[i]] <- gam(dom_teresken ~ 1, family = poisson, data = Pamir_res[[i]]) }

gam.scope = list(

~ 1 + ALTITUDE + s(ALTITUDE, 2),
~ 1 + SLOPE + s(SLOPE, 2),
~ 1 + SOUTH_EXPOSEDNESS + s(SOUTH_EXPOSEDNESS, 2),
~ 1 + WEST_EXPOSEDNESS + s(WEST_EXPOSEDNESS, 2),
~ 1 + DISTANCE_TO_ISOBATH + s(DISTANCE_TO_ISOBATH, 2),
~ 1 + UTM_NORTHING + s(UTM_NORTHING, 2),
~ 1 + UTM_EASTING + s(UTM_EASTING, 2),
~ 1 + DISTANCE_TO_SETTLEMENT, s(DISTANCE_TO_SETTLEMENT, 2),
~ 1 + NDVI_Rededge_R_Mean + s(NDVI_Rededge_R_Mean, 2),
~ 1 + NDVI_IR_Rededge_t_Mean + s(NDVI_IR_Rededge_t_Mean, 2),
~ 1 + Bd_5_Mean + s(Bd_5_Mean, 2),
~ 1 + Bd_1t_Mean + s(Bd_1t_Mean, 2))

fit_boot <- vector(4, mode = "list") # create empty list

for(i in 1:4){
 fit_boot[[i]] <- step.gam(fit_list[[i]], scope = gam.scope, direction = "both", trace = TRUE) }

I really tried to find suggestions on the internet and in nabble. Unfortunately I could not solve the problem. Please help me!

Thank you very much,
Kim

--

______________________________________________
R-help_at_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.
Received on Thu 05 May 2011 - 06:25:11 GMT

Archive maintained by Robert King, hosted by the discipline of statistics at the University of Newcastle, Australia.
Archive generated by hypermail 2.2.0, at Thu 05 May 2011 - 07:00:06 GMT.

Mailing list information is available at https://stat.ethz.ch/mailman/listinfo/r-help. Please read the posting guide before posting to the list.

list of date sections of archive