混合モデルの経時変化に対するベースラインの影響?


7

いくつかのサンプル内で、混合モデルを使用して、この結果のベースライン値に依存する時間の経過に伴う結果の変化をモデル化することが可能かどうか、またどのように可能かと思っていましたか?

たとえば、同じ知識グループが同じグループの人々に5回実行される状況を想像してみてください。質問は常に同じであるため、学生は時間の経過とともに正しい答えを学び、各行政機関でより高いスコアを獲得します。ただし、そもそもスコアが高い人は、スコアが低い人よりも変化が少ないでしょう。したがって、変化率がベースライン値に依存していることは明らかです。

混合モデルでは、一部の学生では他の学生よりも変化が大きいという事実を説明するために、ランダムな切片に加えて時間のランダムな勾配を含めることができることを知っています。しかし、最初の測定値をベースライン共変量(およびその時間との相互作用)として含めることは不可能または意味がないと私は思いますか?いずれにせよ、私には「感じ」られない。しかし、その一方で、固定効果を使用してベースライン値の効果を明示的にモデル化することは不可能だと私の心を揺さぶります。私はこれについて多少混乱していることを認めなければなりません。任意の助けをいただければ幸いです。


なぜそれができないのでしょうか?最も標準的な反復測定モデルの1つは、従属変数としての結果(絶対値またはベースラインからの変化)、および評価時間の係数、ベースラインの共変量、および評価の相互作用によるベースライン(通常、非構造化共分散行列と分母の次数) Kenward-Rogers法を使用して計算された自由度)。
ビョルン


@Björn私の留保は、結果データの一部が独立変数としても使用され、直感的には(たとえば、影響の推定や解釈に関して)問題があるように見えるという事実に基づいています。それとも、あなたが参照しているモデルは、ベースライン観測を結果データから除外しますか?
h_bauer

1
@AndyW私は以前このスレッドを部分的に読んだことがあり、率直に言って、混合モデルへの接続を実際に確立できませんでした。別のショットをお
見せし

モデルに含めると、結果としてモデル化されないことは確かです。
ビョルン

回答:


7

これは成長モデルのシナリオのようです。次の変数があるとします。

  • occasion:値をとる12345、テストが行われたことを契機を反映する1最初の、またはベースラインです。
  • ID:各参加者の識別子。
  • score:このテスト機会におけるこの参加者のテストスコア。

のランダムインターセプトIDは、さまざまなベースラインを処理します(十分な参加者がいることを条件とします)。

したがって、これらのデータの単純な線形混合効果モデルは次のlme4とおりです(構文を使用):

score ~ occasion + (1|ID)

または

score ~ occasion + (occasion|ID)

後者では、参加者間で機会の直線的な傾きを変えることができます

ただし、OPの特定の例では、score変数がテストの最大スコアによって制限されるという追加の問題があります。これを可能にするには、非線形成長に対応する必要があります。これはさまざまな方法で実現できますが、最も簡単なのは、モデルに2次項と3次項を追加することです。

score ~ occasion + I(occasion^2) + I(occasion^3) + (1|ID)

おもちゃの例を見てみましょう:

require(lme4)
require(ggplot2)

dt2 <- structure(list(occasion = c(0, 1, 2, 3, 4, 0, 1, 2, 3, 4, 0, 1, 2, 3, 4, 0, 1, 2, 3, 4, 0, 1, 2, 3, 4, 0, 1, 2, 3, 4), score = c(55.5, 74.5, 92.5, 97.5, 98.5, 54.5, 81.5, 94.5, 97.5, 98.5, 47.5, 68.5, 86.5, 96.5, 98.5, 56.5, 86.5, 91.5, 97.5, 98.5, 60.5, 84.5, 95.5, 97.5, 99.5, 73.5, 87.5, 96.5, 98.5, 99.5), ID = structure(c(1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 3L, 4L, 4L, 4L, 4L, 4L, 5L, 5L, 5L, 5L, 5L, 6L, 6L, 6L, 6L, 6L), .Label = c("1", "2", "3", "4", "5", "6"), class = "factor")), .Names = c("occasion", "score", "ID"), row.names = c(25L, 26L, 27L, 28L, 29L, 31L, 32L, 33L, 34L, 35L, 37L, 38L, 39L, 40L, 41L, 43L, 44L, 45L, 46L, 47L, 49L, 50L, 51L, 52L, 53L, 55L, 56L, 57L, 58L, 59L), class = "data.frame")

