2

を使用して、混合モデル ステートメントから固定効果を特定して削除する方法を自動化しようとしていlmerます。簡単に言えば、私のアプローチは、 を使用fixefして固定効果名を取得し、 を使用updateしてそれらをモデル ステートメントから削除することです。いくつかの障害に遭遇しました...

まず、固定因子が連続的でない場合fixefは、変数名に処理レベルが追加されて返されます (たとえば、およびlevels(variable1)=c("A","B","C")が返さvariable1Bvariable1Cます)。部分一致でこれを回避しようとしましたが、すべての場合に成功するとは限りません (以下を参照)。

第 2 に、交互作用がある場合、部分一致はバラバラになり、最初の項のみを識別します (たとえば、 のみvariable1が から返されvariable1:variableます)。これを回避する方法がわかりません。

コード例を次に示します。

#Create example data
set.seed(9)
data=data.frame(y=rnorm(100,5,10),y.binom=rbinom(100,1,0.5),
                y.poisson=rpois(100,5),fixed1=rnorm(100,20,100),
                fixed2=c("Treatment1","Treatment2"),covar=rnorm(100,20,100),
                rand1=LETTERS[1:2],
                rand2=c(rep("W",25),rep("X",25),rep("Y",25),rep("Z",25)))

library(lme4)

#Fit generalized linear mixed effects model
mod=glmer(y.poisson~fixed1*fixed2+covar+(1|rand2/rand1),family="poisson",data)
#Pull out names of fixed effects
fixef.names=do.call(rbind,lapply(1:length(names(fixef(mod))[-1]),function(j) {
  d=colnames(mod@frame)[pmatch(colnames(mod@frame),names(fixef(mod))[-1][j])>0]
  d[!is.na(d)] } ) )[,1]
# Generate null model (intercept and random effects only, no fixed effects)
null.mod=update(mod,paste(".~.-",paste(fixef.names,collapse="-"),sep=""))

どんな助けでも大歓迎です!

4

2 に答える 2

3

ほとんどの場合、組み込みfindbars()関数があります。lme4結果を逆解析する必要があります (結果はオブジェクトとして返されlanguageます)。それらを括弧で保護します。それらを数式に貼り付けます。しかし、これはうまくいくようです:

parens <- function(x) paste0("(",x,")")
onlyBars <- function(form) reformulate(sapply(findbars(form),
                                              function(x)  parens(deparse(x))),
                                              response=".")
onlyBars(formula(mod))
## . ~ (1 | rand1:rand2) + (1 | rand2)
update(mod,onlyBars(formula(mod)))
于 2013-11-06T18:03:11.160 に答える
0

1)単一の効果のみの場合:「変数」という名前をgsub-ingし、その後、フィッティングに使用されるデータフレーム内の何かに処理を一致させると、更新ステートメントに抽出/追加する正しい名前が得られますか?

2) 相互作用については、最初に : を使用して strsplit を実行してみてください。次に、出力の長さを確認します。>1 の場合、両方の変数を一致させ、必要に応じて更新を削除/追加します。関数としてはエレガントではありませんが、機能するはずです。

3) glmulti ライブラリを使用しないのはなぜですか? これはすでに自動化されています。すべての適合モデルが必要ない場合は、必要なモデルを抽出して先に進みます。ただし、すべての適合オブジェクトがオブジェクト構造に格納されます。

于 2013-11-06T15:14:49.257 に答える