如何在R中的mgcv中声明gam()中的指数分布
How to declare the exponential distribution in gam() in mgcv in R
我有一个来自实验的小数据集,我想拟合一个 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
我认为 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。
此外,对于如此小的数据集,我怀疑您能否在模型中容纳交互作用项 - 即使拟合两个主要效应也可能有点牵强。
我有一个来自实验的小数据集,我想拟合一个 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
我认为 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。
此外,对于如此小的数据集,我怀疑您能否在模型中容纳交互作用项 - 即使拟合两个主要效应也可能有点牵强。