假设以下情况:
我有一个变量Y的计数数据,我假设它是泊松分布的。我也有相同时间段内变量X的数据,每个观察值代表一个特定事件。我假设Y的值来自两个不同的影响,所以我将每个观察值Y_i分为两个由Poisson分布的Y_i1和Y_i2,但是我仍然只对总Y_i的观察值。我还假定事件(由X表示)对Y_i1具有长期影响,并且我具有参数lambda_i2的估计量。
所以我的回归公式是
fml=Y_i ~ b_1*X_i+....+b_n*X_(i-n+1) + offset(lambda_i2) -1n> = 24。
这意味着X的最后24个(或由于长期影响而更多)的值以累加方式影响Y_i1的值,而我没有拦截(b_0 = 0)。
我制作了一个矩阵m,其行表示Y_i,它的24个(或更多个)回归变量用于Y_i的每次观察以及相应的lambda_i2估计。
现在,我使用
glm(fml, family=poisson(link="identity"), data=m)
并尝试了不同的n值(= 24、48、36,...)。
总是,一些系数收到负值,这在解释上没有意义。(用X表示的事件只能对Y的值产生正或无影响。)
这导致了我的问题:
如何b_i >=0在模型中使用约束?
在我以前的研究中,我找到了函数glmc(),但是我不确定如何在此处包括约束。
作为替代方案,我还考虑了以贝叶斯方式分析此模型,但是我还没有找到Poisson分布的贝叶斯形式的glm(),因此我可以自行指定b_i的先验值。(然后,我可以在前面包括阳性。)
你有什么想法?
这是我的数据和代码的一部分:
y=c(279,623, 1025, 1701, 1862, 2544, 2308, 2231, 2234, 2550, 2698, 2805, 3510, 3032, 2746, 2074, 1062, 513, 226, 116, 87, 79, 116, 335, 594, 1081, 1425, 1775, 2056, 2387, 2337, 2354, 2665, 2406, 2433, 2550, 2820, 3655, 4566, 2330, 1267, 531, 280, 148, 92, 89, 141, 458, 852, …Run Code Online (Sandbox Code Playgroud)