r - 如何在 R 中使用季节性虚拟变量运行指数 nls?

标签 r regression nls

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

summary(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

如何包含季节性虚拟人? 谢谢!

最佳答案

您可以使用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

关于r - 如何在 R 中使用季节性虚拟变量运行指数 nls?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29176766/

相关文章:

r - 如何从 nls 计算 95% 的预测区间

在 Web 浏览器中运行 RStudio 的多个实例

从向量返回最后一个匹配

r - 为坐标选择正确的正则表达式

Azure 机器学习结果解释

使用具有特定数据的 OLS 代码的 Python 多元线性回归?

javascript - 如何使用 TensorFlow.js 进行多变量回归

R 脚本 - nls 函数

r - st_write 拒绝覆盖 R 中 geopackage 中的图层

r - R 中的非线性多元回归