Hướng dẫn chi square contour plot python - chi vuông đường viền âm mưu trăn

Đó không phải là một giải pháp thỏa mãn, nhưng tôi đã buộc hình elip bằng cách sử dụng matplotlib.patches

import numpy as np
import matplotlib.pyplot as plt
from matplotlib.patches import Ellipse
import math

# set of x,y values (with y errors) to which a linear fit will be applied
x = np.array([1, 2, 3, 4, 5])
y = np.array([1.7, 2.1, 3.5, 3.2, 4.4])
erry = np.array([0.2, 0.2, 0.2, 0.3, 0.3])
ax = plt.subplot(111)

# apply fit to x,y array weighted by 1/erry^2
p2, V = np.polyfit(x, y, 1, w=1/erry, cov=True)

# define a chi square function into which parameter estimates are passed
def chisq(param1, param0):
    csq = np.sum(((param1*x + param0 - y)/erry) ** 2)
    return csq

# arrange labels for the coefficients so matches form y = theta1*x + theta0
theta1 = p2[0]
theta0 = p2[1]
# show coeffs with corresponding stat errors
print("a1 = ",theta1,"+-",np.sqrt(V[0][0]))
print("a0 = ",theta0,"+-",np.sqrt(V[1][1]))

# define arrays for the parameters running between +/- sigma
run1 = np.linspace(theta1 - np.sqrt(V[0][0]), theta1 + np.sqrt(V[0][0]))
run0 = np.linspace(theta0 - np.sqrt(V[1][1]), theta0 + np.sqrt(V[1][1]))

# define the minimum chi square value readily
chisqmin = chisq(theta0, theta1)
print(chisqmin)

# Would like to produce a contour at one sigma from min chi square value,
# i.e. obeys ellipse eqn. chi^2(theta0, theta1) = chisqmin + 1


# add lines one sigma away from the optimal parameter values that yield the min chi square value
plt.axvline(x=theta0+np.sqrt(V[1][1]),color='k',linestyle='--', linewidth=0.8)
plt.axvline(x=theta0-np.sqrt(V[1][1]),color='k',linestyle='--', linewidth=0.8)
plt.axhline(y=theta1+np.sqrt(V[0][0]),color='k',linestyle='--', linewidth=0.8)
plt.axhline(y=theta1-np.sqrt(V[0][0]),color='k',linestyle='--', linewidth=0.8)
plt.plot(theta0, theta1, 'o', markersize=4, color='k')
plt.annotate(r'LS estimate',
            xy=(theta0, theta1), xytext=(-80, -40), textcoords='offset points', fontsize=14,
            arrowprops=dict(arrowstyle="->", connectionstyle="arc3,rad=.2"))
plt.annotate(r'$\chi^{2}(\theta_{0}, \theta_{1})$ = $\chi^{2}_{min}$ + 1',
            xy=(1.2, 0.7), xytext=(-22, +30), textcoords='offset points', fontsize=14,
            arrowprops=dict(arrowstyle="->", connectionstyle="arc3,rad=.2"))
plt.xlabel(r'$\theta_{0}$', fontsize=16)
plt.ylabel(r'$\theta_{1}$', fontsize=16)
plt.xlim(theta0-2*np.sqrt(V[1][1]), theta0+2*np.sqrt(V[1][1]))
plt.ylim(theta1-2*np.sqrt(V[0][0]), theta1+2*np.sqrt(V[0][0]))

sig0 = np.sqrt(V[1][1])
sig1 = np.sqrt(V[0][0])
rho = V[0][1]/(sig1*sig0)
tantwophi = 2*rho*sig1*sig0/(sig0**2-sig1**2)
twophi = math.atan(tantwophi)
phi = twophi/2
phideg = math.degrees(phi)


ellipse=Ellipse((theta0, theta1), width=2.1*np.sqrt(V[1][1]), 
                height=0.8*np.sqrt(V[0][0]), angle=phideg, color='k', ls='-', lw=1.5, fill=False)
ax.add_patch(ellipse)


Điện toán khoa học sử dụng Python - Phys: 4905

Bài giảng #17, #18 - Giáo sư Kaaret

Bài tập về nhà số 13 nằm ở cuối trang.

Phù hợp với các đường cong phức tạp hơn vào dữ liệu

Phù hợp với đường cong tuyến tính như được mô tả trong các bài giảng 14-17 là vô cùng hữu ích và có nhiều lợi thế như thực tế là luôn có thể tìm thấy sự phù hợp nhất có thể của các tham số mô hình cho một tập dữ liệu nhất định. & NBSP; Tuy nhiên, & nbsp; Nhiều mô hình phức tạp hơn một mối quan hệ tuyến tính hoặc hơn một mối quan hệ như hàm mũ có thể được chuyển đổi thành một mối quan hệ tuyến tính. & NBSP; Có thể mở rộng các thói quen lắp đường cong tuyến tính thành đa thức, nhưng đa thức vẫn không bao gồm toàn bộ phạm vi chức năng có thể.

