在逻辑回归中添加频率时,会出现“响应必须至少有两个级别”的提示。你好,
我正在尝试运行一个逻辑回归模型,以物种存在/缺失数据(跨越数年)作为响应变量,以各种环境条件(例如温度)作为预测变量。我还有物种丰度数据(物种出现时每天统计的个体数量,如果未观察到则为零,如果未进行调查则为空),我想将其作为频率变量纳入模型。
不包含丰度数据,我可以完美运行逻辑回归模型。但是,当我将丰度数据作为频率(或权重——两种方法都试过)纳入模型时,就会出现错误“响应变量必须至少有两个水平”。
我的响应变量设置为名义变量(0 表示不存在,1 表示存在, • 表示空值,即未进行调查)。丰度数据列设置为连续变量,所有预测变量也都是连续变量。
我原以为问题出在数据集中大量的空值上(该物种每年只活跃几个月,因此大部分时间都没有监测)。然而,即使我排除了所有空值,仍然出现了同样的错误。
为了查看问题是否专门出现在丰度数据中,我尝试输入一些无关但连续的数据(观测年份)作为假装的“频率”,JMP 运行起来没有任何问题。
我使用的是 JMP 学生版 19.0.1。
提前致谢! :)
鲍比
基础数据分析与建模回复:在逻辑回归中添加频率时出现“响应必须至少有两个级别”的提示嗨@bobby :欢迎加入社区。由于没有看到你的数据,我只能进行推测。但听起来,无论是否存在,丰度值都始终为零。
回复:在逻辑回归中添加频率时出现“响应必须至少有两个级别”的提示展示数据当然会让回答这个问题容易得多,但我在这里只能推测一下。当你把丰度作为频率或权重时,你实际上是将响应变量(存在或不存在)限制为:当丰度为零时,响应变量也为零(当丰度缺失时,响应变量也为缺失值——这在逻辑回归中会被忽略)。因此,最终使用的丰度值仅限于丰度存在的情况。将丰度作为权重/频率似乎抹去了存在/缺失变量,使得响应变量的值只包含存在。
不过,我确实对您处理丰度的方式有些疑惑。您是不是想把丰度作为一个连续变量来预测,但其中却包含大量零值?这听起来很像一个截尾数据问题,或者至少是一个在部分值为零、其余值为连续变量不同水平的情况下,试图预测总体规模的问题。我很难给出最佳的建模方案,但用丰度作为频率或权重似乎并不是正确的方法。
回复:在逻辑回归中添加频率时出现“响应必须至少有两个级别”的提示嗨@MRB3855 - 谢谢!是的,对于缺失而言,丰盛永远为零。
回复:在逻辑回归中添加频率时出现“响应必须至少有两个级别”的提示嗨@dlehman ,谢谢!很遗憾,我不确定能否上传真实数据,所以为了谨慎起见,我先用下面的表格模拟一下我实际的数据(虽然我的数据中有很多零值和空值)。你说得对,丰度数据确实有很多零值,但也有一些天数有非零值(因为丰度是连续变量)。
关于这个模型——鱼群在夏季开始出现,但具体日期会受到环境因素的影响(鱼群出现后的种群数量也会随之变化)。我正在尝试确定哪些因素与鱼群出现最为相关,最终目的是能够预测鱼群何时开始出现。虽然我并不关心预测种群数量,但我将观察到的鱼群数量作为指标,用来衡量随着季节推移鱼群数量的增加,以便更真实地反映鱼群出现与环境因素之间的关系(顺便一提,观察到的鱼群是收集的,所以不存在重复收集的问题)。希望我解释得足够清楚——如果有什么不明白的地方,请告诉我!(我对统计学还不太熟悉 :beaming_face_with_smiling_eyes:)
写到这里,我突然想到,或许可以忽略存在/缺失的衡量标准,只关注丰度?但这仍然需要处理零值,所以我得试试看……
| 年 |
月 |
天 |
鱼是否存在(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 |
回复:在逻辑回归中添加频率时出现“响应必须至少有两个级别”的提示嗨@bobby ,
欢迎加入社区!
@dlehman1找到了你遇到的问题:当使用“丰度”列作为频率或权重时,该列中的零值会导致缺少鱼类的行被排除在逻辑回归拟合之外。这与你没有这些行的情况相同。
我建议将建模任务分成两部分:
- 首先,仅使用“存在/不存在”列,通过逻辑回归来检测鱼在哪些条件下存在或不存在。
- 其次,对于观察到鱼的情况,尝试对鱼的数量进行建模(由于处理的是计数,所以可能使用泊松广义回归)。
如果只预测鱼类数量(鱼的数量),并使用(零膨胀的)泊松分布来处理零值和非零值计数,那么这两个任务或许可以合并为一个任务完成。
我认为这两种建模方法(逻辑回归和泊松回归)回答的问题略有不同:哪些条件使得鱼类得以存在(逻辑回归)与不同的条件如何增加鱼类的存在(泊松回归)。
希望这个回答对您有所帮助。