A416 Astronomide Sayısal Çözümleme -...

40
A416 Astronomide Sayısal Çözümleme - II 4. Eğri Uyumlama ve Regresyon Analizi

Transcript of A416 Astronomide Sayısal Çözümleme -...

Page 1: A416 Astronomide Sayısal Çözümleme - IIozgur.astrotux.org/ast416/Ders_04/Ders04_Egri_Uyumlama.pdf · Lineer Regresyon Örnek : Bir roketin hızına karşılık maruz kaldığı

A416 Astronomide Sayısal Çözümleme - II

4. Eğri Uyumlama ve Regresyon Analizi

Page 2: A416 Astronomide Sayısal Çözümleme - IIozgur.astrotux.org/ast416/Ders_04/Ders04_Egri_Uyumlama.pdf · Lineer Regresyon Örnek : Bir roketin hızına karşılık maruz kaldığı

Eğri Uyumlama

• Trend Analizi• İnterpolasyon ve Ekstrapolasyon• Hipotez testi

Chapra (2004)

Page 3: A416 Astronomide Sayısal Çözümleme - IIozgur.astrotux.org/ast416/Ders_04/Ders04_Egri_Uyumlama.pdf · Lineer Regresyon Örnek : Bir roketin hızına karşılık maruz kaldığı

Biraz Temel İstatistik…

• Merkezi Eğilim Ölçütleri– Aritmetik Ortalama– Medyan– Mod

• Dağılım Ölçütleri– Standart Sapma– Varyans– Değişim Katsayısı– Noktadan noktaya dağılım ∑

i=1

i=n−1

( y i+1− y i)2

2 N−1

Page 4: A416 Astronomide Sayısal Çözümleme - IIozgur.astrotux.org/ast416/Ders_04/Ders04_Egri_Uyumlama.pdf · Lineer Regresyon Örnek : Bir roketin hızına karşılık maruz kaldığı

Lineer Regresyon

Minimizasyon Stratejileri :

En uzak noktanın uzaklığı

Page 5: A416 Astronomide Sayısal Çözümleme - IIozgur.astrotux.org/ast416/Ders_04/Ders04_Egri_Uyumlama.pdf · Lineer Regresyon Örnek : Bir roketin hızına karşılık maruz kaldığı

Lineer Regresyon

ve

ε a1=√ (n∑ y i2−(∑ y i)

2−a12(n∑ x i2−(∑ x i )

2))

(n−2)( n∑ x i2−(∑ x i)2)

Katsayıların Hataları

ε a0=√ε

a12

∑ xi2

n

Page 6: A416 Astronomide Sayısal Çözümleme - IIozgur.astrotux.org/ast416/Ders_04/Ders04_Egri_Uyumlama.pdf · Lineer Regresyon Örnek : Bir roketin hızına karşılık maruz kaldığı

Lineer Regresyon

Örnek :

Bir roketin hızına karşılık maruz kaldığı hava direnci yandaki grafikte ve aşağıdaki çizelgede verilmiştir. En küçük kareler yöntemiyle en uygun doğru uyumlamasını yapınız.

Page 7: A416 Astronomide Sayısal Çözümleme - IIozgur.astrotux.org/ast416/Ders_04/Ders04_Egri_Uyumlama.pdf · Lineer Regresyon Örnek : Bir roketin hızına karşılık maruz kaldığı

Lineer Regresyon

Bu doğru bu veri setine yapılabilecek en iyi (“the best”) doğru uyumlamasıdır.

Page 8: A416 Astronomide Sayısal Çözümleme - IIozgur.astrotux.org/ast416/Ders_04/Ders04_Egri_Uyumlama.pdf · Lineer Regresyon Örnek : Bir roketin hızına karşılık maruz kaldığı

Lineer Regresyon

Regresyon katsayısı

Tahmin üzerindeki standart hata

Page 9: A416 Astronomide Sayısal Çözümleme - IIozgur.astrotux.org/ast416/Ders_04/Ders04_Egri_Uyumlama.pdf · Lineer Regresyon Örnek : Bir roketin hızına karşılık maruz kaldığı

Lineer Regresyon

Örnek :

Standart Sapma Tahmin Üzerindeki Standart Hata

Regresyon KatsayısıYani, veriyi lineer bir modelle temsil etmenin getirdiği iyileştirme bu düzeydedir. Bir başka deyişle, veri üzerindeki belirsizliğin %88.05’i lineer modelle açıklanabilmektedir!

