0

3 か月の期間に基づいていくつかのデータ フレームをサブセット化し、jfm (1 月から 3 月)、fma (2 月から 4 月)、mam (3 月から 5 月) などの名前を付けました。ond (10 月から 12 月) までです。いくつかの変数をリグレッサーとして使用して、これらすべてのデータに対して同様の分析を実行したいと考えています。以下に、汚染物質の 1 つをリグレッサーとして使用して、2 つのサブセット データ フレームの 1 つに対して分析を実行する方法を示します。モデルに個別に入力されたすべての汚染物質 (pm10median、pm25median、o3median、および so2median) の分析を実行したいと考えています。すべてのデータ フレームに対してこの分析を行うにはどうすればよいですか?

library(gamair) 
library(mgcv)
data(chicago) 
chicago$date<-seq(from=as.Date("1987-01-01"), to=as.Date("2000-12-31"),length=5114)


chicago$month<-as.numeric(format(chicago$date,"%m")) ## create month
jfm <- subset(chicago, month %in% c(1:3) )      ## subset data for January to March
fma <- subset(chicago, month %in% c(2:4) )  ## February to April
mam <- subset(chicago, month %in% c(3:5) )  ## March to may


jfm$trend<-seq(dim(jfm)[1])   ## cretae a trend for specific df based on dimension of the df
fma$trend<-seq(dim(fma)[1])   ## trend for df fma


## Regress each pollutant separately on death for the first subset

model1<-gam(death ~  pm10median + s(trend,k=21)+ s(tmpd,k=6) ,family=quasipoisson,na.action=na.omit,data=jfm) 

model2<-gam(death ~  pm10median + s(trend,k=21)+ s(tmpd,k=6) ,family=quasipoisson,na.action=na.omit,data=fma) 
4

1 に答える 1

0
# create a function that defines the exact regression
# you want to run on all three-month data sets
fun <- 
    function( y , x ){

        # store each of the regression outputs into an object
        a <- gam(
            death ~  pm10median + s(trend,k=21)+ s(tmpd,k=6) ,
            family = quasipoisson , 
            na.action = na.omit ,
            data = x[ x$month %in% y , ]
        ) 
        b <- gam(
            death ~  pm25median + s(trend,k=21)+ s(tmpd,k=6) ,
            family = quasipoisson , 
            na.action = na.omit ,
            data = x[ x$month %in% y , ]
        ) 

        # return each of the regressions as a list
        list( a , b )
    }

# define which three-month groups you want to run it on
months <- cbind( 1:10 , 2:11 , 3:12 )

# now just run the function for each row in `months`
results <- apply( months , 1 , fun , x = chicago )

# look at the whole thing
results

# extract jfm, for example
jfm <- results[[1]]

# extract fma (and print it to the screen as well)
( fma <- results[[2]] )
于 2013-02-05T09:36:27.973 に答える