Я использую BasicPSFPhotometry из photutils.psf для получения фотометрии источника.
Вот пример моего кода (к сожалению, это не рабочий пример, но он может помочь понять, что я делаю и что Я нуждаюсь). Большая часть этого была скопирована из https://photutils.readthedocs.io/en/stable/psf.html и адаптирована к моим потребностям.
fitter=LevMarLSQFitter()
psf_model = photutils.psf.FittableImageModel(psfdata,normalize=True)
pos = Table(names=['id','x_0', 'y_0','flux_0'], data=[[1],[xycen[0]],[xycen[1]],[flux]])
photometrypsf = BasicPSFPhotometry(group_maker=daogroup,
bkg_estimator=None,
psf_model=psf_model,
fitter=fitter,
fitshape=target.shape,
aperture_radius=fwhm)
psf_photometry = photometrypsf(image=target.copy(),init_guesses=pos)
Мне нужно оценить хи-квадрат для PSF-подгонки моего источника, но я не понимаю как это сделать.
Я следил за этой публикацией ( В Scipy, как и почему curve_fit вычисляет ковариацию оценок параметров ), где они объясняют, как получить уменьшенный хи в квадрате как:
s_sq = (infodict['fvec']**2).sum()/ (N-n)
, на который я смог перевести свой код:
s_sq = (fitter.fit_info['fvec']**2).sum()/(len(fitter.fit_info['fvec'])-n)
Проблема в том, что я не знаю, как оценить «n». В этом примере они говорят, что n (количество свободных параметров) - это длина вывода x из scipy.optimize.leastsq (первый вывод), но LevMarLSQFitter четко указывает, что:
Обратите внимание, что возвращаемое значение x не включено (поскольку это вместо значений параметров возвращаемой модели).
Итак, вопрос в том, используя LevMarLSQFitter в сочетании с BasicPSFPhotometry каков наиболее практичный способ оценить хи-квадрат для соответствия (или любой другой параметр может позволить мне понять степень соответствия)? Более того, как мне получить доступ к параметру подгонки, выполненной из LevMarLSQFitter ?