Page 10: A416 Astronomide Sayısal Çözümleme - IIozgur.astrotux.org/ast416/Ders_04/Ders04_Egri_Uyumlama.pdf · Lineer Regresyon Örnek : Bir roketin hızına karşılık maruz kaldığı

Regresyon Katsayısına Dikkat!

y = 3 + 0.5x lineer uyumlaması için regresyon katsayısı eşit 4 farklı veri seti (Anscombe 1973)

Ders : Verinizi neyin daha iyi temsil edeceğini görmek istiyorsanız program çıktılarının yanı sıra grafiğe de mutlaka bakın!

Page 11: A416 Astronomide Sayısal Çözümleme - IIozgur.astrotux.org/ast416/Ders_04/Ders04_Egri_Uyumlama.pdf · Lineer Regresyon Örnek : Bir roketin hızına karşılık maruz kaldığı

Lineer Olmayan İlişkilerin Lineerleştirilmesi

Page 12: A416 Astronomide Sayısal Çözümleme - IIozgur.astrotux.org/ast416/Ders_04/Ders04_Egri_Uyumlama.pdf · Lineer Regresyon Örnek : Bir roketin hızına karşılık maruz kaldığı

Lineer Olmayan İlişkilerin Lineerleştirilmesi

Örnek :

Page 13: A416 Astronomide Sayısal Çözümleme - IIozgur.astrotux.org/ast416/Ders_04/Ders04_Egri_Uyumlama.pdf · Lineer Regresyon Örnek : Bir roketin hızına karşılık maruz kaldığı

Lineer Olmayan İlişkilerin Lineerleştirilmesi

Page 14: A416 Astronomide Sayısal Çözümleme - IIozgur.astrotux.org/ast416/Ders_04/Ders04_Egri_Uyumlama.pdf · Lineer Regresyon Örnek : Bir roketin hızına karşılık maruz kaldığı

Polinom Regresyonu

Page 15: A416 Astronomide Sayısal Çözümleme - IIozgur.astrotux.org/ast416/Ders_04/Ders04_Egri_Uyumlama.pdf · Lineer Regresyon Örnek : Bir roketin hızına karşılık maruz kaldığı

Polinom Regresyonu

∑ xi

∑ xi2

∑ xi2

∑ x i∑ x i

∑ xi3

∑ xi3 ∑ x

i4

n a0

a1

a2

=

∑ y i

∑ xi yi

∑ xi2 yi

∑ xi ∑ xi2

Page 16: A416 Astronomide Sayısal Çözümleme - IIozgur.astrotux.org/ast416/Ders_04/Ders04_Egri_Uyumlama.pdf · Lineer Regresyon Örnek : Bir roketin hızına karşılık maruz kaldığı

Polinom Regresyonu

∑ xi

∑ xi2

∑ xi2

∑ x i

∑ x i

∑ x i

∑ xi2

∑ xi3

∑ xi3 ∑ x

i4

n a0

a1

a2

=

∑ y i

∑ xi y i

∑ xi2 yi

Bu ifadeyi genelleştirelim...

.. .

.. .

.. .

∑ xim

.. .

.. .

.. .

∑ xim+1

.. .

.. .

.. .

∑ xim+2

.. . .. . .. . ∑ xim

∑ xim+1

∑ xim+2

.. . .. . .. .

.. . .. . .. .

.. .

.. .

.. .

∑ xi2m

.. .

.. .

.. .

am

.. .

.. .

.. .

∑ xim y i

Bu ifade için standart hata :

Sr=( y i−a0−a1 x−a2 x2−.. .−am xm

)2

Page 17: A416 Astronomide Sayısal Çözümleme - IIozgur.astrotux.org/ast416/Ders_04/Ders04_Egri_Uyumlama.pdf · Lineer Regresyon Örnek : Bir roketin hızına karşılık maruz kaldığı

Polinom RegresyonuÖrnek :

2. dereceden bir polinomla modellemek istiyor olalım.

∑ x i

∑ xi2

∑ x i ∑ xi2

∑ xi3∑ x

i2

∑ xi3 ∑ x

i4

n a0

a1

a2

=

∑ y i

∑ xi y i

∑ xi2 yi

Yani, verideki belirsizliğin %99.851’i 2. dereceden bir polinom modeliyle temsil edilebiliyor!

