No.04521 Rのmvpartによる生存時間データの分析法について  【坂上】 2007/10/12(Fri) 23:12

最近,Rを使い始めた初心者です。

Rのmvpartを使って,生存時間データの分析をしているのですが,下記のように
「次元数が正しくありません。」となって,エラーになってしまいます。
plotまでは,うまくいくのですが,textのところでエラーに,summary
を出そうとしてもエラーになってしまいます。
どなたか,原因のわかる方はいらっしゃいませんでしょうか。
よろしくお願いいたします。

> library(mvpart)
> library(survival)
> tree1 <- rpart(Surv(V2,V1)~V3+V4,data=X)
> plot.new()
> plot(tree1, uniform=TRUE , branch=0.7 , margin=0.05)
> text(tree1, use.n=TRUE)
以下にエラーyval[, 1] : 次元数が正しくありません
> summary(tree1)
Call:
rpart(formula = Surv(V2, V1) ~ V3 + V4, data = X)
n= 144

CP nsplit rel error xerror xstd
1 0.33009099 0 1.0000000 1.0216102 0.1290894
2 0.03180700 1 0.6699090 0.8114860 0.1236052
3 0.02557823 2 0.6381020 0.7571505 0.1081119
4 0.01639108 5 0.5590109 0.6921629 0.1044232
5 0.01000000 6 0.5426199 0.7196162 0.1162495
以下にエラーyval[, 2] : 次元数が正しくありません

No.04522 Re: Rのmvpartによる生存時間データの分析法について  【青木繁伸】 2007/10/13(Sat) 20:17

次元数が違うんでしょうねとしかいえません

エラーを再現できる最小限のデータを付けて,お問い合わせいただければ原因が分かるかも知れませんが

No.04538 Re: Rのmvpartによる生存時間データの分析法について  【坂上】 2007/10/18(Thu) 18:51

 返信,ありがとうございました。
 
 下記のデータで,エラーを再現できました。
 いかがなものでしょうか。
 すみませんが,よろしくお願いいたします。


library(mvpart)
library(survival)

V1 <- c(125,212,566,510,545,455,597,77,1209,151)
V2 <- c(0,0,1,0,1,0,0,1,1,0)
V3 <- c(12,10,9,6,8,9,7,27,10,8)
Y <- data.frame(V1=V1,V2=V2,V3=V3)

tre <- rpart(Surv(V1,V2)~V3,data=Y)
summary(tre)

No.04539 Re: Rのmvpartによる生存時間データの分析法について  【青木繁伸】 2007/10/18(Thu) 19:43

私は rpart はなんにも知りませんが,help を読むかぎりは,第一引数は
formula : a formula, as in the lm function.
とあります。formula が Surv(V1,V2)~V3 というのは,この条件を満たしているのでしょうか?
妥当性はともかく,
tre <- rpart(V1~V2+V3,data=Y)
とした場合にはエラーは起きませんね。

No.04540 Re: Rのmvpartによる生存時間データの分析法について  【坂上】 2007/10/18(Thu) 21:06

 
 返信ありがとうございました。

 rpart関数で,生存時間データを扱うときは,Surv(観測期間,状態変数)と
することになっていました。
 というのは,rpart関数はlibrary(rpart)の中にも入っていて,この形で実行
して,エラーは起きていませんでした。
 library(mvpart)というのができて,グラフィック等の出力が改良されたりして,
それを使って分析しようとして,同じ構文で分析しようとしたら,
エラーになってしまったのでした。
 現在でも,library(rpart)の方で,Surv(V1,V2)の形で分析すると,エラーは起きません。
 であれば,library(rpart)で分析すればよいではないか,となるのですが,
やはりlibrary(mvpart)の方が,いろいろと機能があって,便利なもので,
そちらを使いたいと思ってやっているのでした。

 ご指摘のように
 tre <- rpart(V1~V2+V3,data=Y)
 とすると,エラーは起きないので,生存時間データの扱い方に,
問題があるのかもしれません。
 
 もう1度,helpをじっくりみてみようと思います。

 ありがとうございました。

● 「統計学関連なんでもあり」の過去ログ--- 040 の目次へジャンプ
● 「統計学関連なんでもあり」の目次へジャンプ
● 直前のページへ戻る