2015-03-20 2 views
1

У меня возникли проблемы с запуском регрессии nls с сезонными манекенами в R. Я могу сделать это без сезонных манекенов, но не с. Это то, что я до сих пор:Как запустить экспоненциальные nls с сезонными манекенами в R?

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 

Как включить сезонные манекены? Спасибо!

+0

Что вы имеете в виду с помощью манекена здесь? Будут ли параметры оцениваться полностью отдельно для каждого фиктивного значения или у вас есть один или несколько параметров, зависящих только от фиктивного значения? – cmbarbu

ответ

0

Я не думаю, что манекены реализованы nls как они находятся в glm из-за того, что «формула» для nls является реальной математической формулой, в отличие от glm.

Вы можете указать все-таки, если параметр должен оцениваться отдельно для каждого класса манекена:

data(cars) 
    # define the dummy 
    cars$dummy <- as.factor(LETTERS[1:5]) 
    # code as 0/1 the dummy with a column per dummy level 
    cars$A<- as.numeric(cars$dummy=="A") 
    cars$B<- as.numeric(cars$dummy=="B") 
    cars$C<- as.numeric(cars$dummy=="C") 
    cars$D<- as.numeric(cars$dummy=="D") 
    cars$E<- as.numeric(cars$dummy=="E") 

    # precise in the formula where the dummy level should play out 
    # here in the intercept: 
    model <- nls(dist~beta1*speed^beta2+beta3*A+beta4*B+beta5*C+beta6*D+beta7*E,data=cars) 

    model 

    Nonlinear regression model 
     model: dist ~ beta1 * speed^beta2 + beta3 * A + beta4 * B + beta5 * C + beta6 * D + beta7 * E 
     data: cars 
     beta1 beta2 beta3 beta4 beta5 beta6 beta7 
     0.2069 1.8580 2.8266 5.3973 13.0002 9.3539 2.5361 
     residual sum-of-squares: 10040 

     Number of iterations to convergence: 8 
     Achieved convergence tolerance: 4.924e-06 
+0

Большое спасибо! За исключением того, что когда я пытаюсь запустить nls, он запрашивает стартовые значения - есть ли у вас какие-либо идеи о том, как это сделать? Когда я пытаюсь использовать начальные значения, я получаю сообщение об ошибке: коэффициент шага уменьшается ниже minFactor. –

+0

Для начальных значений вы обычно можете игнорировать сообщение и выполнять его по умолчанию. Но если он больше жалуется, это может быть потому, что вы пытаетесь оценить слишком много вещей для своих данных. Убедитесь, что тогда заданы начальные значения, которые являются разумными. Попробуйте меньше спросить у NLS (меньше групп, менее бета). Если вы не можете исправить это самостоятельно, задайте другой вопрос, так как это совершенно другая проблема. Не забудьте закрыть это, принимая ответ и ответы на голосование, которые помогут вам – cmbarbu