【发布时间】:2018-05-08 21:45:57
【问题描述】:
我有兴趣了解影响离开河流的鱼的比例为鱼苗、帕尔鱼或小鲑鱼比例的因素(总和为 1)。我知道使用 nnet::multinom 可以很好地做到这一点,但我想看看我是否可以使用 mgcv 包将这些关系与样条曲线拟合。为此,我打算用 3 个类别拟合一个多项式模型,回归权重与当天观察到的该类别的比例有关。我可以用 mgcv 拟合多项式模型,但是,它似乎不接受权重。请参阅下面的示例 - 输出与权重和没有权重相同。有谁知道是否可以在 mgcv 中实现的多项式游戏中使用权重?
library(mgcv)
set.seed(6)
## simulate some data from a three class model
n <- 1000
f1 <- function(x) sin(3*pi*x)*exp(-x)
f2 <- function(x) x^3
f3 <- function(x) .5*exp(-x^2)-.2
f4 <- function(x) 1
x1 <- runif(n);x2 <- runif(n)
eta1 <- 2*(f1(x1) + f2(x2))-.5
eta2 <- 2*(f3(x1) + f4(x2))-1
p <- exp(cbind(0,eta1,eta2))
p <- p/rowSums(p) ## prob. of each category
cp <- t(apply(p,1,cumsum)) ## cumulative prob.
## simulate multinomial response with these probabilities
## see also ?rmultinom
y <- apply(cp,1,function(x) min(which(x>runif(1))))-1
## plot simulated data...
plot(x1,x2,col=y+3)
## now fit the model...
b <- gam(list(y~s(x1)+s(x2),~s(x1)+s(x2)),family=multinom(K=2))
# Try with weights
reg_weights <- sample(1:100, length(y),replace=T)
b_2 <- gam(list(y~s(x1)+s(x2),~s(x1)+s(x2)),family=multinom(K=2), weights =
reg_weights)
b; b_2 #identical
【问题讨论】:
-
看起来您正在尝试对成分数据进行建模。尝试查找“[r] 估计 dirichlet”。我正在寻找表明 VGAM 包可能有希望的材料。
-
太棒了,是的,看起来 vgam 中的比例赔率模型可以满足我的要求。谢谢!
-
你应该写一个答案并发布它。鼓励提问者发布自己问题的答案。
标签: r multinomial mgcv