2

生息地分布モデルを生成するために、生物の視覚的なトランセクト データを分析しようとしています。生物が観察されると、一定時間間隔でポイント データが収集されて追跡されます。これらの「フォロー」間の自己相関のために、私は Pirotta らのアプローチと同様の GAM-GEE アプローチを利用したいと考えています。2011 年、パッケージ「yags」および「splines」を使用 (http://www.int-res.com/abstracts/meps/v436/p257-272/)。彼らの R スクリプトはこちら (http://www.int-res.com/articles/suppl/m436p257_supp/m436p257_supp1-code.r) に示されています。私はこのコードを使用しましたが、成功は限られており、モデルが収束しないという複数の問題がありました。

以下は私のデータの構造です:

> str(dat2)

'data.frame':   10792 obs. of  4 variables:

 $ dist_slag       : num  26475 26340 25886 25400 24934 ...
 $ Depth           : num  -10.1 -10.5 -16.6 -22.2 -29.7 ...
$ dolphin_presence: int  0 0 0 0 0 0 0 0 0 0 ...


 $ block           : int  1 1 1 1 1 1 1 1 1 1 ...


> head(dat2)

  dist_slag    Depth dolphin_presence block
1  26475.47 -10.0934                0     1
2  26340.47 -10.4870                0     1
3  25886.33 -16.5752                0     1
4  25399.88 -22.2474                0     1



5  24934.29 -29.6797                0     1
6  24519.90 -26.2370                0     1

これが私のブロック変数の要約です(各ブロック内に自己相関が存在するグループの数を示します

> summary(dat2$block)
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
   1.00   39.00   76.00   73.52  111.00  148.00

ただし、Simon Wood 教授のパッケージと機能に精通しているため、パッケージ 'gamm4' を使用したいと思います。gamm4 が最も適切であると思われます。モデルにはバイナリ応答 (トランセクトに沿った生物の存在/不在) があることに注意することが重要です。gamm のヘルプでは、因子内の自己相関について次の例が提供されています。

## more complicated autocorrelation example - AR errors
## only within groups defined by `fac'
e <- rnorm(n,0,sig)
for (i in 2:n) e[i] <- 0.6*e[i-1]*(fac[i-1]==fac[i]) + e[i]
y <- f + e
b <- gamm(y~s(x,k=20),correlation=corAR1(form=~1|fac))

この例に続いて、データセットに使用したコードは次のとおりです

b <- gamm4(dolphin_presence~s(dist_slag)+s(Depth),random=(form=~1|block),  family=binomial(),data=dat)

ただし、出力 (summary(b$gam)) および特に summary(b$mer)) を調べると、結果の解釈方法がわからないか、グループ内の自己相関が考慮されているとは思えません。 .

> summary(b$gam)

Family: binomial 
Link function: logit 

Formula:
dolphin_presence ~ s(dist_slag) + s(Depth)

Parametric coefficients:


            Estimate Std. Error z value Pr(>|z|)   
    (Intercept)  -13.968      5.145  -2.715  0.00663 **
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 

Approximate significance of smooth terms:


               edf Ref.df Chi.sq  p-value    
s(dist_slag) 4.943  4.943  70.67 6.85e-14 ***
s(Depth)     6.869  6.869 115.59  < 2e-16 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 



R-sq.(adj) =  0.317glmer.ML score =  10504  Scale est. = 1         n = 10792
> 

> summary(b$mer)
Generalized linear mixed model fit by the Laplace approximation 


   AIC   BIC logLik deviance
 10514 10551  -5252    10504
Random effects:
 Groups Name         Variance Std.Dev.
 Xr     s(dist_slag) 1611344  1269.39 
 Xr.0   s(Depth)       98622   314.04 
Number of obs: 10792, groups: Xr, 8; Xr.0, 8



Fixed effects:
                 Estimate Std. Error z value Pr(>|z|)   
X(Intercept)      -13.968      5.145  -2.715  0.00663 **
Xs(dist_slag)Fx1  -35.871     33.944  -1.057  0.29063   
Xs(Depth)Fx1        3.971      3.740   1.062  0.28823   


---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 

Correlation of Fixed Effects:
            X(Int) X(_)F1
Xs(dst_s)F1  0.654       
Xs(Dpth)Fx1 -0.030  0.000
> 

「ブロック」変数の各一意の値内で自己相関が実際に考慮されていることを確認するにはどうすればよいですか? "summary(b$mer)" の出力を解釈する最も簡単な方法は何ですか?

結果は、「correlation=...」という用語なしで同じ変数とパラメーターを使用する通常の gam (パッケージ mgcv) とは異なり、何か異なることが起こっていることを示しています。

ただし、相関項 (季節) に別の変数を使用すると、同じ出力が得られます。

> dat2 <- data.frame(dist_slag = dat$dist_slag, Depth = dat$Depth, dolphin_presence = dat$dolphin_presence,

+ block = dat$block, season=dat$season)
 > head(dat2)
      dist_slag    Depth dolphin_presence block season
1  26475.47 -10.0934                0     1      F
2  26340.47 -10.4870                0     1      F

3  25886.33 -16.5752                0     1      F
4  25399.88 -22.2474                0     1      F
5  24934.29 -29.6797                0     1      F
6  24519.90 -26.2370                0     1      F

> summary(dat2$season)

   F    S 
3224 7568 


> b <- gamm4(dolphin_presence~s(dist_slag)+s(Depth),correlation=corAR1(1, form=~1 |   season), family=binomial(),data=dat2)
> summary(b$gam)

Family: binomial 
Link function: logit 


Formula:
dolphin_presence ~ s(dist_slag) + s(Depth)

Parametric coefficients:
            Estimate Std. Error z value Pr(>|z|)   
    (Intercept)  -13.968      5.145  -2.715  0.00663 **
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 


Approximate significance of smooth terms:
               edf Ref.df Chi.sq  p-value    
s(dist_slag) 4.943  4.943  70.67 6.85e-14 ***
s(Depth)     6.869  6.869 115.59  < 2e-16 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 


R-sq.(adj) =  0.317glmer.ML score =  10504  Scale est. = 1         n = 10792
> summary(b$mer)
Generalized linear mixed model fit by the Laplace approximation 
   AIC   BIC logLik deviance

 10514 10551  -5252    10504
Random effects:
 Groups Name         Variance Std.Dev.
 Xr     s(dist_slag) 1611344  1269.39 
 Xr.0   s(Depth)       98622   314.04 
Number of obs: 10792, groups: Xr, 8; Xr.0, 8


Fixed effects:
                 Estimate Std. Error z value Pr(>|z|)   
X(Intercept)      -13.968      5.145  -2.715  0.00663 **
Xs(dist_slag)Fx1  -35.871     33.944  -1.057  0.29063   
Xs(Depth)Fx1        3.971      3.740   1.062  0.28823   
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 

Correlation of Fixed Effects:
            X(Int) X(_)F1
Xs(dst_s)F1  0.654       
Xs(Dpth)Fx1 -0.030  0.000
> 

「ブロック」変数の各値内で相関が正しく許可されていることを確認したいだけです。ブロックの個々の値内に自己相関が存在する可能性があるが、ブロック間の独立性を仮定するとモデルを定式化するにはどうすればよいですか?

別のメモとして、大規模なモデル (変数が 2 より多い) のモデルが完成した後、次の警告メッセージも受け取ります。

Warning message:
 In mer_finalize(ans) : false convergence (8)
4

1 に答える 1

5
  • gamm4は、パラメーターを使用できないlme4の上に構築されます ( の基礎となる 、パッケージとは対照的です)。 バイナリ データを処理しますが、PQL を使用しますが、これは一般に のようなラプラス/GHQ 近似よりも精度が低くなります。引数が無視されていることを示す警告が表示されないのは残念です (!!) ( で引数を使用して簡単な例を試すと、警告が表示されますが、余分な引数が取得されている可能性があります)。中のどこかで飲み込んだ)。correlationnlmemgcv::gammmgcv::gamm gamm4/lme4correlationcorrelationlme4gamm4
  • 目的の自己相関構造 (「自己相関はブロックの各単一値内に存在できますが、ブロック間の独立性を前提としています」) は、相関構造がnlme(したがって でmgcv::gamm) コーディングされる方法とまったく同じです。
  • 私は を使用mcgv::gammし、可能であれば、既知の構造を持つシミュレートされたデータで試してみることをお勧めします (または、上記の補足資料で提供されているデータ セットを使用して、別のアプローチで定性的な結論を再現できるかどうかを確認してください)。
  • StackOverflow は素晴らしいですが、混合モデルの専門知識はおそらくもっとあります。r-sig-mixed-models@r-project.org
于 2012-05-03T14:44:03.730 に答える