Hi Gustav,
Just change `summary(x)$coef` to `summary(x)$p.table`
I am pasting the code from the attachment.
library(gamair)
library(mgcv)
data(chicago)
library(splines)
chicago$date<-seq(from=as.Date("1987-01-01"),
to=as.Date("2000-12-31"),length=5114)
chicago$trend<-seq(dim(chicago)[1])
names(chicago) [2] <-"pm10"
names(chicago) [3] <-"pm25"
names(chicago) [4] <-"ozone"
names(chicago) [5] <-"so2"
names(chicago) [7] <-"temp"
chicago$trend<-seq(dim(chicago)[1])
chicago$year<-as.numeric(format(chicago$date,"%Y"))
chicago1<-subset(chicago, as.Date(date) < '1999-01-01')
year<- matrix(1987:1998, ncol=3, byrow=TRUE)
fun <-
function( y , x ){
a <- gam(
death ~ pm10 + s(trend,k=35) , poisson , na.action = na.omit , data = x[
x$year %in% y , ]
)
b<- gam(
death ~ ozone + s(trend,k=35), poisson , na.action = na.omit , data = x[
x$year %in% y , ]
)
c<- gam (
death ~ so2 + ns(trend,k=35) , poisson , na.action = na.omit , data = x[
x$year %in% y , ]
)
list( a , b ,c)
}
models<- apply(year, 1 , fun , x = chicago )
#solution
apply(1:length(models),function(i) lapply(models[[i]],function(x)
summary(x)$p.table[2,]))[[1]] #1st list component
#[[1]]
# Estimate Std. Error z value Pr(>|z|)
#6.054413e-04 1.474943e-04 4.104845e+00 4.045864e-05
#
#[[2]]
# Estimate Std. Error z value Pr(>|z|)
#0.0009999765 0.0003777224 2.6473846529 0.0081117027
#[[3]]
# Estimate Std. Error z value Pr(>|z|)
#5.643234e-03 9.023766e-04 6.253746e+00 4.007234e-10
res<-lapply(1:length(models),function(i)
do.call(rbind,lapply(models[[i]],function(x)
summary(x)$p.table[row.names(summary(x)$p.table)%in%c("pm10","ozone","so2"),c(1:2,4)])))
names(res)<-1:length(res)
res1<- lapply(res,function(i)
{row.names(i)<-c("pm10","ozone","so2");data.frame(i)})
library(abind)
res2<-abind(res1,along=1,hier.names=T) #gives a matrix
colnames(res2)[2:3]<- c("Std.Error","Pr(>|z|)")
res3<- do.call(rbind,lapply(res,function(i)
{row.names(i)<-c("pm10","ozone","so2");data.frame(i)}))
colnames(res3)[2:3]<- c("Std.Error","Pr(>|z|)")
str(res2)
#num [1:12, 1:3] 0.000605 0.001 0.005643 0.00059 0.000839 ...
#- attr(*, "dimnames")=List of 2
# ..$ : chr [1:12] "1.pm10" "1.ozone" "1.so2" "2.pm10" ...
# ..$ : chr [1:3] "Estimate" "Std.Error" "Pr(>|z|)"
str(res3)
#'data.frame': 12 obs. of 3 variables:
# $ Estimate : num 0.000605 0.001 0.005643 0.00059 0.000839 ...
# $ Std.Error: num 0.000147 0.000378 0.000902 0.000172 0.000427 ...
#$ Pr(>|z|) : num 4.05e-05 8.11e-03 4.01e-10 6.23e-04 4.96e-02 ...
res2
# Estimate Std.Error Pr(>|z|)
#1.pm10 0.0006054413 0.0001474943 4.045864e-05
#1.ozone 0.0009999765 0.0003777224 8.111703e-03
#1.so2 0.0056432338 0.0009023766 4.007234e-10
#2.pm10 0.0005899052 0.0001724085 6.226404e-04
#2.ozone 0.0008389801 0.0004272480 4.956676e-02
#2.so2 0.0032899751 0.0009475318 5.163027e-04
#3.pm10 0.0005398889 0.0001551911 5.035438e-04
#3.ozone 0.0023890220 0.0004082119 4.845107e-09
#3.so2 0.0049121476 0.0008818088 2.539574e-08
#4.pm10 0.0009341888 0.0001760271 1.113999e-07
#4.ozone 0.0005461742 0.0004253987 1.991731e-01
#4.so2 0.0055712219 0.0011123419 5.484117e-07
Hope it helps.
A.K.
________________________________
From: Gustav Sigtuna <[email protected]>
To: arun <[email protected]>
Sent: Sunday, February 17, 2013 5:49 AM
Subject: Re: Select components of a list
Dear Arun,
Thanks again. The script works perfectly for GLM. Strangely, it does not work
for GAM, although it has the same output for the linear part. I cannot figure
out the error message. I have attached the gam code and error message .
Thanks
On Sun, Feb 17, 2013 at 3:11 AM, arun <[email protected]> wrote:
HI Gustav,
>
>If you need the combined output:
>res<-lapply(1:length(models),function(i)
>do.call(rbind,lapply(models[[i]],function(x)
>summary(x)$coef[row.names(summary(x)$coef)%in%c("pm10","ozone","so2"),c(1:2,4)])))
> names(res)<-1:length(res)
>res1<-do.call(rbind,lapply(res,function(i)
>{row.names(i)<-c("pm10","ozone","so2");data.frame(i)}))
>names(res1)[2:3]<- c("Std.Error","Pr(>|z|)")
>res1
># Estimate Std.Error Pr(>|z|)
>#1.pm10 0.0005999185 0.0001486195 5.423004e-05
>#1.ozone 0.0010117294 0.0003792739 7.640816e-03
>#1.so2 0.0026595441 0.0009352046 4.457766e-03
>#2.pm10 0.0005720549 0.0001740368 1.012696e-03
>#2.ozone 0.0009128304 0.0004364390 3.647954e-02
>#2.so2 0.0028256121 0.0010150314 5.373144e-03
>#3.pm10 0.0005099552 0.0001559620 1.076462e-03
>#3.ozone 0.0023896044 0.0004109854 6.087769e-09
>#3.so2 0.0024097381 0.0009563814 1.174744e-02
>#4.pm10 0.0009285593 0.0001766520 1.468764e-07
>#4.ozone 0.0005455392 0.0004301502 2.047076e-01
>#4.so2 0.0017251400 0.0011635156 1.381552e-01
>A.K.
>
>
>
>
>
>
>
>________________________________
>From: Gustav Sigtuna <[email protected]>
>
>To: arun <[email protected]>
>Sent: Saturday, February 16, 2013 7:44 PM
>
>Subject: Re: Select components of a list
>
>
>Hi Arun,
>
>Thanks for taking your time to find a solution.
>
>I have attached a R script that will recreate a comparable list from publicly
>available data. My list is longer and created by various models than the one
>created here. However, the final output is similar to the one produced by
>script. My interest is to extract only the coefficients for pm10., ozone and
>so2 ( Estimate, Std. Error and p value) .
>
>Thanks
>
>
>
>
>
>
>On Fri, Feb 15, 2013 at 9:04 PM, arun <[email protected]> wrote:
>
>Dear Gustav,
>>Thank you for the data. Could you select a smaller subset of the list and
>>dput() that subset? Your data is useful, but I would have to recreate list
>>of lists from that to test and sometimes that may not accurate represent the
>>format in your list as it is the summary().
>>Arun
>>
>>
>>
>>
>>
>>
>>
>>________________________________
>>From: Gustav Sigtuna <[email protected]>
>>To: [email protected]
>>Sent: Friday, February 15, 2013 4:56 AM
>>Subject: Re: Select components of a list
>>
>>
>>
>>Hi Arun,
>>
>>Thanks for your help. Your mail landed in my spam folder and just saw it by
>>chance.
>>
>>I have attached a text file that contains the list of my model. It was
>>extremely long, thus I took out the last part which is think is more
>>important.
>>
>>
>>In brief I have an output from GAM model which resulted from analysis of
>>ozone at three time points on 12 data sets
>>
>>Thanks for your assistance
>>
>>
>>
>>
>>
>>On Wed, Feb 13, 2013 at 8:21 PM, <[email protected]> wrote:
>>
>>Dear Lungo,
>>>
>>>If you can email ([email protected]) me the `list` (dput(list)), I can
>>>take a look at it. Probably, you understand that my previous solution was
>>>just guesswork. With regards to GLM, GAM, it is good to check the structure
>>>of the list (str()). It gives information about whether a `generic` tool
>>>could be applied to extract them or not.
>>>Cheers.
>>>Arun
>>>
>>><quote author='Lungo'>
>>>Dear Arun, Your code and the example works fine. However my list is quite
>>>different from the one showed in your example. As I have shown in my
>>>question above I have 12 lists each having 3 lists underneath. I get the
>>>lists by different models (GLM, GAM ) but the output I aim to have is the
>>>estimates of the explanatory variable which is placed next to the intercept.
>>>Thus I am looking for a “generic” tool that would extract these lists.
>>></quote>
>>>Quoted from:
>>>http://r.789695.n4.nabble.com/Select-components-of-a-list-tp4658295p4658389.html
>>>
>>
>
______________________________________________
[email protected] 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.