Page 18: A416 Astronomide Sayısal Çözümleme - IIozgur.astrotux.org/ast416/Ders_04/Ders04_Egri_Uyumlama.pdf · Lineer Regresyon Örnek : Bir roketin hızına karşılık maruz kaldığı

Polinom RegresyonuÖrnek (devam) :

Regresyon katsayısı :

Page 19: A416 Astronomide Sayısal Çözümleme - IIozgur.astrotux.org/ast416/Ders_04/Ders04_Egri_Uyumlama.pdf · Lineer Regresyon Örnek : Bir roketin hızına karşılık maruz kaldığı

Çok Değişkenli Lineer Regresyon

Page 20: A416 Astronomide Sayısal Çözümleme - IIozgur.astrotux.org/ast416/Ders_04/Ders04_Egri_Uyumlama.pdf · Lineer Regresyon Örnek : Bir roketin hızına karşılık maruz kaldığı

Çok değişkenli Lineer Regresyon

Page 21: A416 Astronomide Sayısal Çözümleme - IIozgur.astrotux.org/ast416/Ders_04/Ders04_Egri_Uyumlama.pdf · Lineer Regresyon Örnek : Bir roketin hızına karşılık maruz kaldığı

Çok Değişkenli Lineer Regresyon

Örnek :

Çok değişkenli bir lineer model arıyor olalım.

Page 22: A416 Astronomide Sayısal Çözümleme - IIozgur.astrotux.org/ast416/Ders_04/Ders04_Egri_Uyumlama.pdf · Lineer Regresyon Örnek : Bir roketin hızına karşılık maruz kaldığı

Çok Değişkenli Lineer Regresyon

∑ x1, i x2, i

∑ x2, i

2 ∑ x2, i xm,i

∑ x1, i

∑ x2, i

∑ x1, i

2

∑ x1, i ∑ x2, i

∑ x1, i x2, i

n a0

a1

a2

=

∑ y i

∑ x1, i y i

∑ x2, i y i

Bu ifadeyi genelleştirelim...

.. .

.. .

.. .

∑ xm ,i

.. .

.. .

.. .

∑ x1, i xm, i

.. .

.. .

.. .

∑ x2, i xm,i

.. . .. . .. . ∑ xm ,i

.. . .. . .. .

.. . .. . .. .

.. .

.. .

.. .

∑ xm ,i

2

.. .

.. .

.. .

am

.. .

.. .

.. .

∑ xm ,i y i

Bu ifade için standart hata :

Sr=( yi−a0−a1 x1−a2 x2−. ..−am xm)2

∑ x1, i xm, i

Lineer olmayan bazı ifadeleri yine lineer hale getirebiliriz :

Page 23: A416 Astronomide Sayısal Çözümleme - IIozgur.astrotux.org/ast416/Ders_04/Ders04_Egri_Uyumlama.pdf · Lineer Regresyon Örnek : Bir roketin hızına karşılık maruz kaldığı

En Küçük Kareler Yöntemi (Genel)

z0=1, z1=x1 , z2=z3=.. .= zm=0

z0=1, z1=x1 , z2=x2 , .. . , zm=xm

Lineer Regresyon

Çok Değişkenli Lineer Regresyon

z0=1, z1=x , z2=x2 ,. .. , zm= xmPolinom Regresyonu

minimize edilirse

Page 24: A416 Astronomide Sayısal Çözümleme - IIozgur.astrotux.org/ast416/Ders_04/Ders04_Egri_Uyumlama.pdf · Lineer Regresyon Örnek : Bir roketin hızına karşılık maruz kaldığı

En Küçük Kareler Yöntemi (Genel)

ŷi : En küçük kareler yöntemiyle belirlenen değer

ỹ : Aritmetik ortalama

Tüm durumlar için standart hata :

Page 25: A416 Astronomide Sayısal Çözümleme - IIozgur.astrotux.org/ast416/Ders_04/Ders04_Egri_Uyumlama.pdf · Lineer Regresyon Örnek : Bir roketin hızına karşılık maruz kaldığı

numpy.polyfit ve numpy.poly1d Metodları ile Doğru Uyumlama

Basit bir doğru uyumlama örneği ile başlayalım.

