联合估计来自两个NLS回归的参数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了联合估计来自两个NLS回归的参数相关的知识,希望对你有一定的参考价值。

首先,如果我不以最佳方式撰写这篇文章,我是新来的董事会,请原谅。

除此之外,我试图在连续产品/服务代的最佳进入时间上运行一些模型。模型定义如下: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的一组估计参数将尽可能多地描述两个因变量?

非常感谢你。

答案

这是一个例子,我们分别运行fo1fo2,然后使用单独的a1a2以及常见的b组合它们。下次请提供包含所有输入的完整示例,以便可以使用复制和粘贴来重现它。

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))

以上是关于联合估计来自两个NLS回归的参数的主要内容,如果未能解决你的问题,请参考以下文章

r语言怎么做每一列和第一列线性回归

半参数模型

`nls` 无法估计我的模型的参数

朴素贝叶斯与逻辑回归

回归分析06:回归参数的估计

回归分析03:回归参数的估计