Để phù hợp với bất kỳ chức năng tùy ý nào với một tập hợp dữ liệu, chúng tôi sử dụng một kỹ thuật gọi là phù hợp với bình phương tối thiểu phi tuyến tính. & NBSP; Các đầu vào cơ bản giống như đối với phù hợp bình phương nhỏ nhất tuyến tính. & NBSP; Cụ thể, chúng tôi lấy một tập hợp các điểm dữ liệu với từng điểm dữ liệu được chỉ định bởi

  • giá trị của biến độc lập (xi),
  • giá trị của biến phụ thuộc hoặc biến số (YI),
  • độ không đảm bảo hoặc "lỗi" trên biến đo được (σi).
Và chúng tôi cũng sử dụng Chi-Squared làm số liệu phù hợp của chúng tôi và cố gắng giảm thiểu giá trị của Chi-Squared để tìm thấy sự phù hợp nhất.

χ 2 = ∑i [yi -y (xi) ℴi] 2χ kỹ thuật để tìm các bình phương thấp nhất là rất khác nhau. & nbsp; Trong các bình phương nhỏ nhất tuyến tính, chúng tôi đã tính toán một vài tổng và sau đó kết hợp các tổng đó để tìm các ước tính tốt nhất về các tham số tuyến tính và cả độ không đảm bảo trong các tham số đó. & NBSP; Quá trình này là tuyến tính (về mặt mã hóa) và luôn tạo ra ước tính tốt nhất được đảm bảo của các tham số mô hình.
However, the technique to find the lowest chi-squared is very different.  In linear least squares, we calculated a few sums and then combined those sums to find the best estimates of the linear parameters and also the uncertainty in those parameters.  The process is linear (in terms of coding) and always produces the guaranteed best estimate of the model parameters.

Trong các bình phương tối thiểu phi tuyến tính, chúng tôi đoán các tham số và sau đó lặp đi lặp lại các tham số để giảm chi bình phương cho đến khi chúng tôi thấy rằng chúng tôi không thể nhận được bất kỳ thấp hơn. & NBSP; Quá trình này có thể được coi là đi bộ quanh một cảnh quan miền núi cố gắng tìm điểm thấp nhất. & NBSP; Thật vậy, nếu chúng ta có một mô hình với hai tham số (A, B), thì chúng ta có thể tính toán chi bình phương tại mỗi điểm (A, B) và tạo một bản đồ địa hình trong đó Chi bình phương đóng vai trò của độ cao và (A, B ) đóng vai trò (kinh độ, vĩ độ). & nbsp; Biểu đồ 3D dưới đây đưa ra một ví dụ. & NBSP; Tìm các tham số phù hợp nhất trong bình phương tối thiểu phi tuyến tính sau đó tương đương với việc tìm điểm thấp nhất trong bản đồ. & NBSP; Ý tưởng này, nhưng với bản đồ bị lật để người ta cố gắng tìm đỉnh chứ không phải thung lũng, được gọi là "cảnh quan thể dục" trong sinh học tiến hóa. & NBSP; Thuật ngữ đó đã chuyển sang nhiều lĩnh vực khác.

Ý tưởng tìm kiếm xung quanh một cảnh quan cho điểm thấp nhất là rất hữu ích trong việc suy nghĩ về các ô vuông phi tuyến tính và thật hữu ích khi ghi nhớ bức tranh hình học này khi nghĩ về thuật toán. & NBSP; Phần chính của "thuật toán" của chúng tôi cho bình phương tối thiểu phi tuyến tính là "điều chỉnh lặp đi lặp lại các tham số để giảm chi bình phương". & Nbsp; Trong sự tương tự cảnh quan, "thuật toán" này về cơ bản là "đi xuống đồi". & Nbsp; Có rất nhiều cách khác nhau để tìm ra hướng tốt nhất để đi xuống đồi nhanh nhất và chúng ta sẽ thảo luận về một vài trong số đó.

Bức tranh cảnh quan cũng nêu bật một số vấn đề với bình phương tối thiểu phi tuyến tính. & NBSP; Phong cảnh ví dụ được hiển thị ở trên khá đơn giản và chúng ta có thể sẽ đạt đến mức tối thiểu χ2 bất kể nơi nào chúng ta bắt đầu tìm kiếm. & NBSP; Nhưng làm thế nào về cảnh quan được hiển thị dưới đây?

