0

ある範囲の列で同じ説明変数を使用するR関数を作成しました。glmこの関数を使用しましたsvyglmが、調査パッケージから同じことを行う必要があります。私が抱えている主な問題は、列名が好きではないため、のようsvyglm(Data[,i]~explanatoryVariables)に使用してループを構築できないことです(ただし、ループでは非常に実用的です)。glm

たとえば、あなたがしようとすると

library(survey)
data(api)
dstrat<-svydesign(id=~1,strata=~stype, weights=~pw, data=apistrat, fpc=~fpc)
summary(svyglm(api00~ell+meals+mobility, design=dstrat))

すべてが正常ですが、列番号(ここでは13)を使用していくつかの従属変数をループしたい場合は、エラーが発生します

summary(svyglm(apistrat[,13]~ell+meals+mobility,data=apistrat, design=dstrat))

誰かがこれを回避する方法を知っていますか?簡単な例を示すために(統計的精度やリンク関数を気にしないでください)、通常はこれと同等のことを達成する必要がありますが、代わりにglm使用しますsvyglm

for(i in (12:15)){
print(glm(apistrat[,i]~ ell+meals,data=apistrat)$aic)
}
4

1 に答える 1

2

as.formula評価のために適切な列を貼り付けるためにを使用する必要があります。私はあなたのケースのためにカスタム関数を作成しました:

mysvy <- function(data, columns, ...) {
    model <- lapply(as.list(columns), function(x) {
          summary(svyglm(as.formula(paste0(names(data)[x], "~ell+meals+mobility")), 
            data = data, ...))
        })
    return(model)
}

次に、関数を介して目的の列を実行できます。

# To run columns 13 - 15 and get the results into a list
results <- mysvy(apistrat, 13:15, design = dstrat)
# should return a list of 3. results[[1]] to see the first
于 2012-09-24T22:59:36.890 に答える