縦断的データからグループ化(軌跡)を見つける方法は?


11

環境

質問を少し拡張する前に、シーンを設定したいと思います。

私は縦断的なデータを持ち、約3か月ごとに被験者を測定しました。主な結果は5から14の範囲の数値(連続1dpまで)であり、(すべてのデータポイントの)バルクは7から10の間です。スパゲッティプロット(x軸に年齢があり、各人の線が表示されている)は、1500を超える被験者がいるため明らかに混乱していますが、年齢が高くなると値が高くなる傾向があります(これは既知です)。

幅広い質問:まず、トレンドグループ(高いレベルから始まり高いレベルに留まっているグループ、低いレベルから低いレベルに留まっているグループ、低いレベルから始まって高いレベルに上昇しているグループなど)を特定してから、 「トレンドグループ」のメンバーシップに関連する個々の要素を確認します。

ここでの私の質問は、特に最初の部分、傾向によるグループ化に関係しています。

質問

  • 個々の縦軌道をどのようにグループ化できますか?
  • これを実装するにはどのソフトウェアが適していますか?

SASのProc Trajと同僚が提案したM-Plusを調べましたが、他の考えについて知りたいと思います。


1
これは単なる出発点ですが、おそらくこの質問に対するいくつかの回答を確認してください:stats.stackexchange.com/questions/2777/…– Jeromy Anglim '25
07/25

Jeromyに感謝します。KMLオプションは興味深いです。Rにあることを考えると、私はアイデアが好きですが、「訪問1」とは対照的に、対象の訪問の年齢が異なることを考えると、自分のデータでフレームワークを使用できるかどうかはわかりません。 2 'などを訪問し、他の訪問は10回、他の訪問は50回以上...
nzcoops '25

kml パッケージを確認してください-必要な機能を提供しているようです。JoSSの論文で詳細に説明されています。また、kml3dkmlShape興味があるかもしれません。
radek

回答:


11

私が使用してきましたMfuzzRを経時的マイクロアレイデータセットをクラスタリングします。Mfuzzは「ソフトクラスタリング」を使用しています。基本的に、個人は複数のグループに参加できます。

@Andyがコメントで指摘しているように、元の論文はCTNデータを使用しています。しかし、私はそれがあなたの離散データに対してはうまくいくはずだと思います。特に、データセットを調査しているだけなので。Rの簡単な例を次に示します。

##It's a bioconductor package
library(Mfuzz)
library(Biobase)

## Simulate some data
## 6 time points and 90 individuals
tps = 6;cases = 90
d = rpois(tps*cases, 1)  ##Poisson distribution with mean 1
m = matrix(d, ncol=tps, nrow=cases)

##First 30 individuals have increasing trends
m[1:30,] = t(apply(m[1:30,], 1, cumsum))

##Next 30 have decreasing trends
##A bit hacky, sorry
m[31:60,] = t(apply(t(apply(m[31:60,], 1, cumsum)), 1, rev))

##Last 30 individuals have random numbers from a Po(1)

##Create an expressionSet object
tmp_expr = new('ExpressionSet', exprs=m)

##Specify c=3 clusters
cl = mfuzz(tmp_expr, c=3, m=1.25)
mfuzz.plot(tmp_expr,cl=cl, mfrow=c(2, 2))

次のプロットを与えます:

mfuzzクラスタリング


参考までに、これまで出会ったことがありませんでした。このクラスタリングアルゴリズムは、OPが言及したように、少数の分散データ(または二分データ)に適していますか?リファレンスペーパー(Futschik&Carlisle 2005)は、連続型に変換されたデータを使用しました。
アンディW

@アンディ:良い点。簡単なシミュレーションを含めました。すべてが問題ないように見えますが、より最適な解決策があるかもしれません。
csgillespie

@csgillespieに感謝します、これを試してみるつもりです。ちなみに、私のデータは離散的ではなく連続的です。質問が十分に明確でなかったか、それが回答のタイプミスであったかはわかりませんか?Mfuzzをインストールするには、Rをロールバックする必要があります。楽しみを始めましょう。
nzcoops 2011

@csgillespie-これはとてもクールです。現在、実際のデータをいくつか試してみています。グループの数を見積もる方法があるかどうか知っていますか?
マクロ

4

必要なことを行うMPLUSパッケージがあると思います。Psychometrikaにほぼ正確にこの主題についての論文があります

springerlink.com/content/25r110007g417187

データはバイナリであり、軌跡は確率軌跡です。著者は、潜在クラス分析(ペナルティ付き有限混合モデルを使用して実装)を使用して、軌道をグループ化します。また、筆者が約10年前に、Bengt Muthen(MPLUSの作成者)と同様の設定で(潜在的軌跡を使用して)潜在クラス分析について他の論文を書いたことも知っています。例えば、

http://onlinelibrary.wiley.com/doi/10.1111/j.0006-341X.1999.00463.x/abstract

結果がバイナリであることを除いて、あなたが話していることと非常によく似ています。継続的なケースの方がはるかに単純なので、逆方向の文献検索(つまり、これらの論文が参照する論文を参照)を行って、より正確に説明した内容に一致するものを見つけます。

詳細については、MPLUSの所有者に直接、必要なパッケージを使用するためにどのパッケージを使用する必要があるか尋ねてください。彼らは一般的にかなり迅速に対応し、非常に役に立ちます:

http://www.statmodel.com/cgi-bin/discus/discus.cgi

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.