Cảnh quan này có một số cực tiểu địa phương ngoài một mức tối thiểu toàn cầu. & NBSP; Thuật toán của chúng tôi để "luôn đi xuống đồi" có thể khiến chúng tôi bị mắc kẹt ở mức tối thiểu địa phương, ngăn chúng tôi đến mức tối thiểu toàn cầu. & NBSP; Ngoài ra, mức tối thiểu cục bộ cụ thể mà chúng tôi tìm thấy sẽ phụ thuộc vào nơi chúng tôi bắt đầu tìm kiếm. & NBSP; Đây là một vấn đề quan trọng và chung chung trong phù hợp với đường cong bình phương tối thiểu phi tuyến tính. & NBSP; Cách lửa chắc chắn duy nhất để biết rằng bạn đã đạt được mức tối thiểu toàn cầu là thử mọi bộ tham số có thể có. & NBSP; Điều này đôi khi khả thi nếu bạn có hai hoặc một vài tham số, nhưng trở nên rất không khả thi đối với các mô hình có số lượng lớn các tham số. & NBSP; Thường thì bạn phải kiểm tra sự phù hợp của mình bằng cách sử dụng một số điểm bắt đầu khác nhau hoặc thực hiện tìm kiếm trong đó bạn thay đổi một tham số cụ thể trên một số phạm vi giá trị, ngay cả khi một vài giá trị đầu tiên thực sự làm tăng chi bình phương.

Một ứng dụng cho phân cực tia X

Phân cực nhất thiết tiết lộ thông tin về hình học của một hệ thống vì nó là một lượng vector. & NBSP; Trong vật lý thiên văn, phép đo phân cực tia X có khả năng tiết lộ hình học của các hệ thống, như các đĩa bồi tụ xung quanh các lỗ đen hoặc từ trường của các ngôi sao neutron, không thể giải quyết được với hình ảnh. & NBSP; Đại học Iowa đã đóng góp cho các nghiên cứu về một số vệ tinh được thiết kế để đo phân cực vật lý thiên văn. & NBSP;

Trong một nghiên cứu như vậy, chúng tôi đã đo sự phân cực của nguồn tia X được sử dụng để hiệu chỉnh phân cực tia X trên quỹ đạo, nguồn kiểm tra kỹ thuật tia X được điều chế (MXS) bởi Trung tâm bay không gian Goddard của NASA (GSFC). & NBSP; MXS tạo ra tia X bằng cách tăng tốc các electron thành năng lượng kilovolt và ném chúng vào mục tiêu titan. & NBSP; Titanium (TI) có đường tia X đặc trưng, ​​dòng Ti K-alpha ở 4,51 keV, được sản xuất khi các electron trong vỏ bên trong của nó bị kích thích. & NBSP; Vì chúng tôi có ý định sử dụng MXS để hiệu chỉnh một phân cực, chúng tôi cần phải đo sự phân cực của tia X mà nó tạo ra.

Tại Iowa, chúng tôi đã xây dựng một "phân cực tia X Bragg" bao gồm một tinh thể silicon được sử dụng để phản xạ tia X và máy dò tia X. & NBSP; Tia X thường không phản ánh tốt vì bước sóng của chúng, theo thứ tự của Angstroms, quá gần với không gian nguyên tử điển hình trong vật liệu rắn. & NBSP; Phản xạ Bragg cung cấp một phương tiện để phản ánh hiệu quả tia X trong phạm vi năng lượng hẹp. & NBSP; Bạn có thể đọc thêm về nó tại https://en.wikipedia.org/wiki/bragg%27S_LAW.  Phản xạ Bragg rất hữu ích cho việc phân cực vì bộ phản xạ Bragg hoạt động như một máy phân tích phân cực nếu góc phản xạ gần 90 độ. & NBSP; Bằng cách này, chúng tôi có nghĩa là một tia X với vectơ điện trường vuông góc với mặt phẳng phản xạ sẽ được phản xạ hiệu quả, trong khi tia X với vectơ điện trường của nó trong mặt phẳng phản xạ sẽ không được phản xạ.

Chúng ta có thể xây dựng một phân cực bằng cách sử dụng tinh thể phản xạ Bragg và máy dò tia X, như thể hiện trong hình trên. & NBSP; Chúng ta phải xoay gương phản xạ Bragg và máy dò xung quanh trục được xác định bởi các tia X đến. & NBSP; Bằng cách đo tốc độ đếm so với góc xoay, chúng ta có thể xác định sự phân cực của chùm tia X. & NBSP; Nếu các tia X được phân cực cao, thì máy dò sẽ ghi lại tốc độ đếm cao khi mặt phẳng phản xạ vuông góc với vectơ điện trường tia X và tốc độ đếm gần bằng không khi phân cực được xoay 90 độ. & NBSP; Biểu đồ của tốc độ đếm so với góc xoay được gọi là đường cong xoay, như thể hiện trong hình bên dưới. & NBSP; Lưu ý rằng sự phân cực là đối xứng theo vòng quay 180 độ, vì vậy chúng tôi chỉ bao gồm các góc xoay trong khoảng từ 0 đến 180 độ. & nbsp; chúng tôi mô tả đường cong điều chế bằng cách sử dụng phương trình của biểu mẫu
& nbsp; chúng tôi mô tả đường cong điều chế bằng cách sử dụng phương trình của biểu mẫu

