Python khớp nhiều gaussian với biểu đồ
Dữ liệu tuân theo phân phối Gauss khi phân tán được gây ra bởi tổng của nhiều yếu tố độc lập và có trọng số bằng nhau Show Phân phối tần số (biểu đồ) được tạo từ dữ liệu Gaussian sẽ trông giống như phân phối Gaussian hình chuông Từng bước mộtDữ liệu phù hợp với bạn phải ở dạng phân bố tần suất trên bảng XY. Các giá trị X là trung tâm bin và các giá trị Y là số lượng quan sát Nếu bạn bắt đầu với một cột dữ liệu và sử dụng Prism để tạo phân phối tần suất, hãy đảm bảo rằng bạn đặt loại biểu đồ thành "biểu đồ XY", với điểm hoặc biểu đồ tăng đột biến. Điều này đảm bảo rằng Prism tạo bảng kết quả XY với các trung tâm bin được nhập dưới dạng giá trị X. Thay vào đó, nếu bạn chọn biểu đồ thanh, Prism sẽ tạo bảng kết quả cột, tạo nhãn hàng từ tâm thùng. Loại bảng này không thể phù hợp với hồi quy phi tuyến tính, vì nó không có giá trị X Bắt đầu từ bảng phân phối tần số, nhấp vào Phân tích, chọn Hồi quy phi tuyến tính từ danh sách phân tích XY, sau đó chọn phương trình "Gaussian" từ họ phương trình "Gaussian" Mô hình (phân phối Gaussian)Y=Biên độ*exp(-0. 5*((X-Mean)/SD)^2) Biên độ là chiều cao của tâm phân bố tính bằng đơn vị Y Giá trị trung bình là giá trị X ở trung tâm của phân phối SD là thước đo độ rộng của phân phối, theo cùng đơn vị với X Giá trị trung bình và SD sẽ không giống với giá trị trung bình và SD được tính trực tiếp từ dữ liệu thô. Có hai lý do cho sự khác biệt. Đầu tiên là việc tạo phân phối tần suất yêu cầu một quyết định khá tùy ý về độ rộng của thùng và điều đó sẽ ảnh hưởng đến các giá trị phù hợp nhất của Giá trị trung bình và SD. Lý do thứ hai là hồi quy phi tuyến tính giả định rằng phần dư (khoảng cách của các điểm từ đường cong) tuân theo phân phối Gaussian. Giả định này sẽ không hoàn toàn đúng trong phân phối tần số Mô hình (tổng của hai bản phân phối Gaussian)Nếu dữ liệu của bạn là hỗn hợp các giá trị được lấy mẫu từ hai phân phối Gaussian, hãy điều chỉnh phân phối tần số cho một mô hình tổng của hai phân phối Gaussian Một=Biên độ1*exp(-0. 5*((X-Mean1)/SD1)^2) Hai=Biên độ2*exp(-0. 5*((X-Mean2)/SD2)^2) Y= Một + Hai Biên độ và Biên độ là độ cao của tâm phân bố theo đơn vị Y Mean1 và Mean2 là các giá trị X ở trung tâm của hai bản phân phối SD1 và SD2 là thước đo độ rộng của các bản phân phối, trong cùng đơn vị với X Prism không thông minh lắm trong việc gán các giá trị ban đầu cho các tham số. Nếu bạn gặp khó khăn trong việc làm cho mô hình này vừa vặn, hãy thử loay hoay với các giá trị tham số ban đầu Khu vực dưới một phân phối GaussianKhu vực dưới phân phối Gaussian bằng Biên độ*SD/0. 3989. Hằng số đó bằng nghịch đảo của căn bậc hai của hai số pi Khi chúng tôi vẽ một tập dữ liệu chẳng hạn như biểu đồ, hình dạng của biểu đồ được biểu đồ đó là cái mà chúng tôi gọi là phân phối của nó. Hình dạng phổ biến nhất được quan sát thấy của các giá trị liên tục là đường cong hình chuông, còn được gọi là phân phối Gaussian hoặc chuẩn Nó được đặt tên theo nhà toán học người Đức Carl Friedrich Gauss. Một số bộ dữ liệu ví dụ phổ biến tuân theo phân phối Gaussian là Nhiệt độ cơ thể, Chiều cao của mọi người, Số dặm ô tô, điểm IQ. Hãy thử tạo phân phối chuẩn lý tưởng và vẽ đồ thị bằng Python Cách vẽ sơ đồ phân phối Gaussian trong PythonChúng tôi có các thư viện như Numpy, scipy và matplotlib để giúp chúng tôi vẽ một đường cong bình thường lý tưởng Python3
đầu ra Các điểm trên trục x là các quan sát và trục y là khả năng của mỗi quan sát Chúng tôi đã tạo các quan sát cách đều nhau trong phạm vi (-5, 5) bằng cách sử dụng np. sắp xếp(). Sau đó, chúng tôi chạy nó thông qua định mức. pdf() với giá trị trung bình là 0. 0 và độ lệch chuẩn là 1, trả về khả năng quan sát đó. Các quan sát xung quanh 0 là phổ biến nhất và các quan sát xung quanh -5. 0 và 5. 0 rất hiếm. Thuật ngữ kỹ thuật cho hàm pdf() là hàm mật độ xác suất Hàm GaussianĐầu tiên, hãy khớp dữ liệu với hàm Gaussian. Mục tiêu của chúng tôi là tìm các giá trị của A và B phù hợp nhất với dữ liệu của chúng tôi. Đầu tiên, chúng ta cần viết một hàm python cho phương trình hàm Gaussian. Hàm phải chấp nhận biến độc lập (giá trị x) và tất cả các tham số sẽ làm cho nó Python3
Chúng tôi sẽ sử dụng hàm curve_fit từ mô-đun python scipy. tối ưu hóa để phù hợp với dữ liệu của chúng tôi. Nó sử dụng bình phương nhỏ nhất phi tuyến tính để khớp dữ liệu với dạng chức năng. Bạn có thể tìm hiểu thêm về curve_fit bằng cách sử dụng chức năng trợ giúp trong sổ ghi chép Jupyter hoặc tài liệu trực tuyến scipy Hàm curve_fit có ba đầu vào bắt buộc. chức năng bạn muốn khớp, dữ liệu x và dữ liệu y bạn khớp. Có hai đầu ra. Đầu tiên là một mảng các giá trị tối ưu của các tham số. Thứ hai là ma trận hiệp phương sai ước tính của các tham số mà từ đó bạn có thể tính toán sai số chuẩn cho các tham số ví dụ 1 Python3
ví dụ 2 Python3
|