How to keep a Fixed Effect constant in NLMEFIT and NLMEFITSA?

1 次查看(过去 30 天)
Hi everyone
I'm following the example for NLMEFIT (<http://www.mathworks.com/help/toolbox/stats/nlmefit.html>),
and I would like to know if there is any way to keep the some of the beta parameters constant. in the example, they set beta0 = [100 100 100]; but the algorithm estimates all three and gives a final beta=[191.3189 723.7608 346.2517]. My idea is to estimate 2 of the parameters, but the other keep it equal to it's initial value.
I would also like to fix the variance of some of the parameters, anyone knows how to do that? In the example they explain how to set variance to 0 for one parameter, but what if I want an specific variance for a certain parameter?
Thanks in advance.
Andres
Use an anonymous function to specify a logistic growth model:
model=@(PHI,t)(PHI(:,1))./(1+exp(-(t-PHI(:,2))./PHI(:,3)));
Fit the model using nlmefit with default settings (that is, assuming each parameter is the sum of a fixed and a random effect, with no correlation among the random effects):
TIME = repmat(time,5,1);
NUMS = repmat((1:5)',size(time));
beta0 = [100 100 100];
[beta1,PSI1,stats1] = nlmefit(TIME(:),CIRC(:),NUMS(:),... [],model,beta0)
beta1 = 191.3189 723.7608 346.2517
PSI1 = 962.1534 0 0 0 0.0000 0 0 0 297.9881
[beta2,PSI2,stats2,b2] = nlmefit(TIME(:),CIRC(:),... NUMS(:),[],model,beta0,'REParamsSelect',[1 3])
beta2 = 191.3194 723.7628 346.2548
PSI2 = 962.2114 0 0 298.3989
b2 = -28.5250 31.6063 -36.5070 39.0735 -5.6479 10.0097 -0.7638 6.0117 -9.4685 -5.7892

回答(1 个)

Tom Lane
Tom Lane 2012-7-1
I can't think of any way to fix the variance. To fix a parameter value, I suppose you could write a new function
model=@(PHI,t)(PHI(:,1))./(1+exp(-(t-100)./PHI(:,2)));
or
newmodel=@(PHI,t) model([PHI(:,1),10*ones(size(PHI,1),1),PHI(:,3)],t)
I have not tried this out, so please forgive any typos -- just hoping this gives you an idea.
  2 个评论
Andres
Andres 2012-7-2
Hi Tom, thanks for your answer.
I was thinking in something like that too... but I'm intrigued because I cannot figure out then what is the functionality of having 'FEParamsSelect' 'FEConstDesign' 'FEGroupDesign' (and their RE counterparts). So far all I can see is that FEConstDesign can be used to add covariates and REParamsSelect can be used to set the variance of a parameter to zero. But I thought that somehow FEParamsSelect would be similar to REParamsSelect and allow me to tell NLMEFITSA to not estimate some parameter.
Tom Lane
Tom Lane 2012-7-2
You are right, I believe. You could use FEParamsSelect to prevent estimating a fixed effect for a parameter. Then if you wrote the function using "(10+PHI(:,1))" in place of PHI(:,1), I suppose you would in essence be forcing the parameter to take the value 10. Good idea. Until now I had always thought of FEParamsSelect as providing the ability to do the relatively unusual thing of estimating a parameter as a random effect with a mean set exactly to zero, but your idea provides a better use for it.

请先登录,再进行评论。

类别

Help CenterFile Exchange 中查找有关 Nonlinear Regression 的更多信息

产品

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by