两个 NLS 回归参数的联合估计
Joint estimation of parameters from two NLS-regressions
首先,我是董事会的新手,如果我没有以最佳方式写这篇 post,请原谅。
除此之外,我正在尝试 运行 一些关于连续 product/service 代的最佳进入时机的模型。模型定义如下:Models,
其中F(t)为:F(t),S1为第一代产品累计销量,S2为第二代产品累计销量,Tau2为第二代产品引入时机。 M1,M2,q_g和p_q是需要估计的参数
在有关该主题的文献中,假设 q_g 和 p_g 在不同的产品世代中是相同的,这意味着 q_g 和 p_g 在S1 和 S2 的模型。这就是我 运行 遇到麻烦的地方。
到目前为止,我已经能够使用 nls 为每一代分别估计 q_g 和 p_g。请看下面:
S1.cum.func <- nls(S1.cum ~ M1.cum *
((1-exp(-(P.cum+Q.cum)*T))/((Q.cum/P.cum)*exp(-(P.cum+Q.cum)*T)+1)) #F1
* ifelse(T2>0,(1-((1-exp(-(P.cum+Q.cum)*T2))/((Q.cum/P.cum)*exp(-(P.cum+Q.cum)*T2)+1))),One.vec)
,start=c(list(M1.cum=sum(S1.cum),P.cum=0.001,Q.cum=0.5))) #Start values
S2.cum.func <- nls(S2.cum.new ~ (M2.cum + M1.cum*
((1-exp(-(P.cum2+Q.cum2)*T.new))/((Q.cum2/P.cum2)*exp(-(P.cum2+Q.cum2)*T.new)+1))) #F1(t)
*((1-exp(-(P.cum2+Q.cum2)*T2.new))/((Q.cum2/P.cum2)*exp(-(P.cum2+Q.cum2)*T2.new)+1)) #F2(t-Tau2)
,start=c(list(M2.cum=1223000,P.cum2=0.001,Q.cum2=0.5)))
我的问题是 - 是否有任何方法可以同时对 S1 和 S2 进行 运行 回归,以便 q_g 和 p_q 的一组估计参数将描述两者尽可能多的因变量?
非常感谢。
这里是一个例子,我们分别 运行 fo1
和 fo2
,然后使用单独的 a1
和 a2
以及共同的 [=15] 组合它们=].下次请提供一个 完整 示例,包括所有输入,以便可以使用复制和粘贴复制它。
set.seed(123)
# Separate nls runs
x1 <- 1:10
y1 <- 1 + 2 * x1 + rnorm(10)
fo1 <- y1 ~ a1 + b1 * x1
nls(fo1, start = list(a1 = 0, b1 = 0))
x2 <- 11:20
y2 <- 4 * 2 * x2 * rnorm(10)
fo2 <- y2 ~ a2 + b2 * x2
nls(fo2, start = list(a2 = 0, b2 = 0))
# combined nls run with different a's and common b
y12 <- c(y1, y2)
fo12 <- y12 ~ c(a1 + b * x1, a2 + b * x2)
nls(fo12, start = list(a1 = 0, a2 = 0, b = 0))
首先,我是董事会的新手,如果我没有以最佳方式写这篇 post,请原谅。
除此之外,我正在尝试 运行 一些关于连续 product/service 代的最佳进入时机的模型。模型定义如下:Models, 其中F(t)为:F(t),S1为第一代产品累计销量,S2为第二代产品累计销量,Tau2为第二代产品引入时机。 M1,M2,q_g和p_q是需要估计的参数
在有关该主题的文献中,假设 q_g 和 p_g 在不同的产品世代中是相同的,这意味着 q_g 和 p_g 在S1 和 S2 的模型。这就是我 运行 遇到麻烦的地方。
到目前为止,我已经能够使用 nls 为每一代分别估计 q_g 和 p_g。请看下面:
S1.cum.func <- nls(S1.cum ~ M1.cum *
((1-exp(-(P.cum+Q.cum)*T))/((Q.cum/P.cum)*exp(-(P.cum+Q.cum)*T)+1)) #F1
* ifelse(T2>0,(1-((1-exp(-(P.cum+Q.cum)*T2))/((Q.cum/P.cum)*exp(-(P.cum+Q.cum)*T2)+1))),One.vec)
,start=c(list(M1.cum=sum(S1.cum),P.cum=0.001,Q.cum=0.5))) #Start values
S2.cum.func <- nls(S2.cum.new ~ (M2.cum + M1.cum*
((1-exp(-(P.cum2+Q.cum2)*T.new))/((Q.cum2/P.cum2)*exp(-(P.cum2+Q.cum2)*T.new)+1))) #F1(t)
*((1-exp(-(P.cum2+Q.cum2)*T2.new))/((Q.cum2/P.cum2)*exp(-(P.cum2+Q.cum2)*T2.new)+1)) #F2(t-Tau2)
,start=c(list(M2.cum=1223000,P.cum2=0.001,Q.cum2=0.5)))
我的问题是 - 是否有任何方法可以同时对 S1 和 S2 进行 运行 回归,以便 q_g 和 p_q 的一组估计参数将描述两者尽可能多的因变量?
非常感谢。
这里是一个例子,我们分别 运行 fo1
和 fo2
,然后使用单独的 a1
和 a2
以及共同的 [=15] 组合它们=].下次请提供一个 完整 示例,包括所有输入,以便可以使用复制和粘贴复制它。
set.seed(123)
# Separate nls runs
x1 <- 1:10
y1 <- 1 + 2 * x1 + rnorm(10)
fo1 <- y1 ~ a1 + b1 * x1
nls(fo1, start = list(a1 = 0, b1 = 0))
x2 <- 11:20
y2 <- 4 * 2 * x2 * rnorm(10)
fo2 <- y2 ~ a2 + b2 * x2
nls(fo2, start = list(a2 = 0, b2 = 0))
# combined nls run with different a's and common b
y12 <- c(y1, y2)
fo12 <- y12 ~ c(a1 + b * x1, a2 + b * x2)
nls(fo12, start = list(a1 = 0, a2 = 0, b = 0))