ロジスティック回帰で頻度を追加すると、「応答には少なくとも2つのレベルが必要です」というメッセージが表示されます。こんにちは、
複数年にわたる種の存在/非存在データを応答変数とし、様々な環境条件(例:気温)を予測変数とするロジスティック回帰分析を実行しようとしています。また、個体数データ(種が存在した日にカウントされた個体数、観察されなかった場合はゼロ、調査が行われなかった場合はnull)も持っているので、これを頻度として含めたいと考えています。
個体数データを含めずにロジスティック回帰モデルを実行すると、問題なく動作します。しかし、個体数データを頻度(または重み付けとして - 両方試しました)として含めると、「応答変数には少なくとも2つのレベルが必要です」というエラーが表示されます。
応答変数は名義変数(0は不在、1は存在、 •は調査未実施)に設定しています。存在量データ列は連続変数に設定されており、予測変数もすべて連続変数です。
データセットに大量の欠損値が含まれていることが問題の原因ではないかと考えました(この種は年間数ヶ月しか活動しないため、ほとんどの期間はモニタリングされていません)。しかし、欠損値をすべて除外しても、同じエラーが発生しました。
問題が特に存在量データで発生したかどうかを確認するために、無関係だが連続的なデータ(観測年)を擬似的な「頻度」として入力してみたところ、JMPは問題なく実行できました。
私はJMP Student Edition 19.0.1を使用しています。
前もって感謝します! :)
~ボビー
基本的なデータ分析とモデリングRe: ロジスティック回帰で頻度を追加すると「応答には少なくとも2つのレベルが必要です」というメッセージが表示されますこんにちは、 @bobby さん。コミュニティへようこそ。あなたのデータを見ていないので推測するしかありませんが、存在の有無に関わらず、豊富さは常にゼロのようですね。
Re: ロジスティック回帰で頻度を追加すると「応答には少なくとも2つのレベルが必要です」というメッセージが表示されますデータを見せていただければ回答ははるかに簡単になりますが、ここでは推測で述べます。存在量を頻度または重みとして使用する場合、存在量がゼロの場合は応答変数(存在または非存在)をゼロに制限します(存在量が欠損している場合は欠損値となり、ロジスティック回帰では無視されます)。したがって、使用される存在量の値は、存在する場合の値のみになります。存在量を重み/頻度として使用すると、存在/非存在変数が消去され、応答変数の値として存在のみが表示されるように聞こえます。
しかし、個体数の扱い方については疑問に思います。個体数を連続変数として予測しようとしているのに、ゼロの値が多数含まれているのではないでしょうか?これは、打ち切りデータの問題、あるいは少なくとも、多くの値がゼロで、残りが連続変数のさまざまなレベルである場合に、個体数を予測したいという問題のように聞こえます。この状況をどのようにモデル化するのが最適かを提案するのは難しいのですが、個体数を頻度や重みとして扱うのは正しい方法ではないように思えます。
Re: ロジスティック回帰で頻度を追加すると「応答には少なくとも2つのレベルが必要です」というメッセージが表示されますこんにちは、 @MRB3855さん。ありがとうございます!はい、不足している状況では、豊富さは常にゼロになります。
Re: ロジスティック回帰で頻度を追加すると「応答には少なくとも2つのレベルが必要です」というメッセージが表示されますこんにちは、 @dlehman さん、ありがとうございます!残念ながら、実際のデータを公開できるかどうか確信が持てないので、念のため慎重に進めていますが、以下の表は私が持っているデータの種類の模擬表です(ただし、実際にはゼロや欠損値がもっとたくさんあります)。個体数データについては、おっしゃる通り、ゼロが多く、ゼロ以外のカウントがある日もあります(連続変数であるため)。
モデルについてですが、魚は夏に出現し始めますが、正確な時期は環境要因によって異なります(出現後の個体数も同様です)。私は、魚の出現時期を最終的に予測できるように、どの要因が魚の存在と最も高い相関関係にあるかを特定しようとしています。個体数の予測は目的としていませんが、観察された個体数を、季節が進むにつれて出現する魚の数の指標として取り入れることで、出現する魚と環境要因との実際の関係をより明確にしようとしています(ちなみに、観察された魚は採集されたものなので、記憶の偏りの問題はありません)。うまく説明できているといいのですが、もし分かりにくい点があれば教えてください!(統計学はまだ初心者なので…)
これを書きながら、もしかしたら存在/非存在の尺度を無視して、豊富さだけで処理するという方法もあるかもしれないと思いついた。とはいえ、ゼロ値の処理は必要になるので、もう少し試してみようと思う。
| 年 |
月 |
日 |
魚の有無(1/0) |
魚の生息数(観察された魚の数) |
日平均水温(℃) |
夏季の累積水温(℃) |
川の深さ(メートル) |
| 2016 |
1 |
29 |
• |
• |
12.0 |
803.0 |
0.6 |
| 2016 |
1 |
30 |
0 |
0 |
12.8 |
815.8 |
0.6 |
| 2016 |
1 |
31 |
1 |
3 |
14.2 |
830.0 |
0.7 |
| 2016 |
2 |
1 |
1 |
7 |
14.7 |
844.7 |
0.7 |
| 2016 |
2 |
2 |
0 |
0 |
13.3 |
858.0 |
0.5 |
| 2016 |
2 |
3 |
1 |
2 |
14.1 |
872.1 |
0.7 |
| 2016 |
2 |
4 |
0 |
0 |
12.6 |
884.7 |
0.8 |
| 2016 |
2 |
5 |
• |
• |
12.9 |
897.6 |
0.6 |
| 2016 |
2 |
6 |
• |
• |
13.4 |
811.0 |
0.7 |
Re: ロジスティック回帰で頻度を追加すると「応答には少なくとも2つのレベルが必要です」というメッセージが表示されますこんにちは、 @bobby さん。
コミュニティへようこそ!
@dlehman1 さんがあなたの状況における問題点を発見しました。列「abundance」を頻度または重量として使用する場合、この列にゼロが含まれていると、魚が存在しない行がロジスティック回帰の適合から除外されてしまいます。これは、これらの行が存在しない場合と同じ状況です。
モデリング作業を2つに分割することをお勧めします。
- まず、ロジスティック回帰を用いて、魚が存在するか存在しないかを検出するために、存在の有無の列のみを使用します。
- 次に、魚が観察された場合は、魚の数をモデル化してみてください(カウントを扱っているので、おそらくポアソン一般化回帰を使用します)。
魚の個体数(魚の数)のみを予測する場合、ゼロと非ゼロの両方のカウントを処理するために(ゼロ過剰)ポアソン分布を使用すれば、2つのタスクを1つにまとめることができるかもしれません。
ロジスティック回帰とポアソン回帰という2つのモデリング手法は、それぞれ少し異なる問いに答えていると思います。ロジスティック回帰は魚の生息を可能にする条件は何か、ポアソン回帰は様々な条件がどのように魚の生息数を増加させるか、という問いに答えているのです。
この回答がお役に立てば幸いです。