No.08920 Re: glmmML 【青木繁伸】 2009/01/15(Thu) 14:17
range(data$y)を計算したら,どのような結果が得られるか教えてください。
range(data$total-data$y)
それと,以下のようなデータのときの結果と比べてみるといかがでしょうか?> data <- data.frame(あなたの場合は,追加情報以降は出ていないので,呈示した場合と異なるのかもしれません。
+ y = c(1,2,10,3,1),
+ total = c(3,3,3,3,3),
+ x = c(7,8,9,10,11),
+ id = c(1,2,3,4,5)
+ )
> res <- glmmML (cbind (y, total-y)~ x, binomial, cluster = id, data=data)
以下にエラー eval(expr, envir, enclos) : y values must be 0 <= y <= 1
追加情報: Warning message:
In log(p.hatt/(1 - p.hatt)) : 計算結果が NaN になりました
ついでに,RとglmmMLのバージョン,OSも明示して質問するのがよいでしょう。
No.08921 Re: glmmML 【nao】 2009/01/15(Thu) 15:02
青木さま
使用環境は下記になります。
R 2.8.1
Package glmmML version 0.81-3
Windows XP
計算させたところ,それぞれこのようになりました(=以降に記入)
range(data$y) = 1 3
range(data$total-data$y) = 0 2
> res <- glmmML (cbind (y, total-y)~ x, binomial, cluster = id, data=data)
以下にエラー eval(expr, envir, enclos) : y values must be 0 <= y <= 1
追加情報: Warning message:In log(p.hatt/(1 - p.hatt)) : 計算結果が NaN になりました
上記と比べると,ファイルを読み込んだ場合も同じメッセージが出ていますが,追加情報以降は出ませんでした。
glmmMLで二項分布を使う場合は,データフレームにするとダメということなのでしょうか?
よろしくお願いします。
No.08922 Re: glmmML 【青木繁伸】 2009/01/15(Thu) 15:15
> glmmMLで二項分布を使う場合は,データフレームにするとダメということなのでしょうか?
やってみると判りますが,そんなことはありません。> data <- data.frame(では,何のエラーも出ません。
+ y = c(1,2,2,3,1),
+ total = c(3,3,3,3,3),
+ x = c(7,8,9,10,11),
+ id = c(1,2,3,4,5)
+ )
> res <- glmmML (cbind (y, total-y)~ x, binomial, cluster = id, data=data)
データを減らしていって,同じ問題が生じる最小のデータセットを特定してはいかがでしょう。データの行数が50以下なら,そのデータを掲示してみると良いかもしれません。
No.08923 Re: glmmML 【nao】 2009/01/15(Thu) 15:39
アドバイスありがとうございます。
まずは,同じ問題が生じるデータセットを特定してみたいと思います。
ひとつ確認させていただきたいのですが,データの行数が3000ほどあってもRで解析する上で問題はないのでしょうか?
大きなサンプルを扱ったことがなく,かつ小さなサンプルではこれまでにエラーが出ていませんでしたので気になりました。
ネット検索をしてみると,10000以上でも計算しているようなので問題ないかとは思うのですが・・・。
No.08924 Re: glmmML 【青木繁伸】 2009/01/15(Thu) 16:04
あなたを疑うようで申し訳ないのですが,No. 8921 の結果,
range(data$y) = 1 3
range(data$total-data$y) = 0 2
は,「サンプル数が3000ほどあるデータ」についてのものでしょうか?
> データの行数が3000ほどあってもRで解析する上で問題はないのでしょうか?
普通は問題が出るようなことはありません。もしあるとしても,そのような場合には「データ行数がXXX行以上のデータは処理できません」とかのエラーメッセージを出すのが常識でしょう。
Windows XP, R 2.7.2 で,3000行のデータを作って,やってみましたよ。> library(glmmML)
> data <- data.frame(y=sample(3, 3000, replace=TRUE), total=rep(3, 3000), x <- rnorm(3000), id=1:3000)
> res <- glmmML (cbind (y, total-y)~ x, binomial, cluster = id, data=data)
ちゃんとできました
ここで,データを弄って,data$y[1] を data$total[1] より大きくしてしまいましょう。
> data$y[1] <- 10
> res <- glmmML (cbind (y, total-y)~ x, binomial, cluster = id, data=data)
以下にエラー eval(expr, envir, enclos) : y values must be 0 <= y <= 1
このエラーメッセージも,あなたが最初に書いたものとは違うのですけどね。。。glmmML のバージョンは,0.81-3 かな。
で,range をとってもらったのは,以下のようなことがないのだろうかと思ったんですが。
> range(data$y)
[1] 1 10
> range(data$total-data$y)
[1] -7 2 マイナスになってしまっている(データ数なのに)
No.08925 Re: glmmML 【nao】 2009/01/15(Thu) 16:15
青木さま
ありがとうございます。
先生の指摘の通り,データレンジがマイナスになっていました。
お伝えしたのと違ったのは決して意図的ではなかったのですが,同名のファイルで1つはy値が3までで,もうひとつはy値の4以上を削除し忘れていたものです。
中身が同じだと思い,特に考えずに両方で作業していましたが,いただいたアドバイスを見て気づきました。
おかげさまで,エラーメッセージも出なくなりました。
ありがとうございます。
● 「統計学関連なんでもあり」の過去ログ--- 042 の目次へジャンプ
● 「統計学関連なんでもあり」の目次へジャンプ
● 直前のページへ戻る