小编Mar*_*ara的帖子

如何在R中将Poisson回归的系数约束为正值?

假设以下情况:
我有一个变量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)

r poisson glm

3
推荐指数
1
解决办法
875
查看次数

标签 统计

glm ×1

poisson ×1

r ×1