S (ϕ) = a + bcos2 (ϕ-0) s (ϕ) = a + b \ cos^2 (ϕ-ϕ_0) góc vị trí phân cực ϕ 0 là góc mà cường độ tối đa được ghi lại, một mô tả Thành phần của cường độ và B mô tả cường độ phân cực. Biên độ điều chế là
The polarization position angle ϕ0 is the angle at which the maximum intensity is recorded, A describes the unpolarized component of the intensity, and B describes the polarized intensity. The modulation amplitude is

a = smax- sminsmax+smin = b2a+ba = \ frac {s_ {max} -s_ {min}} {s_ {max}+s_ {min}} = \ frac {b} {2a+b} , Biên độ điều chế là một ước tính tốt về phần phân cực của chùm tia X.
In Bragg polarimeters, the modulation amplitude is a good estimate of the polarization fraction of the X-ray beam.

Python phân cực

Bây giờ chúng ta sẽ tìm ra cách phù hợp với dữ liệu trong hình trên với phương trình cho đường cong điều chế bằng Python. & NBSP; Dữ liệu có sẵn trong tệp mxs_polarization.txt. & Nbsp; Tệp chứa một vài dòng nhận xét ở đầu bắt đầu bằng # và sau đó có các hàng có ba giá trị tương ứng với góc xoay, tốc độ đếm được đo và độ không đảm bảo về tốc độ đếm. & NBSP; Tạo tia X là một quá trình Poisson như phân rã phóng xạ và độ không đảm bảo được tính toán bằng thống kê Poisson.

Chương trình Plotrot.py đọc trong dữ liệu, vẽ nó, phù hợp với hằng số và sau đó phù hợp với một đường cong điều chế bằng cách sử dụng biểu mẫu được đưa ra ở trên và các sơ đồ đó. & NBSP; Phần lớn mã nên quen thuộc ngay bây giờ. & NBSP; Công cụ mới là thói quen phù hợp bình phương tối thiểu phi tuyến tính và mã hỗ trợ. & NBSP; Chúng tôi sử dụng thói quen Curve_Fit trong thư viện SCIPY Tối ưu hóa. & NBSP; Thói quen này lấy làm đầu vào:

  • một hàm có thể gọi được chỉ định mô hình mà chúng tôi muốn phù hợp. & nbsp; Đối số đầu tiên của hàm phải là biến độc lập. & NBSP; Các đối số khác là các tham số mô hình.
  • XDATA - Một mảng các giá trị của biến độc lập của các điểm dữ liệu.
  • YDATA - Các giá trị đo tương ứng.
  • P0 - Một dự đoán ban đầu cho các tham số. & nbsp; Không giống như bình phương nhỏ nhất tuyến tính, bạn cần đoán một điểm bắt đầu cho việc tìm kiếm chi bình phương tối thiểu. & NBSP; Như đã thảo luận ở trên (và bên dưới), điểm bắt đầu có thể ảnh hưởng đến kết quả của bạn. & NBSP; Đối với Curve_Fit, dự đoán ban đầu cần phải có tất cả các tham số mô hình được cuộn thành một mảng.
  • Sigma - Các lỗi đo lường.
  • Phương thức - Thuật toán để sử dụng để tìm chi bình phương tối thiểu. & NBSP; Có một số lựa chọn cho thuật toán. & Nbsp; Chúng ta sẽ bắt đầu với mặc định là thuật toán LevenbergTHER Marquardt.
Có một loạt các tham số khác cho Curve_fit. & NBSP; Hầu hết trong số này được đặt thành các giá trị mặc định hợp lý. & NBSP; Chúng ta sẽ thảo luận về cách thay đổi một số trong số chúng trong bài giảng tiếp theo.

Để sử dụng curve_fit, chúng ta cần xác định 'hàm có thể gọi được'. & Nbsp; Trong trường hợp của chúng tôi, chúng tôi muốn sử dụng hàm đường cong điều chế như được mô tả ở trên. & NBSP; Xác định hàm trong một biểu mẫu tương thích với Curve_Fit (biến độc lập trước, theo sau là các tham số mô hình được đưa ra riêng lẻ), chúng tôi nhận được

