Q1
ここで2つのことを間違っています。最初は一般的に悪いことです。一般に、モデルオブジェクトを掘り下げてコンポーネントをリッピングしないでください。この場合、抽出関数の使用方法を学習しますresid()
。この場合、あなたは何か役に立つを得ているが、あなたがそのようなからGLMなどのモデルオブジェクトの異なるタイプを、持っていた場合glm()
、その後、mod$residuals
含まれています作業の最後のIRLSから反復を残差を、あなたは一般的に何かありませんしたいです!
あなたが間違っている2番目のことは、私もキャッチしたものです。抽出した残差(使用した場合も抽出したはずの残差resid()
)は、生の残差または応答残差です。本質的にこれは、固定効果項のみを考慮に入れた、応答の近似値と観測値の差です。これらの値にはm1
、2つのモデル(~ time + x
)で固定効果(または、必要に応じて線形予測子)が同じであるため、それと同じ残留自己相関が含まれます。
指定した相関項を含む残差を取得するには、正規化された残差が必要です。これらを取得するには:
resid(m1, type = "normalized")
これ(および利用可能な他の種類の残差)については、?residuals.gls
以下で説明します。
type: an optional character string specifying the type of residuals
to be used. If ‘"response"’, the "raw" residuals (observed -
fitted) are used; else, if ‘"pearson"’, the standardized
residuals (raw residuals divided by the corresponding
standard errors) are used; else, if ‘"normalized"’, the
normalized residuals (standardized residuals pre-multiplied
by the inverse square-root factor of the estimated error
correlation matrix) are used. Partial matching of arguments
is used, so only the first character needs to be provided.
Defaults to ‘"response"’.
比較のために、生(応答)および正規化された残差のACFを以下に示します。
layout(matrix(1:2))
acf(resid(m2))
acf(resid(m2, type = "normalized"))
layout(1)
これが起こっている理由、および生の残差に相関項が含まれていない場所を確認するには、近似したモデルを検討します
y=β0+β1time+β2x+ε
どこ
ε∼N(0,σ2Λ)
そしてパラメータでAR(1)によって定義された相関行列である行列の非対角要素が値で満たされている、ここで、正の整数であります残差のペアの時間単位での分離。Λρ^ρ|d|d
によって返されるデフォルトである生の残差resid(m2)
は線形予測子部分のみからのものであるため、このビットから
β0+β1time+β2x
したがって、これらには含まれる相関項に関する情報は含まれていません。Λ
Q2
time
AR(1)(または他の構造)の「トレンド」への適合の欠如を説明する線形関数で非線形トレンドを適合させようとしているようです。もしあなたのデータがここで与えたサンプルデータのようなものなら、GAMを適合させて共変量の滑らかな関数を可能にします。このモデルは
y=β0+f1(time)+f2(x)+ε
そして、最初に (恒等行列なので独立残差)と仮定することを除いて、GLSと同じ分布を仮定します。このモデルは次を使用して適合できますΛ=I
library("mgcv")
m3 <- gam(y ~ s(time) + s(x), select = TRUE, method = "REML")
ここでselect = TRUE
、モデルがモデルからいずれかの項を削除できるようにするために、余分な収縮が適用されます。
このモデルは
> summary(m3)
Family: gaussian
Link function: identity
Formula:
y ~ s(time) + s(x)
Parametric coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 23.1532 0.7104 32.59 <2e-16 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Approximate significance of smooth terms:
edf Ref.df F p-value
s(time) 8.041 9 26.364 < 2e-16 ***
s(x) 1.922 9 9.749 1.09e-14 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
次のような滑らかな用語があります。
このモデルの残差もより適切に動作します(生の残差)
acf(resid(m3))
今度は注意が必要です。時系列の平滑化には問題があります。関数がどの程度滑らかであるか、波打つかを決定する方法は、データが独立していると想定しているためです。これが実際に意味することは、時間の滑らかな関数(s(time)
)が、基になるトレンドだけでなく、実際にランダムな自己相関エラーである情報に適合する可能性があることです。したがって、スムーザーを時系列データに適合させるときは十分に注意する必要があります。
これにはいくつかの方法がありますが、1つの方法は、モデルのフィッティングに切り替えることです。これにより、内部gamm()
で呼び出し、モデルlme()
に使用したcorrelation
引数を使用できるようになりますgls()
。ここに例があります
mm1 <- gamm(y ~ s(time, k = 6, fx = TRUE) + s(x), select = TRUE,
method = "REML")
mm2 <- gamm(y ~ s(time, k = 6, fx = TRUE) + s(x), select = TRUE,
method = "REML", correlation = corAR1(form = ~ time))
s(time)
これらのデータには識別可能性の問題があるため、自由度を修正する必要があることに注意してください。モデルは、波状s(time)
でAR(1)なし()、または線形(1自由度)で強力なAR(1)()である可能性があります。したがって、基になるトレンドの複雑さについて、経験に基づいた推測を行います。(このダミーデータにはあまり時間をかけませんでしたが、データを見て、時間の変動性に関する既存の知識を使用して、スプラインの適切な自由度数を決定する必要があります。)ρ > > 0.5ρ=0s(time)
ρ>>.5
AR(1)を使用したモデルは、AR(1)を使用しないモデルと比べて大幅な改善はありません。
> anova(mm1$lme, mm2$lme)
Model df AIC BIC logLik Test L.Ratio p-value
mm1$lme 1 9 301.5986 317.4494 -141.7993
mm2$lme 2 10 303.4168 321.0288 -141.7084 1 vs 2 0.1817652 0.6699
$ \ hat {\ rho}}の推定値を見ると、
> intervals(mm2$lme)
....
Correlation structure:
lower est. upper
Phi -0.2696671 0.0756494 0.4037265
attr(,"label")
[1] "Correlation structure:"
どこPhi
私はと呼ばれるものです。したがって、0は可能な値です。推定値はゼロよりわずかに大きいため、モデルの適合にほとんど影響を与えないため、残留自己相関を仮定する強い先験的な理由がある場合は、モデルに残しておくことができます。ρρρ