>>> import matplotlib.pyplot as plt>>> import numpy as np>>> x = [-7.3, -4.1, -1.7, -0.02564, 1.5, 4.5, 9.1]>>> y = [-0.8, -0.5, -0.2, 0.0, 0.2, 0.5, 0.8]>>> katsayilar = np.polyfit(x, y, 1) # Sondaki 1 dogru uyumlamasıini gosterir>>> katsayilararray([ 0.10160693, -0.02865838]) # dogrunun katsayilari>>> dogru = np.poly1d(katsayilar)>>> dogrupoly1d([ 0.10160693, -0.02865838])>>> y_dogru = dogru(x)>>> plt.plot(x,y,'ro')>>> plt.plot(x,y_dogru, 'b-')>>> plt.show()

Page 26: A416 Astronomide Sayısal Çözümleme - IIozgur.astrotux.org/ast416/Ders_04/Ders04_Egri_Uyumlama.pdf · Lineer Regresyon Örnek : Bir roketin hızına karşılık maruz kaldığı

numpy.polyfit ve numpy.poly1d Metodları ile Eğri Uyumlama

6. dereceden bir polinom uyumlamasıyla devam edelim.

>>> import matplotlib.pyplot as plt>>> import numpy as np>>> x = [2.53240, 1.91110, 1.18430, 0.95784, 0.33158,-0.19506, -0.82144, -1.64770, -1.87450, -2.2010]>>> y = [-2.50400, -1.62600, -1.17600, -0.87400, -0.64900, -0.477000, -0.33400, -0.20600, -0.10100, -0.00600]>>> katsayilar = np.polyfit(x, y, 6) # Sondaki 6 polinomun derecesini gosterir>>> polinom_6 = np.poly1d(katsayilar)>>> x_polinom6 = np.arange(-2.2, 2.6, 0.1)>>> y_polinom6= polinom_6(x_polinom6)>>> plt.plot(x,y,'ro')>>> plt.plot(x_polinom6, y_polinom6, 'b-')>>> plt.show()

Page 27: A416 Astronomide Sayısal Çözümleme - IIozgur.astrotux.org/ast416/Ders_04/Ders04_Egri_Uyumlama.pdf · Lineer Regresyon Örnek : Bir roketin hızına karşılık maruz kaldığı

Fermi Gamma Işını Teleskobu ile M82 Gözlemleri

Örnek 1 :

Astronomlar, Fermi Gamma Işını Teleskobu’nu kullanarak, 12 milyon ışık yılı uzaklıktaki M82’nin önemli bir gamma ışını kaynağı olduğunu keşfettiler. Yapılan araştırmalar bu cismin, aktif çekirdekli mini bir kuasar olduğunu ortaya koydu. Aşağıda bu cisimden alınan gamma ışınlarının MeV cinsinden enerjisine karşılık santimetrekareye 1 saniyede ulaşan sayısı verilmektedir. M82 için algılanan gamma ışını şiddeti ile sayısı arasındaki ilişkiyi en küçük kareler yöntemi ile bulunuz. Bu sonuca dayanarak 20000 MeV için saniyede santimetrekareye düşen gamma parçacığı sayısı için bir kestirimde bulununuz.

x (MeV) F (x)

407.38 1.94984E-06

1122.02 2.0893E-06

4466.84 7.07946E-07

1047128.55 2.0893E-07

1288249.55 1.90546E-07

2089296.13 1.38038E-07

Page 28: A416 Astronomide Sayısal Çözümleme - IIozgur.astrotux.org/ast416/Ders_04/Ders04_Egri_Uyumlama.pdf · Lineer Regresyon Örnek : Bir roketin hızına karşılık maruz kaldığı

Örnek 1: Çözüm Ders03_ornek_kodlar/ornek1.cozum.py

x = 20000 MeV icin F(x) = 6.29457255588e-07

Page 29: A416 Astronomide Sayısal Çözümleme - IIozgur.astrotux.org/ast416/Ders_04/Ders04_Egri_Uyumlama.pdf · Lineer Regresyon Örnek : Bir roketin hızına karşılık maruz kaldığı

Küresel Isınmanın Ciddiyeti

Karbondioksit seviyesinde 1960'dan bu yanaki değişim Keeling Eğrisi adı verilen bir eğriyle ifade edililr. Söz konusu değişim küresel ısınmaya neden olduğu gerekçesiyle endişe konusudur. Aşağıda 1960'dan bu yana geçen süre içerisinde onar yıllık ölçüm sonuçları milyon parçacık başına verilmiştir. Keeling Eğrisinin bir parabolle (2. dereceden bir polinomla) temsil edilebileceğini düşünerek ve eldeki veriyi kullanarak eğriye en uygun formülü bulunuz. Keeling Eğrisi yapısını korursa 2060 yılı sonunda parçacık başına kaç karbondioksit molekülü düşer hesaplayınız.

