Как вычислить значение p для моей функции подбора? - PullRequest
0 голосов
/ 04 июня 2019

Я добавил смесь 3 гауссовских функций в мои данные, и она довольно хорошо подходит.Мой вопрос заключается в том, насколько хорошо фитинг определен численно.Это может быть определено p-значением.Если да, то как я могу рассчитать исходя из самой функции подгонки?

   g = fittype( @(c1,c2,p5,p6,p3,p4,p1,p2, x) (c1)*(1/(p6*sqrt(2*pi)))*exp(-((x-p5).^2)./(2*(p6.^2))) + ...
   (c2)*(1/(p4*sqrt(2*pi)))*exp(-((x-p3).^2)./(2*(p4.^2))) + ...
    (1-c1-c2)*(1/(p2*sqrt(2*pi)))*exp(-((x-p1).^2)./(2*(p2.^2)))       );

 %xr and yr is data (basically normalized histogram) 
[fE,GE,O] = fit(xr',yr',g,'StartPoint',startingVals);

%O gives me following quantity. 
        numobs: 50
         numparam: 8
    residuals: [50×1 double]
     Jacobian: [50×8 double]
     exitflag: 3
firstorderopt: 7.763960157882235e-04
   iterations: 24
    funcCount: 225
 cgiterations: 0
    algorithm: 'trust-region-reflective'
     stepsize: 0.002272922321389
      message: 'Success, but fitting stopped because change in residual…'

Здесь нет p-значения.Как вычислить это спасибо.

1 Ответ

0 голосов
/ 04 июня 2019

Вы можете использовать функцию corrcoef, см. документацию по matlab .

Как правило, если у вас есть данные y и прогнозные данные из вашей встроенной функции Y,вы просто делаете:

[R,p] = corrcoef(y, Y);

, который даст вам значение R и значение p корреляции между вашими данными и вашими предсказанными данными после гауссовой подгонки, так что в основном работает то, насколько хорошо вы подходите.

y и Y должны соответствовать одному и тому же входному значению:

Предположим, что f - это «функция» ваших данных.Он проверяет y = f(x), (для каждого значения x у вас есть измерение y).

Тогда вы должны иметь Y = f_fitted(x), где f_fitted - это гауссовская функция, полученная в результате вашей подгонки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...