如何在R中的mgcv中声明gam()中的指数分布

时间:2018-03-23 14:40:25

标签: r exponential gam mgcv

我有一个来自实验的小数据集,我想要拟合一个gam模型,规定Y的分布是指数为0.5的指数。

我的数据是:

x1              x2      y
-1.000000   -1.000000   40
1.000000    -1.000000   5
-1.000000   1.000000    14
1.000000    1.000000    10
-1.414214   0.000000    35
1.414214    0.000000    7
0.000000    -1.414214   18
0.000000    1.414214    9
0.000000    0.000000    7
0.000000    0.000000    4
0.000000    0.000000    0
0.000000    0.000000    2

我尝试过不同的方式将gam函数传递给分发的类型,但我总是遇到异常。如,

model.gam = gam(y ~ x1 * x2, family = exponential(rate=0.5), data = df)
Error in gam(y ~ x1 * x2, family = exponential(rate = 0.5), data = df): family not recognized

model.gam = gam(y ~ x1 * x2, family = exponential(), data = df)
Error in check_dims(rate, target_dim = dim): argument "rate" is missing, with no default

model.gam = gam(y ~ x1 * x2, family = exponential(), data = df, rate = 0.5)
Error in check_dims(rate, target_dim = dim): argument "rate" is missing, with no default

您的建议将不胜感激。

1 个答案:

答案 0 :(得分:0)

我不认为gam()支持这种类型的家庭。

您可能需要考虑gamlss包中的gamlss(),而不是考虑gamlss.dist包中的EXP分发:

https://www.rdocumentation.org/packages/gamlss/versions/5.0-6/topics/gamlss

https://www.rdocumentation.org/packages/gamlss.dist/versions/5.0-4/topics/EXP

请注意,EXP分布具有均值而非速率参数。

有关gamlss包的详细信息,请参阅http://www.gamlss.com

此外,对于如此小的数据集,我怀疑你可以在模型中容纳一个交互项 - 即使拟合两个主要效果可能有点拉伸。