Örnek 2 :

Page 30: A416 Astronomide Sayısal Çözümleme - IIozgur.astrotux.org/ast416/Ders_04/Ders04_Egri_Uyumlama.pdf · Lineer Regresyon Örnek : Bir roketin hızına karşılık maruz kaldığı

Örnek 2: Çözüm

>>> import matplotlib.pyplot as plt>>> import numpy as np>>> x = np.array([ 0., 10., 20., 30., 40., 50.])>>> y = np.array([317, 326, 338, 354, 369, 390])>>> pol2ks = np.polyfit(x,y,2)>>> pol2 = np.poly1d(pol2ks)>>> xyeni = np.linspace(0,100,101)>>> yfit = pol2(xyeni)>>> plt.plot(x+1960,y,'ro',xyeni+1960,yfit,'b-',[2060],[pol2(100.)],"m*")>>> plt.xlabel('Yil')>>> plt.ylabel('n (CO$_{2}$) / Milyon Parcacik')>>> plt.title('Yil - CO$_{2}$ Bollugu')>>> plt.xlim((1950,2070))>>> plt.show()

Ders03_ornek_kodlar/ornek2.cozum.py

Page 31: A416 Astronomide Sayısal Çözümleme - IIozgur.astrotux.org/ast416/Ders_04/Ders04_Egri_Uyumlama.pdf · Lineer Regresyon Örnek : Bir roketin hızına karşılık maruz kaldığı

Levenberg-Marquardt Algoritması Doğrusal Olmayan En Küçük Kareler Yöntemi

✔ Matematik ve bilgisayar bilimlerinde Levenberg-Marquardt Algoritması (LMA), sönümlenmiş en küçük kareler yöntemi (Damped Least Squares, DLS) olarak da bilinir. m adet gözlemsel veriyi n tane bilinmeyenle modellemek üzere başlangıçta doğrusal bir model üretilip, modelin iterasyonlar sonucu iyileştirilerek doğrusal olmayan bir modelle değiştirilmesi prensibine dayanır.

✔ (x0, y0), (x1, y1), (x2, y2), … , (xm, ym) gözlemsel noktalarımız olsun. Bu noktaları f(x, β) gibi bir fonksiyonla fit etmek istiyor olalım. Burada m ≥ n olmak üzere β = (β0, β1, … , βn-1) fonksiyonun parametreleridir ve fonksiyon x ile birlikte bu parametrelere de bağlıdır. Algoritmada amaç en küçük kareler yöntemine benzer şekilde en küçük artıkları verecek S = Σr i

2 minimizasyonunun gerçekleşeceği β parametrelerini elde etmektir (ri = yi – f(xi, β)).

✔ Tıpkı en küçük kareler yönteminde olduğu gibi yine S'in bu kez β j (j = 0, 1, 2, … , n) 'e göre türevleri alınır ve 0'a eşitlenir. Doğrusal olmayan bir sistemde bu türevler hem x'e hem de β'ya bağlı olacağından doğrudan çözüm elde etmek yerine probleme uygun seçilmiş başlangıç parametreleri ile başlanır (β'lara başlangıç değerleri verilir) ve iteratif bir yaklaşımla her seferinde S hesaplanıp, daha öncekilerle ile karşılaştırılarak en küçük S'yi verecek parametre seti aranır. β her seferinde β + δ ile değiştirilir. δ'yı bulmak için f(xi, β + δ) doğrusallaştırmak üzere Taylor serisine açılır (f(x i, β + δ) ≈ f(xi, β ) + Jiδ, Ji: Jakobiyen). S'in β'ya görevi türevi 0 olduğunda S( β + δ) ≈ Σri2 = Σ (yi – f(xi, β) – Jiδ)2 toplamının δ'ya göre türevi de 0 olmalıdır ki minimizasyon sağlanmış olsun. Vektörel notasyonla (J T J) δ = JT |(yi – f(β)| denklemi δ için çözülür ve β parametreleri bulunur.

✔ Levenberg'in algoritmaya getirdiği yenilik bir sönümleme (damping) parametresi eklemiş olmasıdır. Böylece denklem (J T J + λI) δ = JT |(yi – f(β)| şeklini alır. Sönümleme parametresi λ her bir iterasyon adımında değiştirilir ve β + δ 'nın belirenen bir tolerans değerinin altına indiği anda iterasyon durdurulur. En son β vektörü fonksiyonun parametrelerini verir.