# Xác định chức năng được sử dụng để phù hợp với đường cong điều chế def func_cos2t (PHI, A, B, PHI0): & nbsp; in 'trong func_cos2t a, b, Phi0 =', a, b, Phi0 & nbsp; Trả về a + b*np.cos ((Phi-phi0)*np.pi/180) ** 2 Câu lệnh in Chúng ta hãy xem xét các hoạt động của Curve_Fit. & NBSP; Có lẽ bạn sẽ muốn nhận xét nó sau khi bạn hoàn thành các bài tập dưới đây.
def func_cos2t(phi, a, b, phi0):
  print 'In func_cos2t a, b, phi0 = ', a, b, phi0
  return a + b*np.cos((phi-phi0)*np.pi/180)**2

The print statement let's us look into the workings of curve_fit.  You'll probably want to comment it out once you're done with the exercises below.

Tải Plotrot.py vào máy tính của bạn và xem xét nó. & NBSP; Dòng duy nhất không được thiết lập để đặt pinit biến nên là


pinit = [1.0, 1.0, 1.0] # dự đoán ban đầu mặc định

Nếu bạn không cung cấp Curve_fit với dự đoán ban đầu, nó sẽ thử đặt tất cả các tham số thành 1. & nbsp; Hãy nhớ tải mxs_polarization.txt vào cùng một thư mục và sau đó thử chạy

Plotrot.py. & NBSP; Bạn sẽ nhận được một màn hình của các dòng từ câu lệnh in trong func_cos2t, một biểu đồ với dữ liệu và mô hình được trang bị tốt nhất và in ra trong các tham số được trang bị tốt nhất..  You should get a screenful of lines from the print statement in func_cos2t, a plot with the data and best fitted model, and a print out of the best fitted parameters.

Chúng ta có thể hiểu rõ hơn về cách thức hoạt động của LevenbergTHER Marquardt bằng cách xem đầu ra từ câu lệnh in trong

func_cos2t. & nbsp; Một cách để "lặp đi lặp lại các tham số để giảm bình phương CHI" là một phương thức gọi là "giảm độ dốc". & Nbsp; Phương pháp này chỉ là những gì nó nghe như. & NBSP; Cho rằng bạn đang ở một vị trí nào đó (a, b), bạn tìm thấy hướng trong đó χ2 giảm nhanh nhất. & NBSP; Đây là hướng của âm của độ dốc χ2. & NBSP; Đây là những gì mà một vài cuộc gọi đầu tiên đến func_cos2t được sử dụng để làm. & Nbsp; Tất nhiên, cuộc gọi đầu tiên đến func_cos2t là với các tham số ban đầu. & NBSP; Đó là một bí ẩn tại sao nó được gọi là ba lần với cùng một tập hợp các tham số. & NBSP; Sau đó func_cos2t được gọi với deltas nhỏ lần lượt từng tham số. & Nbsp; . Δa, Δχ2/ΔB, Δχ2/Δϕ0Δχ^2/Δa, \; Δχ^2/ΔB, \; Δχ^2/Δϕ_0, người ta có thể ước tính độ dốc. & Nbsp; Curve_fit thực hiện một bước theo hướng đó với độ lớn bằng dự đoán tốt nhất về vị trí tối thiểu. & NBSP; Sau đó, nó thực hiện bốn cuộc gọi đến func_cos2t, một tại điểm tìm kiếm mới và ba lần được bù bởi các đồng bằng nhỏ cho mỗi tham số lần lượt. & Nbsp; Một lần nữa, curve_fit đang tính toán một xấp xỉ bằng số vào gradient. & Nbsp; Sau đó, nó thực hiện một bước nữa và lặp lại quy trình. & Nbsp;.  One way to "iteratively adjust the parameters to decrease the chi-squared" is a method called "Gradient descent".  The method is just what it sounds like.  Given that you are at some position (a,b), you find the direction in which χ2 decreases fastest.  This is the direction of the negative of the gradient of χ2.  This is what the first few calls to func_cos2t are used to do.  The first call to func_cos2t is, of course, with the initial parameters.  It is a mystery why it gets called three times with the same set of parameters.  Then func_cos2t is called with small deltas to each parameter in turn.  (The deltas are equal to the current value of the parameter multiplied by the parameter diff_step, which can be set when calling curve_fit, but usually the default value is good enough unless your chi-squared landscape has flat parts.) By looking at Δχ2/Δa, Δχ2/Δb,Δχ2/Δϕ0Δχ^2/Δa, \; Δχ^2/Δb, \; Δχ^2/Δϕ_0, one can estimate the gradient.  curve_fit takes a step in that direction with a magnitude equal to its best guess of where the minimum will be.  It then makes four calls to func_cos2t, one at the new search point and three offset by small deltas to each parameter in turn.  Again, curve_fit is calculating a numerical approximation to the gradient.  It then takes another step and repeats the process. 

