Terwisscha van Scheltinga, A.
2009-Sep-22 16:14 UTC
[R] glm analysis repeated for 900 variables
Dear R users,
Could you help my with the following problem?
I want to repeat a glm analysis with 2 independent variables for all 900
variables (snps) in my data set. So, I want to check whether snp1 has a
different effect on my outcome variable in patients and
controls(phenotype). And repeat that for snp2 to snp900.
Is there an easy way to get a summary of the data, e.g. a list of P
values of all 900 variables?
I tried something with a loop:
for (i in 1:length(data)) { print (summary (glm
(outcome~data[[i]]*phenotype, data=data))) } # This works, but gives
900 written summaries
for (i in 1:length(data)) { coef (summary (glm
(outcome~data[[i]]*phenotype, data=data))) } # changing print to coef
gives no output
for (i in 1:length(data)) { glm.data <- glm
(outcome~data[[i]]*phenotype, data=data)) }
summary (glm.data)
# gives only output of the last variable
for (i in 1:length(data)) { glm.data[[i]] <- glm
(outcome~data[[i]]*phenotype, data=data)) }
summary (glm.data[[i]])
# gives only output of the last variable
Or should I use tapply or something like that? In what way?
Thanks!
Afke Terwisscha
email: aterwiss@umcutrecht.nl <mailto:aterwiss@umcutrecht.nl>
------------------------------------------------------------------------------
De informatie opgenomen in dit bericht kan vertrouwelijk zijn en is
uitsluitend bestemd voor de geadresseerde. Indien u dit bericht onterecht
ontvangt, wordt u verzocht de inhoud niet te gebruiken en de afzender direct
te informeren door het bericht te retourneren. Het Universitair Medisch
Centrum Utrecht is een publiekrechtelijke rechtspersoon in de zin van de W.H.W.
(Wet Hoger Onderwijs en Wetenschappelijk Onderzoek) en staat geregistreerd bij
de Kamer van Koophandel voor Midden-Nederland onder nr. 30244197.
Denk s.v.p aan het milieu voor u deze e-mail afdrukt.
------------------------------------------------------------------------------
This message may contain confidential information and is...{{dropped:14}}
Hi,
nvars <- 902
data <- as.data.frame(matrix(runif(100*nvars),ncol=nvars))
colnames(data)[901] <- c('phenotype')
colnames(data)[902] <- c('outcome')
### catch all aic values ###
res <- matrix(nrow=900,ncol=2)
for (i in 1:(length(data)-2)) {
res[i,1] <- names(data)[i]
res[i,2] <- glm(outcome~data[,i]*phenotype, data=data)$aic
}
res
> Dear R users,
>
> Could you help my with the following problem?
> I want to repeat a glm analysis with 2 independent variables for all 900
> variables (snps) in my data set. So, I want to check whether snp1 has a
> different effect on my outcome variable in patients and
> controls(phenotype). And repeat that for snp2 to snp900.
> Is there an easy way to get a summary of the data, e.g. a list of P
> values of all 900 variables?
>
> I tried something with a loop:
> for (i in 1:length(data)) { print (summary (glm
> (outcome~data[[i]]*phenotype, data=data))) } # This works, but gives
> 900 written summaries
>
>
> for (i in 1:length(data)) { coef (summary (glm
> (outcome~data[[i]]*phenotype, data=data))) } # changing print to coef
> gives no output
>
> for (i in 1:length(data)) { glm.data <- glm
> (outcome~data[[i]]*phenotype, data=data)) }
> summary (glm.data)
> # gives only output of the last variable
>
> for (i in 1:length(data)) { glm.data[[i]] <- glm
> (outcome~data[[i]]*phenotype, data=data)) }
> summary (glm.data[[i]])
> # gives only output of the last variable
>
> Or should I use tapply or something like that? In what way?
>
> Thanks!
>
> Afke Terwisscha
> email: aterwiss at umcutrecht.nl <mailto:aterwiss at umcutrecht.nl>
>
>
>
>
>
>
------------------------------------------------------------------------------
>
> De informatie opgenomen in dit bericht kan vertrouwelijk zijn en is
> uitsluitend bestemd voor de geadresseerde. Indien u dit bericht onterecht
> ontvangt, wordt u verzocht de inhoud niet te gebruiken en de afzender
direct
> te informeren door het bericht te retourneren. Het Universitair Medisch
> Centrum Utrecht is een publiekrechtelijke rechtspersoon in de zin van de
W.H.W.
> (Wet Hoger Onderwijs en Wetenschappelijk Onderzoek) en staat geregistreerd
bij
> de Kamer van Koophandel voor Midden-Nederland onder nr. 30244197.
>
> Denk s.v.p aan het milieu voor u deze e-mail afdrukt.
>
>
------------------------------------------------------------------------------
>
> This message may contain confidential information and is...{{dropped:14}}
>
> ______________________________________________
> 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.
>
>
> > On 23/09/2009, at 11:26 PM, Christian Schulz wrote: > > > Hi, > > > > > > nvars <- 902 > > data <- as.data.frame(matrix(runif(100*nvars),ncol=nvars)) > > colnames(data)[901] <- c('phenotype') > > colnames(data)[902] <- c('outcome') > > <snip> > > Just ***WHAT*** do you think the ``c( )'' is doing for you in > the construction ``c('phenotype')'' etc. ??? > > Such complete misunderstanding of what the c() does or is useful > for exasperates me, and is unfortunately very wide spread. If people > are going to use R, why don't they learn the basic syntax?> > cheers, > > Rolf Turner >Sorry! colnames(data)[901:902] <- c('phenotype','outcome') cheers, Christian