Page 32: A416 Astronomide Sayısal Çözümleme - IIozgur.astrotux.org/ast416/Ders_04/Ders04_Egri_Uyumlama.pdf · Lineer Regresyon Örnek : Bir roketin hızına karşılık maruz kaldığı

scipy.optimize.leastsq ile Levenberg-Marquardt Algoritması Kullanarak Fit

Ders03_ornek_kodlar/leastsq_ornek.py x = [1.0,2.5,3.5,4.0,1.1,1.8,2.2,3.7]

y = [6.008,15.722,27.130,33.772,5.257,9.549,11.098,28.828]

veri setine Levenberg-Marquardt algoritmasıyla bir doğru bir de Parabol fit etmek istiyor olalım. Yapmamız gereken leastsq fonksiyonuna gözlemsel x,y değerleri ile hesaplananlar arasındaki hatayı

veren bir HataFonksiyonu, birer başlangıç parametre seti (a0 + a1 x doğrusu için β = (β0, β1) = (a0, a1

)

parametreleri, a0 + a

1 x + a

2x2

parabolü için β = (β0, β1

, β2) = (a0, a1

, a2) parametreleri olarak sırasıyla (1.0, 2.0) ve (1.0,

2.0, 3.0)), ve veri setimizi (args = (x,y)) argümanlarını vermektir. Levenberg-Marquardt algoritması bu parametreler için en iyi değerleri hesaplar ve bu parametreleri doğru ve

parabol denklemlerinde yerine koyarak fitlerimizi elde etmiş oluruz.

Page 33: A416 Astronomide Sayısal Çözümleme - IIozgur.astrotux.org/ast416/Ders_04/Ders04_Egri_Uyumlama.pdf · Lineer Regresyon Örnek : Bir roketin hızına karşılık maruz kaldığı

scipy.optimize.optimization.curve_fit ile Levenberg-Marquardt Algoritması Kullanarak Fit

Ders03_ornek_kodlar/curvefit_ornek.py x = [0.0, 1.0, 2.0, 3.0, 4.0, 5.0]

y = [0.1, 0.9, 2.2, 2.8, 3.9, 5.1]

veri setine Levenberg-Marquardt algoritmasıyla bir parabol fit etmek istiyor olalım. Bu kez yapmamız gereken curve_fit fonksiyonuna gözlemsel x,y değerlerinin yanı sıra bir hata

fonksiyonu yerine doğrudan fit fonksiyonu, ve başlangıç parametre seti (a0 + a

1 x + a

2x2

parabolü için β =

(β0, β1, β

2) = (a0, a1

, a2) parametreleri olarak (0.0, 0.0, 0.0)) ve istersek gözlemsel hatalarımızı (sigma) vermektir.

Levenberg-Marquardt algoritması bu parametreler için en iyi değerleri hesaplar ve bu parametreleri parabol

denkleminde yerine koyarak fitimizi elde etmiş oluruz.

Page 34: A416 Astronomide Sayısal Çözümleme - IIozgur.astrotux.org/ast416/Ders_04/Ders04_Egri_Uyumlama.pdf · Lineer Regresyon Örnek : Bir roketin hızına karşılık maruz kaldığı

Levenberg-Marquardt Algoritması İle İgili Uyarılar

Algoritma verilen başlangıç parametrelerine en yakın yerel minimumu bulması nedeniyle

dezavantajlıdır. Bir süre benzer (ya da yakın) değerler alan fonksiyonlarda minimizasyon konusunda problemlidir (bu

noktalarda zig-zag yapar!). Bazı durumlarda (başlangıç parametrelerinin çözüme yakınlığı) oldukça hızlı çalışırken, bazı durumlarda

en iyi fiti verecek parametreleri bulmak konusunda oldukça yavaş olabilir. Örnek: curvefit_ornek2.py

Page 35: A416 Astronomide Sayısal Çözümleme - IIozgur.astrotux.org/ast416/Ders_04/Ders04_Egri_Uyumlama.pdf · Lineer Regresyon Örnek : Bir roketin hızına karşılık maruz kaldığı

Daha sofistike bir çözüm: LMFIT (1/3)

LMFIT, scipy.optimize modülü üzerine kurulu ve onun optimizasyon ve eğri uyumlama

yeteneklerini daha ileriye taşıyan bir paket. İndirmek ve kurmak için: http://cars9.uchicago.edu/software/python/lmfit/installation.html#installation

