Hello I want to batch job the calculation of many GLM-models, extract some values and store them in a file. Almost everything in the script below works (read file, extract values and write them to file) except I fail in indexing the GLM with the modelstructure it should run. Running GLM's conventionally is no problem. Conventionally a GLM is calculated as: -------------------------------------- glm(ZlogHRS ~ ZRi+ZE+ZPROX_MN+ZED+ZAlwd+ZT2+ZW+ZN+Sex+y, family = gaussian, data=t.data) (just a note: dependent variable is ZlogHRS, while the others are indepent variables) Desired way: sequentially run GLM --------------------------------- I want R to take the model structure to take from a vector called "modelstructure" and paste it into the GLM like: glm(modelstructure[i], family = gaussian, data=t.data). It would considerably ease my workload if there is a solution to the indexing problem within a GLM. I appreciate any hint. Best regards Lukas p.s. my R skills are rather poor ----------------------------------------START R-CODE----------------------------------- # Read file t.url <- "C://HR_calculations/2005_2006/HR_SIZE/Kandidatenmodelle_Berechnung/inputfiles/" t.tuti <- read.table(paste(t.url, "All_animals.txt", sep=""),header=T) collect.results <- function(x) { #resets vectors which will be filled i <- 0 AICA <- NA; #put models names hierarchically in vector modelnames <- c("1=global", "2=biotic1", "3=biotic2", "4=abiotic") #keep track of changes in model names and number for (i in 1:length(modelnames)) #model structure of the four models given for all models to run #global modelstructure <- c( "ZlogHRS ~ ZRi+ZE+ZPROX_MN+ZED+ZAlwd+ZT2+ZW+ZN+Sex+y", #biotic1 "ZlogHRS ~ ZRi", #biotic2 "ZlogHRS ~ ZPROX_MN", #abiotic "ZlogHRS ~ ZE") ts.model <- glm(modelstructure[i], family = gaussian, data=t.data) # Extracts some mode results n[i] <- length(resid(ts.model)) AICA[i] <- AIC(ts.model) } #Writes results to data file x = data.frame( modelnames, n, AICA) write.table(x, paste(t.url, file="Results.txt"), sep="\t", quote=F) ----------------------------------------END R-CODE----------------------------------- ??? Lukas Indermaur, PhD student eawag / Swiss Federal Institute of Aquatic Science and Technology ECO - Department of Aquatic Ecology ?berlandstrasse 133 CH-8600 D?bendorf Switzerland Phone: +41 (0) 71 220 38 25 Fax : +41 (0) 44 823 53 15 Email: lukas.indermaur at eawag.ch www.lukasindermaur.ch
as.formula(modelstructure[i]) in the glm function>>> "Indermaur Lukas" <Lukas.Indermaur at eawag.ch> 01/11/07 7:34 PM >>>Hello I want to batch job the calculation of many GLM-models, extract some values and store them in a file. Almost everything in the script below works (read file, extract values and write them to file) except I fail in indexing the GLM with the modelstructure it should run. Running GLM's conventionally is no problem. Conventionally a GLM is calculated as: -------------------------------------- glm(ZlogHRS ~ ZRi+ZE+ZPROX_MN+ZED+ZAlwd+ZT2+ZW+ZN+Sex+y, family = gaussian, data=t.data) (just a note: dependent variable is ZlogHRS, while the others are indepent variables) Desired way: sequentially run GLM --------------------------------- I want R to take the model structure to take from a vector called "modelstructure" and paste it into the GLM like: glm(modelstructure[i], family = gaussian, data=t.data). It would considerably ease my workload if there is a solution to the indexing problem within a GLM. I appreciate any hint. Best regards Lukas p.s. my R skills are rather poor ----------------------------------------START R-CODE----------------------------------- # Read file t.url <- "C://HR_calculations/2005_2006/HR_SIZE/Kandidatenmodelle_Berechnung/inputfiles/" t.tuti <- read.table(paste(t.url, "All_animals.txt", sep=""),header=T) collect.results <- function(x) { #resets vectors which will be filled i <- 0 AICA <- NA; #put models names hierarchically in vector modelnames <- c("1=global", "2=biotic1", "3=biotic2", "4=abiotic") #keep track of changes in model names and number for (i in 1:length(modelnames)) #model structure of the four models given for all models to run #global modelstructure <- c( "ZlogHRS ~ ZRi+ZE+ZPROX_MN+ZED+ZAlwd+ZT2+ZW+ZN+Sex+y", #biotic1 "ZlogHRS ~ ZRi", #biotic2 "ZlogHRS ~ ZPROX_MN", #abiotic "ZlogHRS ~ ZE") ts.model <- glm(modelstructure[i], family = gaussian, data=t.data) # Extracts some mode results n[i] <- length(resid(ts.model)) AICA[i] <- AIC(ts.model) } #Writes results to data file x = data.frame( modelnames, n, AICA) write.table(x, paste(t.url, file="Results.txt"), sep="\t", quote=F) ----------------------------------------END R-CODE----------------------------------- ??? Lukas Indermaur, PhD student eawag / Swiss Federal Institute of Aquatic Science and Technology ECO - Department of Aquatic Ecology ?berlandstrasse 133 CH-8600 D?bendorf Switzerland Phone: +41 (0) 71 220 38 25 Fax : +41 (0) 44 823 53 15 Email: lukas.indermaur at eawag.ch www.lukasindermaur.ch ______________________________________________ R-help at stat.math.ethz.ch 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.
>From ?glm:formula: a symbolic description of the model to be fit. The details of model specification are given below. which could be clearer. It needs to be a object of type 'formula'. I believe as.formula(modelstructure[i]) will do what you want (but your posting has come out rather awkwardly laid out in double spacing). On Thu, 11 Jan 2007, Indermaur Lukas wrote:> Hello > > I want to batch job the calculation of many GLM-models, extract some values and store them in a file. Almost everything in the script below works (read file, extract values and write them to file) except I fail in indexing the GLM with the modelstructure it should run. Running GLM's conventionally is no problem. > > > > Conventionally a GLM is calculated as: > > -------------------------------------- > > glm(ZlogHRS ~ ZRi+ZE+ZPROX_MN+ZED+ZAlwd+ZT2+ZW+ZN+Sex+y, family = gaussian, data=t.data) > > (just a note: dependent variable is ZlogHRS, while the others are indepent variables) > > > > Desired way: sequentially run GLM > > --------------------------------- > > I want R to take the model structure to take from a vector called "modelstructure" and paste it into the GLM like: > > glm(modelstructure[i], family = gaussian, data=t.data). > > It would considerably ease my workload if there is a solution to the indexing problem within a GLM. I appreciate any hint. > > Best regards > > Lukas > > p.s. > > my R skills are rather poor > > > > ----------------------------------------START R-CODE----------------------------------- > > # Read file > > t.url <- "C://HR_calculations/2005_2006/HR_SIZE/Kandidatenmodelle_Berechnung/inputfiles/" > > t.tuti <- read.table(paste(t.url, "All_animals.txt", sep=""),header=T) > > > > collect.results <- function(x) { > > #resets vectors which will be filled > > i <- 0 > > AICA <- NA; > > > > #put models names hierarchically in vector > > modelnames <- c("1=global", "2=biotic1", "3=biotic2", "4=abiotic") #keep track of changes in model names and number > > for (i in 1:length(modelnames)) > > #model structure of the four models given for all models to run > > #global > > modelstructure <- c( > > "ZlogHRS ~ ZRi+ZE+ZPROX_MN+ZED+ZAlwd+ZT2+ZW+ZN+Sex+y", > > #biotic1 > > "ZlogHRS ~ ZRi", > > #biotic2 > > "ZlogHRS ~ ZPROX_MN", > > #abiotic > > "ZlogHRS ~ ZE") > > > > ts.model <- glm(modelstructure[i], family = gaussian, data=t.data) > > > > # Extracts some mode results > > n[i] <- length(resid(ts.model)) > > AICA[i] <- AIC(ts.model) > > } > > #Writes results to data file > > x = data.frame( > > modelnames, n, AICA) > > write.table(x, paste(t.url, file="Results.txt"), sep="\t", quote=F) > > ----------------------------------------END R-CODE----------------------------------- > > > > > > > > > ??? > Lukas Indermaur, PhD student > eawag / Swiss Federal Institute of Aquatic Science and Technology > ECO - Department of Aquatic Ecology > ?berlandstrasse 133 > CH-8600 D?bendorf > Switzerland > > Phone: +41 (0) 71 220 38 25 > Fax : +41 (0) 44 823 53 15 > Email: lukas.indermaur at eawag.ch > www.lukasindermaur.ch > > ______________________________________________ > R-help at stat.math.ethz.ch 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. >-- Brian D. Ripley, ripley at stats.ox.ac.uk Professor of Applied Statistics, http://www.stats.ox.ac.uk/~ripley/ University of Oxford, Tel: +44 1865 272861 (self) 1 South Parks Road, +44 1865 272866 (PA) Oxford OX1 3TG, UK Fax: +44 1865 272595