我正在使用 photutils.psf 中的 BasicPSFPhotometry 来获取源的光度测量。
这是我的代码示例(遗憾的是不是一个有效的示例,但可以帮助理解我在做什么以及我需要什么)。其中大部分内容是从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 (自由参数的数量)是scipy.optimize.leastsq(第一个输出)的输出 x 的长度,但LevMarLSQFitter明确指出:
请注意,不包括 x 返回值(因为它是返回模型的参数值)。
所以问题是,结合使用LevMarLSQFitter和BasicPSFPhotometry估计拟合的卡方的最实用方法是什么(或任何其他参数可以让我了解拟合的优度)?此外,我如何访问从LevMarLSQFitter执行的拟合参数?