Örnek: Gözlemsel Veriye Gauss Fiti Uyumlaması (lmfit_ornek_gauss.py)

Bu örneği scipy.optimize.curve_fit fonksiyonu ile kolayca çözebiliriz.

>>> from numpy import random, sqrt, pi, exp, linspace>>> from scipy.optimize import curve_fit>>> def gauss(x, genlik, ortalama, stsapma): ... return genlik*exp(-(x-ortalama)**2/stsapma)>>> x = linspace(-10, 10)>>> y = gauss(x, 2.33, 0.21, 1.51) + random.normal(0, 0.2, len(x))>>> baslangicPar = [1, 0, 1]>>> params, kovaryans = curve_fit(gauss, x, y, p0 = baslangicPar)>>> paramsArray([ 2.13646343, 0.20518047, 1.70299407])>>> x2 = linspace(-10,10,100)>>> yfit = params[0]*exp(-(x2 – params[1])**2/params[2])>>> plt.plot(x,y,'ro',x2,yfit,'b-')>>> plt.show()

Ancak bu durumda LMFIT paketinin getirdiği bazı özelliklerden mahrum kalırız. Bunlardan biri LMFIT'in sağladığı Model metodudur. Bu metodun ürettiği modelin parametrelerinin sırasını bilmeniz gerekmez, adlarını bilmeniz yeterlidir.

Page 36: A416 Astronomide Sayısal Çözümleme - IIozgur.astrotux.org/ast416/Ders_04/Ders04_Egri_Uyumlama.pdf · Lineer Regresyon Örnek : Bir roketin hızına karşılık maruz kaldığı

Daha sofistike bir çözüm: LMFIT (2/3)

Aşağıdaki kodla tanınmlanan gmod modeli bağımsız değişkenin (x) ve model parametrelerinin (genlik, ortalama,

stsapma) adlarını bilmektedir

>>> from lmfit import Model>>> gmod = Model(gauss)>>> gmod.param_names['genlik','ortalama','stsapma']>>> gmod.independent_vars['x']

Model oluşturulduğunda parametreler oluşmaz. Bu sırada model parametrelerin ve bağımsız değişkenin adını bilir

ancak verinizin ne uzunlukta olduğundan ve ölçeğinden habersizdir. Dolayısıyla bu parametrelerin oluşuturlması ve

başlangıç değerlerinin atanmış olması icap eder. make_params() fonksiyonu bu işte size yardımcı olur.

>>> params = gmod.make_params('ortalama' = 5, 'genlik' = 200, stsapma = 1)

Modelin metotlarından eval() modeli çalıştırırken, fit() metodu ise modeli verilen veri setine

uyumlar.

>>> x = linspace(0, 10, 201)>>> y = gmod.eval(x=x, genlik=10, ortalama=6.2, stsapme=0.75)>>> sonuc = gmod.fit(y, x=x, genlik=5, ortalama=5, stsapma=1)>>> plt.plot(x, sonuc.init_fit, 'k--')>>> plt.plot(x, sonuc.best_fit, 'r-')>>> plt.show()

Page 37: A416 Astronomide Sayısal Çözümleme - IIozgur.astrotux.org/ast416/Ders_04/Ders04_Egri_Uyumlama.pdf · Lineer Regresyon Örnek : Bir roketin hızına karşılık maruz kaldığı

Daha sofistike bir çözüm: LMFIT (3/3)

Kodumuzu birleştirip (lmfit_ornek_gauss.py) çalıştıralım.

from numpy import sqrt, pi, exp, linspace, randomfrom scipy.optimize import curve_fitfrom matplotlib import pyplot as plt# scipy.optimize.curve_fit ile cozumdef gauss(x, genlik, ortalama, stsapma): return genlik * exp(-(x - ortalama)**2 /stsapma)x = linspace(-10,10)# Genligi 2.33, ortalama degeri 0.21, standart sapmasi 1.51 olan# bir Gaussian dagilim olusturup uzerine yine Gaussian bir gurultu ekleyelimA = 2.33mu = 0.21sigma = 1.51y = gauss(x, A, mu, sigma) + random.normal(0, 0.2, len(x))gmod = Model(gauss)# Modelimizi x, y verimize fit edelimsonuc = gmod.fit(y, x=x, genlik=2, ortalama=0, stsapma=1)print sonuc.fit_report()# Baslangic parametrelerimizle olusan fiti# Fit islemi sonrasi olusan en iyi uyumlamayi# ve verimizi bir grafikte gosterelimplt.plot(x, y, 'ro') # veriplt.plot(x, sonuc.init_fit, 'b--') # A=2, mu=0, sigma=1 icin fitplt.plot(x, sonuc.best_fit, 'g-') # Veri setine uyumlanan en iyi fitplt.show()# Fitimizin parametrelerini ekrana yazdiralimprint "En iyi uyumlamanin genligi = %.2f, ortalama degeri = %.2f, "\ "st.sapma = %.2f" % (sonuc.params['genlik'].value,\ sonuc.params['ortalama'].value,\ sonuc.params['stsapma'].value)

