一个回归模型,其响应变量是一年中(通常)发生年度事件的那一天

机器算法验证 回归 时间序列 生存 数据转换 经常性事件
2022-03-01 10:28:12

在这种特殊情况下,我指的是湖泊结冰的那一天。这个“冰上”日期每年只发生一次,但有时根本不会发生(如果冬天很暖和)。因此,在某一年,湖水可能会在第 20 天(1 月 20 日)结冰,而另一年它可能根本不会结冰。

目标是找出冰上约会的驱动因素。

预测因素是每年的秋季/冬季气温。年份可能是长期线性趋势的预测指标。

1)整数“一年中的一天”是一个合理的响应变量(如果不是,什么是?)?

2) 湖水不结冰的岁月该如何度过?

编辑:

我不知道这里的礼仪是什么,但我想我会发布我收到的建议的结果。这是论文,开放存取我对所使用的方法得到了很好的反馈,感谢@pedrofigueira 和@cboettig。当然,错误是我自己的。

4个回答

我认为可以将“一年中的某一天”视为多元回归的响应变量。为了处理湖泊从不结冰的年份,我会简单地认为结冰日期大于可观察到的下限,例如,对应于冰含量开始融化(或完全融化,如果你想非常保守)。理论上它应该在那之后冻结,或者之后可以冻结,但我们不知道。这样,您可以使用您在不同参数上收集的数据来了解冻结日如何取决于它们,如果允许它晚于最新的可观察日期。然后您可以使用Tobit 模型同时处理冻结天数(对应于“正常”数据点)和下限(对应于限制,因此是审查回归)。

为了在分析中正确包含测量的下限,您可以使用删失回归模型,其中因变量在下限值处具有截止值。上述Tobit模型适用于这种情况;它假设存在一个不可观察的(潜在的)因变量,在我们的例子中,如果冬季无限期延长,它对应于冻结日期。的情况下,可观察的因变量(即在冻结日期上测量的下限)被视为等于潜变量,否则等于下限yiyiLi

yi={yiif¯Li(i.e.yi<Li)LiifyiLi

应用 Tobit 模型来处理逐个观察的删失,得到如下形式的对数似然函数

L=iyi<Liln[ϕ(yiXijβjσ)/σ]+iyiLiln[Φ(LiXijβjσ)]

其中分别表示标准正态分布的概率和累积密度函数。索引运行在观察值上,运行在自变量上。线性回归的解决方案是最大化对数似然函数的参数集(包括截距)。ϕ(.)Φ(.)ijβj

一年中的某一天是一个明智的预测变量,为此我认为按照@pedrofigueira 的建议对待它是明智的。

对于其他预测变量,您可能需要注意如何表示时间。例如,假设您有一天的气温——您将如何将气温建模为结冰日的预测指标?我认为比较同一天的样本是不够的。

在任何此类分析中,我认为写下您认为可能的数据生成模型(或多个模型)可能是有帮助的(其中一些物理学可能可以作为指导)。例如,一个合理的模型可能是积分低于冰点的天数,当积分超过阈值(例如与湖泊的热质量相关)时,就会发生结冰。然后,您可以从这样的模型中询问什么是合理的近似值,什么不是。

例如,仅当一年中的某一天是温度的良好预测器时,一年中的某一天作为预测因子对该模型很重要。因此,只知道一年中的哪一天,就会有一个对应于结冰阈值的平均一年中的一天,可能有一些关于它的正态分布是由年际温度变化引起的,因此寻找一天中的趋势-年度是完全合理的。

但是,如果您知道其他变量(例如空气温度),您可能会更直接地处理更复杂的模型。如果您只是使用年度值(最小值?意味着?),那么变量作为结冰日的预测指标似乎也是合理的(通过与上述相同的论点)。

对于这个问题,您需要两个响应变量。一个布尔响应表示湖是否结冰,一个整数响应给出一年中的哪一天,条件是指标为真。在湖结冰的年份,布尔值和整数都被观察到。在湖没有结冰的年份,观察到布尔值而不是整数。您可以对布尔值使用逻辑回归。一年中某天的回归可以是普通的线性回归。

只要您在给定的时间段内连续编号可能的冻结天数,一年中这一天的循环性质就不会成为问题。如果您想知道从哪里开始编号,我会建议测量预测变量的那一天。如果您希望模型代表因果效应,则必须在任何可能的冻结之前测量所有预测变量。

为了处理一年中日期的整数和有界性质,可以使用离散化模型。也就是说,有一个真正的潜在值以下列方式生成观察:如果该值在界限内,则观察等于潜值四舍五入到最接近的整数,否则该值被截断到界限。然后可以将潜在值本身建模为预测变量加噪声的线性函数。

您拥有的是事件发生时间数据,也称为生存分析。那不是我真正的领域,所以我在这里不给出详细的答案。谷歌搜索“事件发生时间数据”或“生存分析”会给你很多点击!

一个很好的起点可以是 Venables/Ripley: MASS 中关于生存分析的第 (13) 章,或 John D. Kalbfleisch、Ross L. Prentice(授权)的经典“失效时间数据的统计分析,第二版”

编辑,扩展答案

作为生存分析的替代方法,您可以通过序数逻辑回归来近似。例如,在您的第一个冻结日期的示例情况下,定义一些您给出“在或之前冻结”状态的日期,0(不冻结),1(冻结)。这很好地适应了没有冻结的年份,你只需要一个全零响应向量。如果您选择的日期是,比如说,

1:08   15:08 1:09 15:09 1:10 15:10 1:11 15:11 1:12  15:12  1:01  15:01
and the actual date of first freezing was  17:11, then your observed vector will be
0       0    0    0     0    0     0    0      1     1     1      1

并且,一般来说,所有的响应向量都会有一个初始的 0 块,然后是一个 1 的块。然后,您可以将其与序数逻辑回归一起使用,从而获得每个日期冻结的估计概率。绘制该曲线将给出生存曲线的近似值(在这种情况下,生存变为“尚未冻结”)。

EDIT

人们也可以将您的数据视为经常性事件,因为河流(几乎)每年都会结冰。在这里查看我的答案: 寻找精神病再入院的重要预测因素