Dữ liệu cùng với thư việnđược lập trình sẵn cho phép người sử dụng có thể có được những ứng dụng sau : • Sử dụng các hàm có sẵn trong thư viện, các phép tính toán học thông thường.. 1.1.
Trang 1TRƯỜNG ĐẠI HỌC SƯ PHẠM HÀ NỘI 2
NGUYỄN BIÊN THÙY
PHƯƠNG PHÁP MONTE CARLO
CHO BÀI TOÁN KIỂM ĐỊNH XÁC SUẤT
KHÓA LUẬN TỐT NGHIỆP ĐẠI HỌC
Hà Nội – Năm 2015
Trang 2TRƯỜNG ĐẠI HỌC SƯ PHẠM HÀ NỘI 2
NGUYỄN BIÊN THÙY
PHƯƠNG PHÁP MONTE CARLO
CHO BÀI TOÁN KIỂM ĐỊNH XÁC SUẤT
Chuyên ngành: Toán Ứng dụng
KHÓA LUẬN TỐT NGHIỆP ĐẠI HỌC
NGƯỜI HƯỚNG DẪN KHOA HỌC:
TS HÀ BÌNH MINH
Hà Nội – Năm 2015
Trang 3Trước khi trình bày nội dung chính của bản báo cáo thực tập chuyên ngành, em xin bày tỏ lòng biết ơn sâu sắc tới Tiến sĩ Hà Bình Minh đã tận tình hướng dẫn để em có thể hoàn thành đề tài này.
Em cũng xin bày tỏ lòng biết ơn chân thành tới toàn thể các thầy cô giáo trong khoa Toán, Trường Đại học Sư phạm Hà Nội 2 đã dạy bảo em tận tình trong suốt quá trình học tập tại khoa.
Nhân dịp này em cũng xin được gửi lời cảm ơn chân thành tới gia đình, bạn bè đã luôn bên em, động viên, giúp đỡ em trong suốt quá trình học tập và thực hiện đề tài thực tập này.
Xuân Hòa, ngày tháng 05 năm 2015
Sinh viên
Nguyễn Biên Thùy
Trang 4Tôi xin cam đoan rằng số liệu và kết quả nghiên cứu trong khóa luận này là trung thực và không trùng lặp với các đề tài khác Tôi cungũng xin cam đoan rằng mọi sự giúp đỡ cho việc thực hiện khóa luận này đã được cảm oơn và các thông tin thu trích dẫn trong khóa luận đã được chỉ rõ nguồn gốc.
Hà Nội, tháng 05 năm 2015
Sinh viên
Nguyễn Biên Thùy XÁC NHẬN CỦA CƠ SỞ THỰC TẬP
Trang 51 TỔNG QUAN MATLAB VÀ ỨNG DỤNG 3
1.1 Tổng quan về MATLAB 3
1.1.1 Khái niệm MATLAB 3
1.1.2 Cấu trúc dữ liệu của MATLAB, các ứng dụng 4
1.1.3 Hệ thống MATLAB 4
1.1.4 Làm việc với các cửa sổ của MATLAB được quản lý bởi desktop 5 1.1.5 Thực hành với Command window: 8
1.1.6 Sử dụng các lệnh gián tiếp từ các file dữ liệu 10
1.1.7 Lưu và lấy dữ liệu 12
1.1.8 Các toán tử logic và các lệnh điều khiển 13
1.1.9 Các hằng số được sử dụng trong MATLAB 16
1.1.10 Số phức trong MATLAB 16
1.1.11 Các lệnh thoát khỏi chương trình, liệt kê các biến, xóa biến 16
1.2 Một vài ứng dụng của MATLAB trong Thống kê 17
1.2.1 Giới thiệu 17
1.2.2 Một số ví dụ 18
2 KIỂM ĐỊNH GIẢ THUYẾT VÀ ƯỚC LƯỢNG KHOẢNG TIN CẬY 20 2.1 Kiểm định giả thuyết 20
2.2 Khoảng tin cậy 26
3 PHƯƠNG PHÁP MONTE CARLO KIỂM ĐỊNH GIẢ THUYẾT 28 3.1 Giới thiệu 28
3.2 Kiểm định giả thuyết với Monte Carlo 30 3.2.1 Phương pháp Monte Carlo kiểm định giả thuyết (giá trị tới hạn) 30
Trang 63.3 Phương pháp Monte Carlo đánh giá kiểm định giả thuyết 35
Kết luận 39
Trang 71.Lí do chọn đề tài
Phương pháp Monte Carlo ra đời cùng với thế hệ máy tính điện tử đầu tiên ở Mỹ từnhững năm 1943-1944 Tuy nhiên tên gọi phương pháp Monte Carlo hay còn gọi làphương pháp thử thống kê xuất hiện trong từ điển Toán học từ những năm 1949-1950.Đến năm 1961 cuốn chuyên khảo đầu tiên về phương pháp Monte Carlo của nhà Toánhọc người Nga N.P.Buslenko và J.A.Srejder ra đời và được nhiều nhà Toán học quantâm Ở nước ta phương pháp Monte Carlo được áp dụng và giảng dạy vào thực tế từnhững năm 1963, mà công đầu tiên phải kể đến là giáo sư Nguyễn Quý Hỷ, trường đạihọc KHTN-ĐHQG Hà Nội
Phương pháp Monte Carlo đã và đang được nhiều nhà Toán học ứng dụng quantâm cho bài toán thống kê cần kiểm định Phương pháp này được ứng dụng để rút rakết luận về không gian mẫu và độ đo lường tin cậy của các kết quả thu được từ một sốmẫu ngẫu nhiên Phương pháp Monte Carlo được sử dụng khi các phương pháp truyềnthống không đem lại kết quả Để hiểu hơn về phương pháp Monte Carlo trong bài toánthống kê cần kiểm định , tôi lựa chon đề tài "Phương pháp Monte Carlo cho bài toánthống kê cần kiểm định”
2 Mục đích nghiên cứu
Nghiên cứu phương pháp Monte Carlo và ứng dụng của nó trong bài toán thống kêcần kiểm định
3 Phương pháp nghiên cứu
Sử dụng MATLAB hỗ trợ, thực hành với các ví dụ, so sánh với các phương pháp cổđiển
4 Phạm vi nghiên cứu
Do thời gian không nhiều nên bài báo cáo chỉ tìm hiểu được một số vấn đề của phươngpháp Monte Carlo
5 Bố cục đề tài
Đề tài bao gồm ba chương:
• Chương 1: Tổng quan về MATLAB và ứng dụng.
Chương 1 giới thiệu phần mềm tính toán và lập trình MATLAB, cách sử dụng vàmột vài ứng dụng trong Thống kê
Trang 8Chương 2 trình bài toán kiểm định giả thuyết và ước lượng khoảng tin cậy cổ điển
và ví dụ
• Phương pháp Monte Carlo kiểm định giả thuyết Chương 3 trình bày về phương
pháp Monte Carlo và ứng dụng trong việc giải quyết bài toán kiểm định giả thuyết
Do thời gian thực hiện đề tài không nhiều, kiến thức còn hạn chế nên báo cáo khôngtránh khỏi những sai sót Tác giả mong nhận được sự góp ý và những ý kiến phản biệncủa quý thầy cô và bạn đọc Xin chân thành cảm ơn!
Trang 9TỔNG QUAN MATLAB VÀ ỨNG DỤNG
Trong Chương 1, chúng tôi trình bày tổng quan về MATLAB và một vài ứng dụng củaphần mềm này trong Xác suất thống kê
1.1 Tổng quan về MATLAB
1.1.1 Khái niệm MATLAB
MATLAB là một ngôn ngữ lập trình thực hành bậc cao được sử dụng để giải các bàitoán về kĩ thuật MATLAB tích hợp được việc tính toán, thể hiện kết quả, cho phéplập trình, giao diện làm việc rất dễ dàng cho người sử dụng Dữ liệu cùng với thư việnđược lập trình sẵn cho phép người sử dụng có thể có được những ứng dụng sau :
• Sử dụng các hàm có sẵn trong thư viện, các phép tính toán học thông thường.
• Cho phép lập trình tạo ra những ứng dụng mới.
• Cho phép mô phỏng các mô hình thực tế.
• Phân tích khảo sát và hiển thị dữ liệu.
• Với phần mềm đồ họa cực mạnh.
• Cho phép phát triển, giao tiếp với một số phần mềm khác như C++, Fortran.
Trang 101.1.2 Cấu trúc dữ liệu của MATLAB, các ứng dụng.
Dữ liệu
Dữ liệu của MATLAB được thể hiện dưới dạng ma trận (hoặc mảng -tổng quát),
và có các kiểu dữ liệu sau đây :
• Kiểu đơn single, kiểu này có lợi về bộ nhớ dữ liệu vì nó đòi hỏi ít byte nhớ hơn,
kiểu dữ liệu này không được sủ dụng trong các phép tính toán học, độ chính xáckém hơn
• Kiểu double kiểu này là kiểu thông dụng nhất trong của các biến trong MATLAB.
• Các kỹ sư, các nhà nghiên cứu khoa học.
• Dùng MATLAB để tính toán, nghiên cứu tạo ra các sản phẩm tốt nhất trong sản
xuất
1.1.3 Hệ thống MATLAB
Hệ thống MATLAB được bao gồm năm thành phần
• Môi trường phát triển
Đây là nơi đặt các thanh công cụ, các phương tiện giúp chúng ta sử dụng các lệnh
và các file, ta có thể liệt kê một số như sau:
Trang 11- Desktop
- Command Window
- Command History
- Browser for viewinghelp
• Thư viện, các hàm toán học
Bao gồm các ấu trúc như tính tổng, sin cosin atan, atan2 etc , các phép tínhđơn giản đến các phép tính phức tạp như tính ma trận nghịch đảo, tính trị riêng,chuyển đổi furier, laplace, symbolic library
• Ngôn ngữ MATLAB
Đó là các ngôn ngữ lập trình cấp cao về ma trận và mảng, với các dòng điện, cáchàm, cấu trúc dữ liệu vào, có thể lập trình hướng đối tượng
• Đồ họa trong MATLAB
Bao gồm các câu lệnh thể hiện đồ họa trong môi trường 2D và 3D tạo các hìnhảnh chuyển động,cung cấp các giao diện tương tác giữa người sử dụng và máytính
• Giao tiếp với các ngôn ngữ khác
MATLAB cho phép tương tác với các ngôn ngữ như C, Fortran
1.1.4 Làm việc với các cửa sổ của MATLAB được quản lý bởi desktop
Trước tiên để khởi động MATLAB bạn kích đúp vào biểu tượng file MATLAB.exe trênmàn hình Cửa sổ đó chứa các thanh công cụ cần thiết cho việc quản lý các files, cácbiến, cửa sổ lệnh, có thể coi desktop là các panel gồm các ô, vùng, quản lý và tác dụngcủa từng cửa sổ nhỏ được quản lý bởi desktop
a Cửa sổ Command Window
Là cửa sổ giao tiếp chính của MATLAB bởi đây là nơi nhận giá trị các biến, hiểnthị giá trị, tính toán giá trị biểu thức, thực thi các hàm số có sẵn trong thư viện ( dạnglệnh) hoặc các hàm (dạng function) do người dùng lập trình ra trong M- files Các lệnhđược nhập sau dấu nhắc “≫ ” và nếu có sai sót gì trong quá trình nhập lệnh thì hãy
Trang 12Hình 1.1: Giao diện MATLAB trên hệ điều hành Windows
ấn phím Enter cho đến khi nhận được dấu ≫ Thực thi lệnh bằng phím Enter.
Hình 1.2: Giao diện cửa sổ lệnh Command Window
b.Cửa sổ Command History
Các dòng mà bạn nhập vào trong cửa sổ Command window ( các dòng này có
thể là các dòng nhập biến, hoặc có thể là dòng lệnh thực hiện hàm nào đó ) được giữ
lại trong cửa sổ Command history và cửa sổ này cho phép ta sử dụng lại những lệnh
đó bằng cách kích đôi chuột lên các lệnh đó hoặc các biến nếu như bạn muốn sử dụnglại biến dó
c Cửa sổ Workspace
Là cửa sổ hiện tên các biến bạn sử dụng cùng với kích thước vùng nhớ (số bytes),kiểu dữ liệu (lớp), các biến được giải phóng sau mỗi lần tắt chương trình
Trang 13Hình 1.3: Giao diện cửa sổ lệnh Command Window
Hình 1.4: Giao diện cửa sổ lệnh Cửa sổ Workspace
d Cửa sổ Editor
Là cửa sổ để soạn thảo chương trình ứng dụng, để thực thi chương trình viết trongM-file bằng cách gõ tên của file chứa chương trình đó có trong cửa sổ Commandwindow
Khi một chương trình viết trong M-file, thì tùy theo ứng dụng cụ thể , tùy theongười lập trình mà chương trình có thể viết dưới dạng sau :
• Dạng Script file : Tức là chương trình gồm tập hợp các câu lệnh viết dưới dạng
liệt kê, không có biến dữ liệu nào và biến lấy giá trị ra
Trang 14• Dạng hàm function : có biến dữ liệu và biến ra.
e Đường dẫn thư mục
Nơi lưu giữ các file chương trình
1.1.5 Thực hành với Command window:
Sau khi xuất hiện dấu trong cửa sổ Commmand window điều đó đồng nghĩa cho
phép bạn nhập biến hoặc thực hiện các câu lệnh mong muốn
Ví dụ 1.1.1 Gõ các lệnh sau :
≫ A = pi /2 ; Enter
≫ B = sin (A); Enter
Hoặc chương trình soạn thảo trong M-files dưới đây:
% Chuong trinh trong M-files
x = 0 : pi /6 : 2 * pi ;
y = sin (x) ;
plot (x,y) ;
% chuong trinh duoc luu voi ten file la
Thực thi trong cửa sổ Command Window bằng dòng lệnh sau :
Hình 1.5: Thực thi lệnh trực tiếp trên cửa sổ Command Window
Do dữ liệu của MATLAB được thể hiện dưới dạng ma trận cho nên các biến dùngtrong MATLAB dữ liệu của nó cũng thể hiện dưới dạng ma trận, việc đặt tên biếnkhông được đặt một cách tùy tiện mà phải đặt theo một qui định
• Tên ma trận phải bắt đầu bằng một chữ cái, và có thể chứa đến 19 kí tự là số
hoặc chữ
Trang 15Hình 1.6: Kết quả của việc gọi lệnh ve_sin với M-file ve_sin.m
• Bên phải dấu bằng là các giá trị của ma trận.
• Dấu chấm phảy (;) là để phân cách các hàng, còn các giá trị trong hàng được
phân cách bởi dấu phảy (,) hoặc dấu cách
• Kết thúc nhập ma trận thường có dấu chấm phảy hoặc không tùy theo bạn muốn
thể hiện kết quả của nó hay không
Nhập các biến, ma trận, các lệnh liệt kê trực tiếp
Thông thường MATLAB sử dụng 4 vị trí sau dấu phảy cho các số thập phân có dấuphảy chấm động và sử dụng biến “ans” cho kết quả của phép tính Ta có thể đăng kíbiến thể hiện kết quả này củ riêng mình Xét tập các lệnh sau:
Ví dụ trường hợp không sử dụng biến lưu kết quả, biến ans tự động được gán
Trang 16Bạn có thể sử dụng các biến này cho các phép tính tiếp theo ví dụ như :
Tất cả các biểu thức Toán học đều được thực hiện từ trái qua phải, ta có bảng thứ
tự ưu tiên sau :
thứ tự các phép tính
1 Dấu ngoặc trong biểu thức
2 Toán tử∧ , thực thi từ trái qua phải
3 Phép nhân, chia có cùng mức ưu tiên, thực thi từ trái sang phải
Chú ý
• Các lệnh được kết thúc bằng dấu chấm phảy, MATLAB sẽ không hiện kết quả
trên màn hình, ngược lại không có dấu chấm phảy MTALAB sẽ thể hiện kết quả
• Trong quá trình nhập ma trận nếu các phần tử trên một hàng dài quá, ta có thể
xuống dòng bằng toán tử ( )
1.1.6 Sử dụng các lệnh gián tiếp từ các file dữ liệu
Như đã trình bày trong phần cửa sổ M- file, tập hợp các lệnh của MATLAB được soạnthảo trong cửa sổ M- file dưới dạng Script file hoặc dạng hàm function ( có biến đầuvào và ra) và được lưu vào trong file dữ liệu có phần mở rộng là m ( thông thường cácchương trình soạn thảo trong M- file thường được lưu theo đường dẫn C:\ matlabR12\
Trang 17work\ tên file), muốn thực thi chương trình soạn thảo đó ta gọi lệnh trong cửa sổ
Commandwindow, tùy theo chương trình viết dưới dạng Script file hay dạng function
mà trong cửa sổ ta có hai cách gọi như sau :
• Đối với chương trình viết dạng Script file
\% luu vao file tinhtoan m
Hình 1.7: Thực thi một loại lệnh với M-file
thực thi chương trình trên trong cửa sổ Commandwindow bằng lệnh :
≫ tinhtoan Enter
• Đối với chương trình viết dạng function, có tham số đầu vào và ra, ta phải truyền
đủ các tham số cần thiết Ví dụ giải phương trình bậc hai với ba tham số đầu vào
là các hệ số a, b ,c và hai biến đầu ra là nghiệm của phương trình x1 và x2
Trang 18Hình 1.8: Sử dụng chương trình tự viết với MATLAB
1.1.7 Lưu và lấy dữ liệu
Với MATLAB khi thoát khỏi chương trình, các biến dữ liệu (trong Workspace) sẽ bịmất, do vậy khi thực hiện lại chương trình bạn phải khai báo lại các biến cần thiết,điều này gây mất thời gian và biện pháp tốt nhất là bạn lưu tất cả các biến cần thiếtcho chương trình của bạn vào file riêng, khi cần chúng ta gọi chúng ra bằng một lệnh.Lưu dữ liệu có thể là:
• Lưu tất cả các biến trong vùng làm việc (Workspace)
• Một số biến nhất định tùy theo nhu cầu Sau đây là các cách lưu các biến dữ liệu
:
a.Lưu và lấy dữ liệu dưới file nhi phân (binary)
Trang 19Lưu dữ liệu
≫ save(‘ C:\ matlabR12\ work\ten_file’) % lưu toàn bộ biến trong Workspace
≫ save(‘ C: \ matlabR12\ work\ten_file’, ‘x’, ‘y’) % chỉ lưu biến x và y
Chú ý
C:\ matlabR12\ work\ten_file là đường dẫn tới file, thông thường khi cài đặt
chương trình thì cài đặt mặc định là vào ô C
Khôi phục lại dữ liệu dùng lệnh sau:
≫ load (‘ C:\ matlabR12\ work\ten_file’) % lấy dữ liệu
b Lưu và lấy dữ liệu dưới file ASCII
Lưu dữ liệu
Lưu toàn bộ biến trong Workspace vào file
≫ save(‘ C: \ matlabR12\ work\ten_file’, ‘-ASCII’)
Lưu hai biến x, y vào trong file
≫ save(‘ C: \ matlabR12\ work\ten_file’, ‘x’, ‘y’, ‘-ASCII’).
Khi thực hiện lệnh :
≫ load (‘ C: \ matlabR12\ work\ten_file’, ‘-ASCII’)
thì trong Workspace sẽ xuất hiện biến có tên là tên của file, kích đúp chuột lên biếnnày sẽ thấy xuất hiện dữ liệu của toàn bộ biến được lưu giữ, việc truy nhập đến biếnlưu giữ thông qua việc truy nhập kiểu ma trận
1.1.8 Các toán tử logic và các lệnh điều khiển
a Các toán tử quan hệ
Một biểu thức logic trong MATLAB có được từ sự so sánh các đại lượng khác nhau( ví dụ như hai đại lượng A và B) Những kí hiệu thể hiện sự so sánh được gọi là cáctoán tử quan hệ, sau đây là liệt kê các toán tử:
Bảng liệt kê các toán tử quan hệ
Toán tử quan hệ Ý nghĩa
Trang 20Các toán tử quan hệ thực hiện phần so sánh từng phần của mảng, chúng trả lại mộtmảng có cùng kích thước với hai mảng trên, với phần tử trong mảng 0 hoặc 1 tươngứng với các quan hệ so sánh là sai hay đúng
Trường hợp đặc biệt so sánh hai số phức
+ Khi dùng các toán tử quan hệ là < hoặc > thì chỉ so sánh phần thực của nó màthôi
+ Khi dùng các toán tử quan hệ < = hoặc > = thì so sánh cả phần thực lẫn phần ảo
Khi so sánh hai chuỗi
Dùng toán tử strcmp
Cấu trúc
strcmp ( chuỗi 1, chuỗi 2)
Ví dụ
≫ Chuoi 1 = ‘ Pham Duc Dai ’;
≫ Chuoi 2 = ‘ Vu van van’;
≫ ss = ( Chuoi 1 , Chuoi 2 );
ss = 0
Chú ý : Khi so sánh một số vô hướng với một ma trận thì số đó được nhân với một
ma trận ones( size( ma trận so sánh )) sao cho có kích thước giống với ma trận cần sosánh rồi mới so sánh
Trang 21A & B and (A, B)
• Các phép tính số học sẽ được thực hiện trước khi thực hiện các biểu thức logic.
• Khi tính toán ta nên thêm dấu ngoặc đơn để làm cho biểu thức trở nên sáng sủa
hơn
• Gặp những biểu thức phức tạp sẽ xử lý các tính toán số học trước, sau đó các
toán tử logic được xem xét từ trái qua phải
c.Một số hàm toán học thông thường hay sử dụng
Trang 221.1.9 Các hằng số được sử dụng trong MATLAB
• Kí tự inf thay thế cho ∞ trong toán học
Inf : là số vô cùng lớn mà MATLAB không thể hiện được
1.1.11 Các lệnh thoát khỏi chương trình, liệt kê các biến, xóa biến
• Lệnh exit : tác dụng thoát khỏi chương trình.
• Lệnh clc ( clearcommand) : xóa tất cả các lệnh trong cửa sổ Commandwindow.
• Lệnh clear xóa toàn bộ các biến trong bộ nhớ hiện thời
Trang 23• Lệnh whos cho biết tất cả các biến hiện thời, kích thước ô nhớ biến đó.
• Lệnh quit cũng giống như lệnh exit.
• Các phím mũi tên lên xuống trên bàn phím được dùng để gọi lại các lệnh đã thực
• Phương pháp hồi quy bao gồm các mô hình tuyến tính, phi tuyến tính, ANOVA, ,
• Sinh số ngẫu nhiên, tựa ngẫu nhiên.
• Phân tích khai phá dữ liệu
Một số hàm tính toán cơ bản của MATLAB về Thống kê:
Tên hàm Ý nghĩarand Sinh số giả ngẫu nhiên phân phối chuẩnmean Tính trung bình
media n Tính trung vịstd Tính độ lệch chuẩn
max Tính giá trị lớn nhấtmin Tính giá trị nhỏ nhấtcov Tính ma trận hiệp phương saicorcoef Tính ma trận tương quansort Sắp xếp dữ liệu
hist Vẽ biểu đồ của dữ liệu