Các

Curve_fit thường xuyên ngừng đoán khi một trong ba điều kiện xảy ra: giá trị chi bình phương (hoặc "hàm chi phí") có sự thay đổi phân số giữa các bước nhỏ hơn FTOL tham số, các biến độc lập có thay đổi phân số nhỏ hơn XTOL hoặc độ dốc thay đổi ít hơn gtol. & nbsp; Tất cả các tham số này có giá trị mặc định là 1E-8 và có thể được đặt làm tham số tùy chọn khi bạn gọi Curve_fit. & NBSP; Khi nhìn vào đầu ra, bạn có thể lưu ý rằng hai điểm tìm kiếm cuối cùng rất gần nhau và Curve_fit đó chỉ cần thực hiện 8 đánh giá về độ dốc để đến đó. routine stops guessing when one of three conditions occur: the chi-squared value (or "cost function") has a fractional change between steps of less than the parameter ftol, the independent variables have a fractional change less than xtol, or the gradient changes by less than gtol.  All of these parameters have a default value of 1E-8 and can be set as optional parameters when you call curve_fit.  In looking at the output, you might note that the last two search points are very close together and that curve_fit needed to do only 8 evaluations of the gradient to get there.

Lưu ý rằng chúng tôi đã không thảo luận về việc thuật toán LevenbergTHER Marquardt quyết định mức độ bao xa của mỗi bước. & NBSP; Nó thực hiện điều này bằng cách thực hiện một xấp xỉ tuyến tính với cảnh quan Chi bình phương tại mỗi điểm tìm kiếm và sử dụng một "hệ số giảm xóc" để điều chỉnh độ dài của bước. & NBSP; Bài viết của Marquardt giới thiệu kỹ thuật hoặc trang Wikipedia trên thuật toán LevenbergTHER Marquardt là các tài liệu tham khảo tốt.

Trong phần còn lại của lớp, bạn nên thử các điểm tìm kiếm ban đầu khác nhau. & NBSP; Bạn có thể giải phóng các dòng khác nhau được đặt

pinit trong mã và viết của riêng bạn. & nbsp; Tại sao các điểm bắt đầu khác nhau tạo ra các tham số phù hợp tốt nhất khác nhau? & NBSP; Với các đối xứng của hàm đường cong điều chế, điều gì là đúng về các tham số được trang bị tốt nhất khác nhau? in the code and write your own.  Why do different starting points produce different best fitted parameters?  Given the symmetries of the modulation curve function, what is true about the different best fitted parameters?

Ngoài ra, điều chế được tính toán từ các giá trị phù hợp nhất cho A và B, nhưng nó không bao gồm ước tính lỗi. & NBSP; Xây dựng lỗi về điều chế bằng cách sử dụng việc lan truyền lỗi và sửa đổi câu lệnh in để in lỗi trên điều chế.

Bài giảng #18

Sự không chắc chắn trong phù hợp

Hãy xem xét các ước tính lỗi tham số. & NBSP; Với hai, hoặc nhiều hơn, tham số có thể có mối tương quan giữa các tham số được trang bị. & NBSP; Biểu đồ bên dưới (từ các công thức nấu ăn bằng cách báo chí, Teukolsky, Vetterline và Flannery) cho thấy nhiều phép đo lặp đi lặp lại của một cặp giá trị. & NBSP; Các giá trị có mối tương quan một phần như được hiển thị bởi mũi tên thiên vị. & NBSP; Để rút ra các thanh lỗi 1-sigma, chúng tôi muốn vẽ các khoảng có chứa 68% số đo. & NBSP; Có một vài cách khác nhau mà chúng tôi có thể giải thích điều này. & NBSP; Chúng tôi có thể xem xét các phép đo của A1 một mình. & NBSP; Trong trường hợp đó, chúng tôi sẽ vẽ giới hạn trên và dưới bao gồm 68% các phép đo của A1 và nhận được khoảng tin cậy 68% được đánh dấu bằng một mũi tên dọc. & NBSP; Chúng ta có thể làm tương tự cho A0. & NBSP; Hoặc, chúng ta có thể xem xét các điểm với nhau và vẽ một hình elip chứa 68% điểm. & NBSP; Đó được đánh dấu là khu vực tin cậy chung. & Nbsp; Lưu ý rằng giá trị tối đa cho A1 bên trong vùng tin cậy chung 68% lớn hơn so với đầu trên của khoảng tin cậy 68% trên A1.

