Which statistical test for change in a nonlinear regression model?

Technical Source
4 min readJul 23, 2022


Hi guys,

I have a rather fundamental question regarding the analysis of my data involving nonlinear fitting and I hope it is appropriate to post it here. For the sake of brevity I will not provide the whole code and only summarize the essential steps, but of course I can add any details you request.

I have some data which represents some response to a stimulus as a function of the distance to the stimulation site. The data shows, as to be expected, a decay in the response variable, which may be best approximated by a sigmoidal fit. So I applied the BOLTZMANN equation to the data and let MATLAB predict confidence bounds for new observations:

% Define model function (BOLTZMANN);
f = @(beta0,conds)beta0(1) + ((beta0(2)-beta0(1)) ./ (1+exp((beta0(3) - conds) ./ beta0(4))));
% Find initialization parameters:
resp50 = (max(resp) + min(resp))/2;
x50 = 5000; %Educated guess
inidat = [0,max(resp),resp50,x50];% Estimate the fitted function:
[beta,res,jac,covb] = nlinfit(conds',fliplr(resp),f,inidat);
% Fit the function:
xfit = linspace(min(conds),max(conds),100);
[yfit,delta,n,df,varpred] = nlpredci(f,xfit,beta,res,'Covar',covb,'PredOpt','observation'); %Function edited, see below
yfit = fliplr(yfit);
delta = fliplr(delta');
varpred = fliplr(varpred');

Behold the plotted result (Embedding this image did not work.)

I am now adressing the question, how far I can get off the reference site until responses are to be regarded non-maximum. I.e. up from which distance are my (predicted) responses signicantly different to the maximum a 0 mm? I did not find a pre-described solution to such a question, so I developed a little bit naively my own approach, and I would like to ask you to tell me if it is appropriate or if there is some superior method.

My idea was simply to run multiple pairwise t-tests given the statistics from the NLINFIT function (which I edited as to return sample size n, degrees of freedom v, and predicted variance varpred, so I would not have to do the calculations on my own). Thus, I iterate through the predictions unless the tested pair is significantly different:

alpha = 0.05;for i=2:length(yfit)
testdiff = yfit(1) - yfit(i);
%Common MSE is mean of both estimated variances (s. ONLINESTATBOOK p.376):
mse = (varpred(1) + varpred(i))/2;
%Common SE:
testse = sqrt(2*mse/n); %Correct?
%Compute t-value:
t = testdiff/testse;
%Common df:
testdf = (n-1) + (n-1); %Correct?
p = tpdf(t,testdf); if p < (alpha/(i-1)) %With BONFERRONI correction (correct?)
m = i;

As you can see, I also tried to add some BONFERRONI correction of the alpha-level to account for these multiple comparisions. I am aware, that the t-test I used may be inappropriate for correlated pairs (which is evidently the case).

According to my rule of thumb, I would expect a cut-off x-value somewhere were the confidence intervals of the fit do not intersect anymore. Surprisingly, I obtain a way earlier cut-off as you can see in the picture above.


Matlabsolutions.com provide latest MatLab Homework Help,MatLab Assignment Help , Finance Assignment Help for students, engineers and researchers in Multiple Branches like ECE, EEE, CSE, Mechanical, Civil with 100% output.Matlab Code for B.E, B.Tech,M.E,M.Tech, Ph.D. Scholars with 100% privacy guaranteed. Get MATLAB projects with source code for your learning and research.

I suggest doing paired t-tests ( ttest2 ) between your reference (at 0 mm) and data taken from stimuli at various distances, for instance 0 mm and 1 mm, 0 mm and 2 mm, etc. (My guess is that you would see significance at 10 to 15 mm, depending on whether your error bars represent standard errors or 95% confidence limits.) This is relatively common in the literature I am familiar with, and generally does not require the Bonferroni correction, because you are not also comparing 2 mm and 3 mm and others. (I also suggest consulting the statistics guidance for the journal you plan to submit your data to.)

The Boltzmann equation is interesting, but you might consider using a model more appropriate to the system you are measuring (unless you’re doing the sort of physics the Boltzmann equation describes). I suspect a reviewer would want to know the reason you chose it and how it describes your experiment. You have not described the system you are investigating, but using a regression model fit may be redundant if you are only interested in the differences between the result of stimulation at various distances from the reference site.




Technical Source

Simple! That is me, a simple person. I am passionate about knowledge and reading. That’s why I have decided to write and share a bit of my life and thoughts to.