我在使用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
如何加入季节性假人? 谢谢!
答案 0 :(得分:0)
由于nls
的“公式”是一个真正的数学公式,与{{1}不同,我认为glm
的假人不会像nls
那样实现}}。
然而,您可以指定是否必须为每个虚拟类别单独评估参数:
glm
答案 1 :(得分:0)
您可以使用factor
来对估算系数进行子集化,例如alpha[dummy]
。
data(cars)
cars$dummy <- as.factor(LETTERS[1:5])
nls(dist ~ alpha[dummy] + beta1*speed^beta2, data=cars, start=list(beta1=.2, beta2=3, alpha=rep(10, nlevels(cars$dummy))))
#Nonlinear regression model
# model: dist ~ alpha[dummy] + beta1 * speed^beta2
# data: cars
# beta1 beta2 alpha1 alpha2 alpha3 alpha4 alpha5
# 0.2069 1.8580 2.8264 5.3971 13.0000 9.3537 2.5359
# residual sum-of-squares: 10040
#
#Number of iterations to convergence: 12
#Achieved convergence tolerance: 2.372e-06