Page 38: A416 Astronomide Sayısal Çözümleme - IIozgur.astrotux.org/ast416/Ders_04/Ders04_Egri_Uyumlama.pdf · Lineer Regresyon Örnek : Bir roketin hızına karşılık maruz kaldığı

[[Model]] Model(gauss)[[Fit Statistics]] # function evals = 23 # data points = 50 # variables = 3 chi-square = 1.467 reduced chi-square = 0.031 Akaike info crit = -167.349 Bayesian info crit = -161.613[[Variables]] genlik: 2.19270401 +/- 0.111165 (5.07%) (init= 2) ortalama: 0.09067167 +/- 0.051070 (56.32%) (init= 0) stsapma: 1.52227546 +/- 0.178216 (11.71%) (init= 1)[[Correlations]] (unreported correlations are < 0.100) C(genlik, stsapma) = -0.577

En iyi uyumlamanin genligi = 2.19, ortalama degeri = 0.09, st.sapma = 1.52

Page 39: A416 Astronomide Sayısal Çözümleme - IIozgur.astrotux.org/ast416/Ders_04/Ders04_Egri_Uyumlama.pdf · Lineer Regresyon Örnek : Bir roketin hızına karşılık maruz kaldığı

Ödev 2 :Uzaklık Modülü Teslim Tarihi: 26 Nisan, Cuma

Yanda bir grup yıldız için görsel parlaklıkları ile mutlak parlaklıkları arasındaki farka karşılık uzaklıkları bir tablo halinde verilmiştir. Bu tablodan yararlanarak uzaklık modülünü (görsel parlaklık ile mutlak parlaklık arasındaki farkın uzaklığa ne şekilde bağlı olduğunu) gözlemsel (empirik) olarak bulunuz. Bu ifadeyi teorik uzaklık modeli ile karşılaştırınız. Bulduğunuz ifadeyi d= 20 pc uzaklığındaki bir yıldızın mutlak ve görsel parlaklıkları arasındaki farkı hesaplamak üzere kullanınız. Bulduğunuz değer üzerindeki bağıl hatayı hesaplayınız.

Not 1:. Sorunun Python programlama dilini kullanarak çözülmesi mecburidir!Not 2:. Nasıl bir fonksiyon aradığınıza ve onu nasıl ifade edeceğinize bağlı olarak linear uyumlama ya da logaritmik uyumlama yapmakta serbestsiniz.Not 3:. Programınız ekrana bulduğunuz ilişkinin parametreleri (a0,a1,korelasyon katsayisi, modelle gozlenen noktalar arasindaki farklarin kareleri toplami (Sr) ,standart hata) çıktısı vermelidir.Not 4: Sonuçta bulduğunuz eğriyi, gözlemsel noktaları ve d =20 pc için uyulamanızdan bulduğunuz değeri bir grafik üzerinde gösteriniz.

Yıldızm – M(kadir) d (pc)

Antares -6.15 170

Sirius 2.89 3

Castor -0.96 16

Pollux -0.08 10

Polaris -5.61 133

Vega 0.57 7

Deneb -8.18 430

Altair 1.45 5

Rigel -7.12 264

Betelgeuse -5.92 153

Page 40: A416 Astronomide Sayısal Çözümleme - IIozgur.astrotux.org/ast416/Ders_04/Ders04_Egri_Uyumlama.pdf · Lineer Regresyon Örnek : Bir roketin hızına karşılık maruz kaldığı

Kaynaklar

• Numerical Analysis Using Matlab and Excel 3rd ed., Steven T. Karris, Orchard Publications, 2007

• Numerical Methods for Engineers 6th ed., Steven C. Chapra, Raymond P. Canale, McGraw Hill, 2010

• Numerical Methods, Rao V. Dukkipati, New Age International, 2010