Các cân nhắc tương tự được áp dụng khi chúng tôi phù hợp với các tham số mô hình vào một tập hợp dữ liệu. & NBSP; Chúng tôi có thể muốn kiểm tra các tham số được trang bị riêng lẻ hoặc theo nhóm. & NBSP; Đây là một lựa chọn của "các tham số quan tâm" và có phần mở để giải thích. & NBSP; Một số người cảm thấy mạnh mẽ rằng tất cả các tham số có các tham số được trang bị tốt nhất là các tham số quan tâm trong khi những tham số khác rất vui khi chọn một hoặc một số lượng nhỏ các tham số, vì họ không quan tâm đến các tham số khác.

Để tìm ra cách xác định phạm vi lỗi của các tham số được trang bị, hãy quay lại cảnh quan Chi bình phương. & NBSP; Các tham số được trang bị tốt nhất các tham số ở mức tối thiểu trong Chi-Squared. & NBSP; Có vẻ hợp lý rằng độ chính xác trên có thể xác định vị trí của mức tối thiểu phụ thuộc vào hình dạng của cảnh quan xung quanh mức tối thiểu. & NBSP; Cụ thể, chúng tôi xác định các lỗi trên các tham số được trang bị bằng cách sử dụng thay đổi trong bình phương chi so với mức tối thiểu hoặc Δχ2Δχ^2. & NBSP; Nhìn vào hình bên dưới, nếu chúng ta muốn tìm lỗi 1 sigma trên B, thì chúng ta bắt đầu ở mức tối thiểu và đi theo hướng tăng B cho đến khi bình phương tăng tăng lên 1. & nbsp; Điều này cung cấp cho chúng ta giới hạn trên trên b. & Nbsp; Để tìm giới hạn dưới, chúng tôi quay trở lại mức tối thiểu và đi theo hướng giảm B cho đến khi bình phương tăng tăng lên 1. & nbsp; Điều này cung cấp cho chúng tôi giới hạn trên và dưới của chúng tôi trên B cho trường hợp một tham số quan tâm.

Nếu chúng ta coi cả A và B đều được quan tâm, thì chúng ta cần bao phủ lưới 2D trong A và B xung quanh mức tối thiểu trong Chi-Squared và xác định một đường viền trong đó Chi-Squared tăng theo một giá trị nhất định trong tối thiểu. & NBSP ; "Giá trị nhất định" phụ thuộc vào mức độ tin cậy mong muốn của bạn (tôi khuyên bạn nên đặt tư thế quyền lực để tăng mức độ tin cậy của bạn trước khi nói chuyện) và số lượng tham số quan tâm của bạn. & NBSP; Bảng dưới đây liệt kê Δχ2Δχ^2 & nbsp; Các giá trị cho một số giá trị p/số sigma khác nhau cho các số tham số quan tâm khác nhau. & NBSP; Nói chung, đường viền Δχ2Δχ^2 có thể có bất kỳ hình dạng nào. & NBSP; Trong thực tế, họ có xu hướng trông hình elip. & NBSP; Nếu trục chính của hình elip không song song với một trong các tham số, thì các tham số có tương quan. & NBSP; Nếu đường viền là hình tròn, thì các tham số không tương quan. & Nbsp; .

Mức độ tự tin
& nbsp; 2 & nbsp; Đối với số lượng tham số quan tâm
σP
1
2
3
4
1
68.3%
1.00
2.30
3.53
4.72
1.65
90%
2.71
4.61
6.25
7.78
2
95.4%
4.00
6.17
8.02
9.70
3
99.73%
9.00
11.8
14.2
16.3

Lỗi hình elip trong Python

Bây giờ chúng ta hãy thử điều này trong Python. & NBSP; Tải mã PlotRot2.py, là phần cắt của PLOTROT.PY với các cảnh được thêm vào để vẽ các hình elip lỗi. & NBSP; Tìm kiếm "Tìm lỗi trên tham số B và PHI", đây là khởi đầu của công cụ mới. & NBSP; Mã mới tìm thấy khoảng tin cậy chung cho B và Phi0. & NBSP; Trước tiên, chúng tôi tạo các mảng chứa các giá trị thử nghiệm cho B và PHI và sau đó tạo và điền vào một mảng với sự thay đổi trong bình phương chi so với giá trị tối thiểu cho từng cặp giá trị thử. & NBSP; Lưu ý rằng bạn có thể phải điều chỉnh phạm vi của các giá trị dùng thử nếu bạn sử dụng mã này để thực hiện các tác vụ phù hợp khác. & NBSP; Chọn phạm vi của các giá trị thường là một quá trình thử nghiệm và lỗi. & NBSP; Bạn chọn một loạt các giá trị và sau đó kiểm tra xem các đường viền quan tâm Delta Chi bình phương của bạn có nằm trong phạm vi. & NBSP; Ngoài ra, bạn có thể muốn sử dụng lưới thô hơn khi điều chỉnh phạm vi giá trị của bạn và lưới tốt hơn trong việc tìm đường viền chi bình phương cuối cùng của bạn.