m1 <- lmer(score~occasion+(1|ID),data=dt2)

fun1 <- function(x) fixef(m1)[1] + fixef(m1)[2]*x

ggplot(dt2,aes(x=occasion,y=score, color=ID)) + geom_line(size=0.65) + geom_point() +
 stat_function(fun=fun1, geom="line", size=1, colour="black")

ここに画像の説明を入力してください

ここでは、5回連続して測定された6人の参加者のプロットがあり、黒い実線で固定効果をプロットしています。明らかに、これはこれらのデータに適したモデルではないため、データを中央揃えして共線性を低減した後、2次項、次に3次項を導入します。

dt2$occasion <- dt2$occasion - mean(dt2$occasion)

m2 <- lmer(score~occasion + I(occasion^2) + (1|ID),data=dt2)
fun2 <- function(x) fixef(m2)[1] + fixef(m2)[2]*x + fixef(m2)[3]*(x^2)

m3 <- lmer(score~occasion + I(occasion^2) + I(occasion^3) + (1|ID),data=dt2)
fun3 <- function(x) fixef(m3)[1] + fixef(m3)[2]*x + fixef(m3)[3]*(x^2) + fixef(m3)[4]*(x^3)


p2 <- ggplot(dt2,aes(x=occasion,y=score, color=ID)) + geom_line(size=0.5) + geom_point()

p2 + stat_function(fun=fun2, geom="line", size=1, colour="black")

ここに画像の説明を入力してください

ここで、2次モデルは線形のみのモデルよりも明らかに改善されていますが、最終測定のスコアを過小評価し、以前のモデルの過大評価のため、理想的ではありません。

一方、3次モデルは非常にうまく機能しているように見えます。

p2 + stat_function(fun=fun3, geom="line", size=1, colour="black")

ここに画像の説明を入力してください

もう少し洗練されたアプローチは、上限を明示的に認識し、(たとえば)ロジスティック成長曲線モデルを使用することです。これを達成する1つの方法は、結果を(上限の)比率に変換し、たとえばとし、この比率のロジットを線形混合効果モデルの結果としてモデル化することです。 。上限を認識することに加えて、これには、変換されていないデータの残差の不均一性をモデル化するという追加の利点があります。これは、連続するテスト(結果がより良くなると想定)にわたって分散が少なくなる可能性があるためです。ππ/(1π

これを実際に実行すると、予想どおり、データの全体的な傾向が非常によくモデル化されます。

pi <- dt2$score/100
dt2$logitpi <- log(pi/(1-pi))

m0 <- lmer(logitpi~occasion+(1|ID),data=dt2)
funlogis <- function(x) 100*exp(fixef(m0)[1] + fixef(m0)[2]*x)/(1+exp(fixef(m0)[1] + fixef(m0)[2]*x))
p2 + stat_function(fun=funlogis, geom="line", size=0.5, colour="black")

ここに画像の説明を入力してください

以下は、一緒にプロットされた3次モードとロジスティック成長モデルを示していますが、両者の違いはほとんどありませんが、前述のように、不等分散性の問題のためにロジスティック成長モデルを選択する場合があります。

p2 +  stat_function(fun=fun3, geom="line", size=1, colour="black")  +
stat_function(fun=funlogis, geom="line", size=1, colour="blue")

あ

さらに洗練されたアプローチは、ロジスティック成長曲線が明示的にモデル化される非線形混合効果モデルを使用して、ロジスティック関数自体のパラメーターをランダムに変化させることです。


詳細な例をたくさんありがとう!特にスケールパーセンテージのロジット変換についてのポイントは、私が考えていなかった良いポイントです。ランダムな勾配は成長曲線の変動を吸収しますが、成長率がベースラインスコアによって決定されるという事実には明示的に対処していません。スケッチしたモデルで、何らかの「ベースラインスコア*時間」の相互作用を含めることが何らかの方法で可能だと思いますか?それともこれはまったく賢明ですか?
h_bauer
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.