我在用R中的季节性假人运行nls回归时遇到了麻烦。没有季节性的假人我也能做到,但没有。这是我目前掌握的情况:
year=floor(time(lsts))
> month=round(time(lsts)-year,4)
> month.f=factor(month)
> dummies=model.matrix(~month.f)
hotdogNLS<-nls(lsts~beta1/(1+exp(beta2+beta3*t)),start=list(beta1=2500,beta2=0.5,beta3=-0.5),trace=F)
摘要(hotdogNLS)
Formula: lsts ~ beta1/(1 + exp(beta2 + beta3 * t))
Parameters:
Estimate Std. Error t value Pr(>|t|)
beta1 2.030e+03 5.874e+01 34.55 <2e-16 ***
beta2 1.146e+00 5.267e-02 21.76 <2e-16 ***
beta3 -1.116e-02 7.668e-04 -14.56 <2e-16 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 192.3 on 333 degrees of freedom
Number of iterations to convergence: 8
Achieved convergence tolerance: 2.054e-06
我如何包括季节性假人?谢谢!
3条答案
按热度按时间67up9zun1#
我不认为
nls
的虚拟实现与glm
中的虚拟实现一样,因为nls
的“公式”是一个真实的的数学公式,与glm
不同。但是,您可以指定是否必须为每个虚拟类单独评估参数:
q7solyqu2#
您可以使用
factor
来子集估计系数,如alpha[dummy]
。fhity93d3#
@cmbarbu的手工设置dummies的答案应该可以工作,但这可以通过
nlme::gnls()
和params
参数更容易地完成:(see
?nlme::gnls
了解详细信息,如何为不同的非线性参数指定不同的线性子模型等。)