Khối mã tiếp theo tạo ra một biểu đồ đường viền bằng cách sử dụng các mảng của các giá trị dùng thử và delta chi bình phương. & Nbsp; Các mức đường viền tương ứng với Sigma 1, 2 và 3 cho hai tham số quan tâm.

Khối mã sau đây tìm thấy các cạnh của hình elip lỗi trong biểu đồ đường viền. & Nbsp; Lưu ý rằng nó hiện đang được đặt để cung cấp khoảng tin cậy 1-sigma hoặc 68%. & NBSP; Khối cũng in giá trị được trang bị tốt nhất cùng với các thanh lỗi trên và dưới cho từng tham số quan tâm. & NBSP; Khối cuối cùng biểu thị các giới hạn trên biểu đồ đường viền. & NBSP; Lưu ý rằng nếu giới hạn của bạn được vẽ trên đường chấm chấm không thẳng hàng với các đường viền, lưới của bạn có thể quá thô.

Sau khi chạy mã, hãy xem các phạm vi lỗi tính toán từ tìm kiếm chi bình phương và so sánh chúng với các ước tính từ curve_fit. & Nbsp; Lưu ý rằng việc tìm kiếm trực tiếp cảnh quan Chi bình phương luôn là cách tốt hơn để ước tính độ không đảm bảo trên các tham số được trang bị của bạn.

Làm mọi việc theo kiểu tuyến tính

Có thể mô tả đường cong điều chế là tổng của hằng số, hàm sin và hàm cosin,

S (ϕ) = i + qcos (2ϕ) + usin (2ϕ) s (ϕ) = i + q \, \ cos (2ϕ) + u \, \ sin (2ϕ) Điều này liên quan đến đường cong điều chế với "stokes & nbsp; tham số "của chùm tia X. & nbsp; Để biết thêm chi tiết, hãy xem chương về phân cực tia X trong Sổ tay WSPC về thiết bị thiên văn, David Burrows (chủ biên), Được xuất bản bởi Công ty Xuất bản Khoa học Thế giới.
This relates the modulation curve to the "Stokes  parameters" of the X-ray beam.  For more details see the chapter on X-Ray Polarimetry in The WSPC Handbook of Astronomical Instrumentation, David Burrows (ed.), published by the World Scientific Publishing Company.

Điều này biến đổi vấn đề phi tuyến tính của chúng tôi thành tuyến tính. & NBSP; Ngoài ra, nó cung cấp một ví dụ tốt đẹp về không gian tuyến tính. & NBSP; Chúng ta có thể xác định một toán tử tuyến tính sao cho

& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; L (100) = 1l \, \ started {pmatrix} 1 \\ 0 \\ 0 \ end {pmatrix} = 1, & nbsp; & nbsp; & nbsp; L (010) = cos (2ϕ) l \, \ started {pmatrix} 0 \\ 1 \\ 0 \ end {pmatrix} = \ cos (2ϕ), & nbsp; và & nbsp; & nbsp; L (001) = sin (2ϕ) l \, \ started {pmatrix} 0 \\ 0 \\ 1 \ end {pmatrix} = \ sin (2ϕ).

Không gian tuyến tính & nbsp; ℝ3ℝ^3 được định nghĩa là các điểm (i, q và u) được thực hiện bởi l sau đó bao gồm tất cả các hàm điều chế có thể được mô tả bởi hàm s (ϕ) s () của chúng tôi . & nbsp; Viết một chương trình cho phép bạn nhập (I, Q và U) và sau đó vẽ hàm kết quả có thể giúp khái niệm hóa các không gian tuyến tính được xác định trên các chức năng.

Bài tập về nhà #13

Viết một chương trình phù hợp với đường cong điều chế () s () với các tham số I, Q và U như được định nghĩa ở trên với dữ liệu phân cực từ MXS. & NBSP; Bạn có thể sửa đổi PlotRot2.py hoặc sử dụng thói quen phù hợp tuyến tính. & Nbsp; Tính toán biên độ điều chế và lỗi của nó theo I, Q và U. & NBSP; Mã của bạn nên in ra biên độ điều chế được trang bị tốt nhất và lỗi và cũng là góc phân cực được trang bị tốt nhất và lỗi theo kiểu được định dạng độc đáo. & NBSP; Nó cũng nên vẽ sơ đồ dữ liệu phân cực với đường cong điều chế được trang bị tốt nhất và khoảng tin cậy chung cho Q và U. & NBSP;

Nếu bạn tham vọng, bạn cũng có thể thử vẽ sơ đồ khoảng tin cậy chung cho biên độ điều chế và góc phân cực.

Nhiệm vụ này có giá trị 30 điểm.