私は、宇宙論のパラメータを制約するためのchi^2検定の使用に関する重要な質問を持っています。私はあなたの助けに感謝します。この質問に負のレートを付けないでください(この質問は私には重要です)。パラメータを制約するためのカイ二乗検定
600データを扱うデータファイル(data.txt)があり、このデータファイルは3列あり、最初の列はredshift(z)、2列目は観測値dL(m_obs)、3列目はエラー(err) 。我々はカイ知っているように^ 2の機能は、我々はすべての600個のデータは、「m_theo」で私たちの関数に与えられたデータファイルから「Z」を入れている計算し、2 ^カイを計算しなければならない事の
chi^2=(m_obs-m_theo)**2/err**2 #chi^2=sigma((m_obs-m_theo)**2/err**2) from 1 to N=600
すべてです。今では "m_thoe"に自由パラメータ(o_m)があり、chi^2がその最小値に達する値を見つけなければなりません。
q= 1/sqrt((1+z)**2 * (1+0.01*o_m*z) - z*(2+z)*(1-0.01*o_m))
m_theo = 5.0 * log10((1+z)*q) + 43.1601
この質問は反復的ではなく、特別な宇宙論と物理学者のためのカイ^ 2を使用して、すべての体にとって非常に重要です。 最小化されたchi^2と相対的なo_mの検索方法は?
from math import *
import numpy as np
from scipy.integrate import quad
min=l=a=b=chi=None
c=0 #for Sigma or summation chi^2 terms in c=c+chi for first term
def ant(z,o_m): #0.01*o_m is steps of o_m
return 1/sqrt(((1+z)**2*(1+0.01*o_m*z)-z*(2+z)*(1-0.01*o_m)))
for o_m in range(24,35,1): #arbitrary range of o_m
############## opening data file containing 580 dataset
with open('data.txt') as f:
for i, line in enumerate(f): #
n= list(map(float, line.split())) #
for i in range(1):
##############
q=quad(ant,0,n[1],args=(o_m,))[0] #Integration o to z, z=n[1]
h=5*log10((1+n[1])*(299/70)*q)+25 #function of dL
chi=(n[2]-h)**2/n[3]**2 #chi^2 test function
c=c+chi #sigma from 1 to N of chi^2 and N=580
if min is None or min>c:
min=c
print(c,o_m)
私は自分のコードが正しいと思うが、それは私にありがとう、私はあなたの時間と注意を感謝し 適切な答えを与えるものではありません。
。しかし、数値最適化のために[scipy.optimize](https://docs.scipy.org/doc/scipy/reference/optimize.html)を見たいかもしれません。問題を分析的に解決したい場合は、[最尤法](https://en.wikipedia.org/wiki/Maximum_likelihood_estimation)の使用を検討する必要があります。 – MaxPowers
@maxpowersこれはまさに問題ですが、私はコードを書いていますが、それは私に適切な答えを与えません。あなたの助けをありがとう – Ethan
私はコードを添付し、助けてもらえます。ありがとうございました。私に負のレートを与えないでください。私の友人は公平ではありません。 – Ethan