Luận văn Khai phá dữ liệu và ứng dụng trong y tế dự phòng - Hoàng Văn Tiến

1. Các kết quả đạt được Để nghiên cứu bài toán ứng dụng khai phá dữ liệu trong y tế dự phòng, học viên đã tập trung nghiên cứu các khái niệm về y tế dự phòng, thực trạng về nhu cầu trong việc quản lý, phân tích và dự báo đươc dịch bệnh trên tập số liệu được báo cáo. Bên cạnh đó, học viên cũng nghiên cứu, tìm hiểu một số phương pháp khai phá dữ liệu hiện nay. Cùng với đó là đề xuất một số phương pháp khai dữ liệu phù hợp với tập dữ liệu dịch bệnh cúm do Google công bố. Dựa trên nghiên cứu đó luận văn đề xuất một mô hình dự báo dịch bệnh truyền nhiễm dựa trên tập dữ liệu thời gian. Luận văn cũng tiến hành cài đặt thực nghiệm một tập dữ liệu được trích xuất trong tập dữ liệu của một quốc gia. Dựa vào kết quả phân tích, dự báo như đã trình bày trong phần thực nghiệm, lấy đó làm cơ sở cho cho xây dựng các bài toán dự báo tình hình dịch bệnh. 2. Hướng nghiên cứu tiếp theo Trong khuôn khổ luận văn này, tôi mới chỉ dừng lại ở việc phân tích chuỗi dữ liệu thời gian và đưa ra dự báo dựa vào xu hướng dữ liệu trên thực nghiệm trong mô hình đó, đánh giá kết quả dự báo trên tập dữ liệu so với số liệu thực tế. Trong thời gian tới, tôi sẽ tiếp tục thực nghiệm các tập dữ liệu còn lại trong tập dữ liệu được công bố, đồng thời xem xét hướng nghiên cứu bổ sung nhằm phân tích, đánh giá các quy luật diễn biến dịch bệnh cúm trên toàn cầu dự trên các đặc điểm thời gian, địa lý, điều kiện thời tiết để nâng cao độ chính xác và giảm thiểu việc bỏ sót các cặp quan hệ trong chuỗi dữ liệu thời gian.

pdf63 trang | Chia sẻ: yenxoi77 | Lượt xem: 700 | Lượt tải: 0download
Bạn đang xem trước 20 trang tài liệu Luận văn Khai phá dữ liệu và ứng dụng trong y tế dự phòng - Hoàng Văn Tiến, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
c giá trị đo một đại lượng nào đó và giá trị đó được ghi nhận theo diễn biến thời gian. Chúng ta có thể hiểu chuỗi dữ liệu thời gian là một dãy các vector hoặc một dãy các giá trị phụ thuộc vào các mốc thời gian: {𝑥(𝑡0), 𝑥(𝑡1), 𝑥(𝑡2), , 𝑥(𝑡𝑖−1), 𝑥(𝑡𝑖), 𝑥(𝑡𝑖+1), }. Việc phân tích dữ liệu chuỗi thời gian chính là việc tìm ra mối liên hệ giữa P và tương ứng với giá trị 𝑥(𝑡), ta có công thức như sau: 𝑃 → 𝑥(𝑡). Ta thấy nhiều ví dụ về dữ liệu chuỗi thời gian như: số lượng người mắc cúm diễn biến theo thời gian, số liệu thu nhập bình quân đầu người của Việt Nam diễn biến qua nhiều năm,.. Có thể chia dữ liệu chuỗi thời gian thành hai dạng: rời rạc và liên tục. Các chuỗi dữ liệu có thời gian không liền mạch kéo theo dữ liệu không liền mạch đó là chuỗi dữ liệu rời rạc. Với dữ liệu đảm bảo tính liên tục, t là các mốc thời gian và 𝑥(𝑡) là các dữ liệu tương ứng với thời gian t đó là chuỗi dữ liệu liên tục. Với đặc điểm của tập dữ liệu dịch bệnh cúm do Google Flu Trends là các số liệu được ghi nhận theo diễn biến thời gian, và giá trị các số liệu chỉ có một thuộc tính duy nhất là số ca mắc cúm. Sự tương quan của các dữ liệu trong tập dữ liệu ở đây là sự biến đổi dữ liệu theo thời gian. Chính vì vậy, qua phân tích chi tiết các phương pháp khai phá dữ liệu ở phần trên, luận văn quyết định lựa chọn phương pháp phân tích hồi quy trên tập dữ liệu thời gian (time series regression), với hai đặc tính của hai biến: biến độc lập và biến phụ thuộc, được thể hiện tương quan giữa thời gian và số ca mắc cúm tại thời điểm tương ứng. 2.4. Các công cụ, phần mềm hỗ trợ khai phá dữ liệu Các phần mềm hỗ trợ khai phá dữ liệu rất đa dạng, trong phạm vi luận văn này chỉ đề cập tới một số phần mềm đang thông dụng, đang sử dụng rộng rãi. Trên cơ sở đó, nghiên cứu, lựa chọn một công cụ phù hợp và áp dụng trên tập dữ liệu dịch bệnh cúm do Google Flu Trends công bố. Các công cụ đã được luận văn nghiên cứu đề cập: - Phần mềm Weka; - Phần mềm phân tích số liệu SPSS; - Phần mềm phân tích thống kê R. 2.4.1. Phân tích số liệu bằng phần mềm Weka Weka (viết tắt của Waikato Environment for Knowledge Analysis) là một công cụ khai thác dữ liệu ban đầu được phát triển tại Đại học Waikato tại New Zealand [12]. Weka bắt đầu như là một dự án chính phủ tài trợ vào năm 1993 [12]. Mặc dù Pentaho đã thông qua các công cụ Weka làm công cụ khai thác dữ liệu của nó, nó chỉ là một phần của nền tảng BI. Việc tích hợp trong nền tảng Pentaho được giới hạn một plugin đặc biệt cho Kettle để gọi một thuật toán điểm Weka. Năm 1996, phiên bản đầu tiên đã được phát hành vào năm 1999 và phiên bản 3 (100% được viết bằng Java) đã được 15 phát hành. Phiên bản hiện tại 3.6 là một bản phát hành nâng cấp vẫn dựa trên mã 3.0, làm Weka có lẽ là phần trưởng thành hầu hết các nền tảng Pentaho BI. Hình 2.4. Giao diện phần mềm weka Weka bao gồm ba công cụ khác nhau, mỗi công cụ trong số đó có thể được sử dụng độc lập, nhưng khi kết hợp với nhau tạo ra một nền tảng khai thác dữ liệu rất mạnh mẽ. Các chức năng chính như sau: Explorer – Điểm khởi đầu cho làm quen với Weka và khai thác dữ liệu. Explorer cho phép dễ dàng làm việc với các bộ dữ liệu. Nó cũng cung cấp một loạt các chức năng. Experimenter – làm việc, thiết lập và thực hiện các thí nghiệm lớn, nơi tập hợp nhiều dữ liệu và nhiều thuật toán có thể được thêm vào cùng một lúc. Kết quả của thí nghiệm sau đó có thể được so sánh với nhau để xác định các kết quả đã được (thống kê) tốt hơn so với những người khác. KnowledgeFlow – Sự bổ sung mới nhất cho các bộ công cụ Weka có thể được sử dụng để xây dựng hoàn chỉnh quy trình công việc khai thác dữ liệu tương tự như các quy trình bạn đã quen thuộc với trong Pentaho tích hợp dữ liệu hoặc các studio thiết kế. Định dạng đầu vào của Weka: Trước khi bạn có thể phân tích dữ liệu, nó phải được chuẩn bị để sử dụng trong Weka. Weka có thể đọc dữ liệu từ nhiều nguồn khác nhau, bao gồm cả trực tiếp từ một cơ sở dữ liệu JDBC và các tập tin CSV. Weka cũng có riêng, định dạng file gốc của nó. Việc đầu tiên được gọi ARFF (Attribute Relation File Format) là một định dạng tập tin dựa trên văn bản nhưng với siêu dữ liệu thêm vào để Weka biết loại dữ liệu trong tập tin. Như bạn có thể thấy, nó có chứa các mối quan hệ (chủ đề của sự phân tích), tất cả các thuộc tính được sử dụng bao gồm cả các giá trị có thể hoặc các kiểu dữ liệu, và các dữ liệu chính nó. Định dạng thứ hai được gọi là XRFF (eXtensible attribute-Relation File Format) và là một phần mở rộng dựa trên XML của các định dạng ARFF. Cả hai tập tin ARFF và XRFF có thể được mở trong một hình thức lưu trữ là tốt. XRFF có lợi thế hơn ARFF 16 chuẩn ở chỗ nó cho phép các thuộc tính lớp được xác định trong tập tin. Các tập tin chuẩn ARFF không chỉ định một thuộc tính lớp và để lại nó cho người dùng lựa chọn một thông qua giao diện người dùng đồ họa hoặc thông qua một lựa chọn nếu sử dụng giao diện dòng lệnh Weka của. XRFF mặt khác cho phép một thuộc tính lớp mặc định được xác định trong tập tin. Thuộc tính này sau đó được chọn tự động trong giao diện dòng lệnh hoặc giao diện Weka. Tất nhiên, điều này không ngăn chặn người dùng tự chọn thuộc tính khác như các lớp nếu họ mong muốn. Cuối cùng, XRFF cho phép thêm cả thuộc tính và khởi tạo, cho phép cân bằng tầm quan trọng của mỗi thuộc tính trong một kết quả. 2.4.2. Giới thiệu về SPSS (Statistical Product and Services Solutions) SPSS là phần mềm phục vụ thống kê, với một bộ thư viện lớn các thuật toán học máy, phân tích văn bản, nguồn mở, tích hợp dễ dàng với những dữ liệu lớn [13]. SPSS dễ sử dụng, linh hoạt và thường được dùng trong nghiên cứu xã hội, kinh tế học. Hình 2.5. Giao diện SPSS SPSS cung cấp các chức năng quản lý dữ liệu và phân tích thống kê với giao diện đồ họa thân thiện với người dùng. SPSS phiên bản 22 đem lại cho người dùng một giao diện đơn giản giúp bạn tạo ra các đồ thị và dễ dàng hiệu chỉnh đồ thị. Trong SPSS, các đồ thị có chất lượng cao và bạn có thể dễ dàng dán chúng vào các tài liệu khác cũng như từ các tài liệu khác như Word, Excel bạn có thể dễ dàng copy dữ liệu qua lại. 2.4.3. Phân tích số liệu bằng R R là một phần mềm hoàn toàn miễn phí, được sử dụng cho phân tích dữ liệu, thống kê và vẽ biểu đồ [14]. R là ngôn ngữ lập trình đa năng, có thể sử dụng cho nhiều mục đích, tính toán, giải trí, phân tích thống kê phức tạp [14]. R là một ngôn ngữ lập trình, cho nên chúng ta có thể sử dụng nó để phát triển các phần mềm phục vụ tính toán [14]. 17 Hình 2.6. Giao diện phần mềm R Đánh giá hỗ trợ của R về mặt phân tích và dự đoán số liệu thì thấy rằng R là công cụ phân tích thống kê mạnh, nhưng cũng có một số đánh giá sau: - Thích hợp với các bài toán phân tích thống kê và vẽ biểu đồ; - Môi trường làm việc sử dụng câu lệnh, phức tạp và khó khai thác; - Dữ liệu đầu vào cho phân tích dạng bảng theo cấu trúc file .csv hoặc file .txt, công cụ không có hỗ trợ kết nối trực tiếp vào cơ sở dữ liệu; - Trong R cho phép tính toán thực hiện trên vectors hay nói cách khác R là một ngôn ngữ vector, vì vậy chúng ta có thể sử dụng bất kỳ hàm nào trên vector và không phải sử dụng vòng lặp. Ví dụ: chúng ta có một mảng và qua mỗi phần tử trong mảng lại tăng 1. Nếu chúng ta không dùng vector, cần lặp qua dãy các phần tử và trong vòng lặp chúng ta có n phép tính +1 với mảng gồm n phần tử. - R là ngôn ngữ thống kê và được sử dụng nhiều và có thế mạnh trong lĩnh vực sinh học, thống kê dữ liệu và di truyền họ. Với những ưu điểm vượt trội như trên, trong luận văn này học viên quyết định lựa chọn R làm công cụ hỗ trợ phân tích tập dữ liệu dịch bệnh cúm do Google Flu Trends cung cấp tại phần trình bày thực nghiệm. Tóm tắt chương 2 Chương 2 học viên đã giới thiệu về các phương pháp và công cụ phục vụ khai phá dữ liệu. Bên cạnh đó, cũng đã đề cập đến chuỗi dữ liệu thời gian để chúng ta hiểu bản chất của chuỗi dữ liệu thời gian. Qua phân tích chi tiết đặc điểm của các phương pháp khai phá dữ liệu và dựa trên đặc điểm của tập dữ liệu Google Flu Trends, đã quyết định lựa chọn phương pháp hồi quy để phân tích và dự báo. 18 Chương 3 sẽ đi sâu phân tích phương pháp phân tích hồi quy với chuỗi dữ liệu thời gian làm cơ sở cho việc thực nghiệm. 19 CHƯƠNG 3. PHƯƠNG PHÁP PHÂN TÍCH VÀ DỰ BÁO VỚI CHUỖI DỮ LIỆU THỜI GIAN 3.1. Dữ liệu chuỗi thời gian Dữ liệu chuỗi thời gian là một dãy giá trị phép đo trên cùng một đối tượng được ghi nhận theo thời gian, các phép đo được thực hiện theo thời gian định kỳ hoặc không [10]. Hình 3.1. Số liệu diễn biến cúm tại phía Nam Châu phi từ năm 2006 đến 2015 Dữ liệu chuỗi thời gian có các thành phần cơ bản như: thành phần xu hướng; thành phần mùa (thời vụ); thành phần chu kỳ (dài hạn); các điểm bất thường và ngẫu nhiên [10]. Hình 3.2. Biểu diễn xu hướng giảm của dữ liệu - Thành phần xu hướng: để chỉ xu hướng tăng hay giảm của dữ liệu y trong chuỗi thời gian. Thành phần xu hướng này thường được biểu diễn trên đồ thị bởi một đường thẳng hay đường cong trơn. Chuỗi dữ liệu không tồn tại thành phần xu hướng (tức là dữ liệu không tăng hoặc không giảm) thì chuỗi đó dừng theo giá trị trung bình. 20 Hình 3.3. Biểu diễn thay đổi chuỗi thời gian theo từng khoảng thời gian - Thành phần mùa (thời vụ): để chỉ chiều hướng tăng hay giảm của giá trị y được tính theo giai đoạn thời gian (khoảng thời gian ngắn). Ví dụ: số lượng trẻ em mắc các bệnh về hô hấp tăng lên vào dịp cao điểm rét đậm, rét hại ở nước ta. Hình 3.4. Biểu diễn chu kỳ chuỗi thời gian - Thành phần chu kì (dài hạn): biểu thị bằng sự tăng, giảm của dữ liệu chuỗi thời gian xoay quanh xu hướng. Thường trong chuỗi dữ liệu dài hạn thì khó đoán chu kì. - Thành phần ngẫu nhiên: Đây là thành phần ngược với chu kỳ, thành phần ngẫu nhiên chỉ sự thay đổi bất thường của giá trị trong chuỗi thời gian và thường không dự đoán được sự thay đổi của dữ liệu. Những tác động gây ra sự thay đổi dữ liệu thường do các yếu tố bên ngoài tác động. Hình 3.5. Sơ đồ chuỗi thời gian với định lượng 𝐘(𝐭) theo diễn biến thời gian t 21 Với sơ đồ Hình 3.5 ta có Yt là giá trị định lượng trên chuỗi thời gian được tính tại thời điểm t, qua đó ta có thể xác định được các mô hình sau: - Mô hình cộng: 𝑌𝑡 = 𝑇𝑡 + 𝑆𝑡 + 𝐶𝑡 + 𝐼𝑡. (3.1) - Mô hình nhân: 𝑌𝑡 = 𝑇𝑡𝑆𝑡𝐶𝑡𝐼𝑡. (3.2) Trong đó: T là thành phần xu hướng (Trend); S là thành phần mùa (Seasonality); C là thành phần chu kỳ (Cyclical); I là thành phần ngẫu nhiên (Irregular). Mô hình nhân được sử dụng nhiều hơn. Nếu thành phần chu kỳ và mùa không ảnh hưởng đến mức chung của chuỗi thời gian thì nên sử dụng mô hình cộng, ngược lại mô hình nhân được sử dụng nếu thành phần mùa phụ thuộc xu hướng và chu kỳ. 3.2. Tính dừng của dữ liệu chuỗi thời gian Dữ liệu chuỗi thời gian có thể được tạo ra từ một quá trình và kết quả của nó là tập dữ liệu theo thời gian. Quá trình đó, sinh ra một tập dữ liệu tổng thể và một tập hợp dữ liệu con được trích xuất từ tập dữ liệu tổng thể đó gọi là một tập dữ liệu mẫu. Một tính chất quan trọng của dữ liệu chuỗi thời gian là tính dừng [4]. Một chuỗi giá trị trên thời gian t là Yt được coi là dừng khi kỳ vọng, phương sai và hiệp phương sai ở các độ trễ khác nhau giữ nguyên theo diễn biến thời gian [4]. Chuỗi Yt được coi là dừng khi thỏa mãn: - 𝐸(𝑌𝑡) = 𝜇(∀𝑡). (3.3) - 𝑉𝑎𝑟(𝑌𝑡) = 𝐸(𝑌𝑡 − 𝜇) 2 = 𝜎2(∀𝑡). (3.4) - 𝐶𝑜𝑣(𝑌𝑡 , 𝑌𝑡+𝑘) = 𝐸[(𝑌𝑡+𝑘 − 𝜇)(𝑌𝑡 − 𝜇)] = 𝑌𝑘(∀𝑡). (3.5) hiệp phương sai giữa Yt và Yt + k không phụ thuộc thời gian t mà phụ thuộc độ trễ thời gian k giữa hai thời đoạn. 3.2.1. Kiểm tra tính dừng chuỗi thời gian 3.2.1.1. Kiểm tra trực quan trên trên đồ thị biểu diễn chuỗi thời gian Chuỗi yt, nếu đồ thị 𝑌 = 𝑓(𝑡) cho trung bình và phương sai của Yt không đổi theo thời gian thì chuỗi có tính dừng. Quan sát đồ thị chuỗi dữ liệu thời gian nếu thấy trung bình có xu hướng tăng hoặc giảm theo từng khoảng thời gian thì có thể dự đoán rằng chuỗi là không dừng. Phương pháp này giúp ta đánh giá trực quan, ban đầu về tính dừng của chuỗi thời gian. Tuy nhiên, với những chuỗi thời gian có xu hướng không rõ ràng, phương pháp này khó khả thi và kết quả kiểm tra đôi khi không đúng. 3.2.1.2. Kiểm tra dựa trên sơ đồ tự tương quan và tự tương quan riêng phần 3.2.1.2.1. Sơ đồ tự tương quan ACF (Autocorelation Function) Sử dụng dùng hàm tự tương quan ACF, trong đó: độ trễ k ký hiệu bằng ρk, xác định bằng công thức như sau: 22 𝐴𝐶𝐹(𝑘) = 𝑝𝑘 𝑐𝑜𝑣(𝑌𝑡, 𝑌𝑡−𝑘) 𝑉𝑎𝑟(𝑌𝑡) (3.6) Giá trị ρk có giá trị từ -1 đến 1, là hệ số tương quan giữa Yt và Yt-k. Hàm tự tương quan đo lường sự phụ thuộc tuyến tính giữa các cặp quan sát Yt và Yt-k . Ví dụ: ρ1 là hệ số tương quan giữa Yt và Yt-1, ρi là hệ số tương quan giữa Yt và Yt-i... Nếu vẽ đồ thị ρk với độ trễ k, đồ thị này sẽ cho ra một lược đồ tương quan ACF. 3.2.1.2.2. Sơ đồ tự tương quan riêng phần PACF (Partial Autocorrelation Function) Ta có hệ số tự tương quan ρk với 𝑘 ≥ 2, cho thấy sự kết hợp tuyến tính giữa Yt và Yt+k. Tuy vậy, mức độ kết hợp tuyến tính giữa chúng có thể do tác động của một số biến khác. Trong trường hợp này là do ảnh hưởng từ các biến Yt-1, , Yt-k+1. Do vậy, ta sử dụng hàm tương quan PACF để đo độ kết hợp giữa Yt và Yt-k , với hệ số tương quan riêng ρkk ước lượng theo công thức Durbin: 𝑃𝐴𝐶𝐹(𝑘) = 𝑝𝑘𝑘 = 𝑝𝑘− ∑ 𝑝𝑘−1 𝑗 𝑝𝑘−𝑗 𝑘−1 𝑗=1 1 − ∑ 𝑝𝑘−1 𝑗 𝑝𝑗 𝑘−1 𝑗=1 (3.7) Hệ số tương quan riêng phần thể hiện mối quan hệ giữa hai biến khi tất cả những biến khác giữ nguyên giá trị. Nếu chuỗi dừng thì các kk cũng có phân phối chuẩn 𝑁(0, 1 𝑛⁄ ), do đó kiểm định giả thiết đối với ρkk tương tự như đối với ρk. 3.2.2. Biến đổi chuỗi không dừng thành chuỗi dừng Với chuỗi thời gian ban đầu không có tính dừng, trước khi xây dựng mô hình ARIMA ta phải biến chuỗi thành có tính dừng, phương pháp là lấy sai phân cấp d với d = 1 hoặc d = 2,... Ta có công thức: 𝑌𝑡 = 𝑌𝑡−1 + 𝑢𝑡, giá trị ut là nhiễu trắng. Ta có công thức sai phân cấp 1 của yt như sau: 𝐷(𝑌𝑡) = 𝑌𝑡 − 𝑌𝑡−1 = 𝑢𝑡, trong đó với ut là nhiễu trắng nên 𝐷(𝑌𝑡) là chuỗi dừng. Nếu lấy sai phân cấp 1 chuỗi thời gian Yt nhưng chưa cho kết quả là chuỗi dừng thì tiếp tục lấy sai phân cấp 2, 3 Có thể nói, luôn có một giá trị d để sai phân cấp d của Yt là chuỗi dừng. Khi đó, Yt là liên kết bậc d, ký hiệu là I(d). Sai phân của cấp d được tính như sau: + Cấp 1: 𝐷(𝑌𝑡) = 𝑌𝑡 − 𝑌𝑡−1 (3.8) + Cấp 2: 𝐷(𝐷(𝑌𝑡)) = 𝐷 2(𝑌𝑡) = (𝑌𝑡 − 𝑌𝑡−1) − (𝑌𝑡−1−𝑌𝑡−2) (3.9) + Tương tự như vậy với sai phân cấp d: 𝐷(𝐷𝑑−1(𝑌𝑡)) (3.10) Nếu yt ở dạng logarit thì giá trị 𝐷(𝑌𝑡) là phần trăm thay đổi của yt so với trước đó. 3.3. Mô hình ARIMA 23 3.3.1. Mô hình tự hồi quy AR (Autoregressive process) Ý tưởng mô hình AR(p) là hồi quy số liệu của nó trong quá khứ ở những chu kì trước. 𝑌𝑡 = 𝑎0 + 𝑎1𝑌𝑡−1 + 𝑎2𝑌𝑡−2 + ⋯ + 𝑎𝑝𝑌𝑡−𝑝 + 𝑢𝑡; (3.11) trong đó: Yt : quan sát dừng hiện tại; Yt-1, Yt-2,...: là quan sát dừng ở thời điểm trong quá khứ; a0, a1, a2, : các tham số phân tích hồi quy; ut : sai số dự báo ngẫu nhiên của giai đoạn hiện tại, với ut giá trị trung bình được mong đợi bằng 0. Hàm tuyến tính Yt là của chuỗi quan sát dừng những thời điểm trong quá khứ: Yt-1, Yt-2 Khi phân tích hồi quy Yt theo các giá trị trong chuỗi thời gian, chuỗi dừng có độ trễ, chúng ta sẽ được mô hình AR. Số quan sát dừng ở các thời điểm quá khứ được sử dụng trong mô hình tự hồi quy là bậc p của mô hình AR. Nếu sử dụng 2 quan sát dừng ở quá khứ, ta có mô hình tương quan bậc hai AR(2). - Mô hình AR(1) : 𝑌𝑡 = 𝑎0 + 𝑎1𝑌𝑡−1 + 𝑢𝑡 (3.12) - Mô hình AR(2) : 𝑌𝑡 = 𝑎0 + 𝑎1𝑌𝑡−1 + 𝑎2𝑌𝑡−2 + 𝑢𝑡 (3.13) 3.3.2. Mô hình trung bình trượt MA (Moving Average) Hàm tuyến tính yt phụ thuộc vào các biến sai số dự báo quá khứ và hiện tại. Mô hình trung bình trượt là một trung bình trọng số của những sai số mới nhất. 𝑌𝑡 = 𝑏0 + 𝑢𝑡 + 𝑏1𝑢𝑡−1 + 𝑏2𝑢𝑡−2 + ⋯ + 𝑏𝑞𝑢𝑡−𝑞 (3.14) trong đó: Yt : quan sát dừng hiện tại; ut : sai số dự báo; ut-1, ut-2,... : sai số dự báo quá khứ; b0, b1, b2,... : giá trị trung bình của yt và các hệ số bình quân di động; q : là bậc của MA. - Mô hình MA(1) : 𝑌𝑡 = 𝑏0 + 𝑢𝑡 + 𝑏1𝑢𝑡−1 (3.15) - Mô hình MA(2) : 𝑌𝑡 = 𝑏0 + 𝑢𝑡 + 𝑏1𝑢𝑡−1 + 𝑏2𝑢𝑡−2 (3.16) 3.3.3. Mô hình trung bình trượt và tự hồi quy ARMA (Autoregressive Moving Average) 24 Để biểu diễn sơ đồ Y không chỉ riêng AR hoặc MA mà có thể kết hợp cả hai, sự kết hợp ta được mô hình ARMA, còn gọi là mô hình trung bình trượt tự hồi quy. Yt là quá trình ARMA(1, 1) nếu Y có thể biểu diễn dưới dạng: Yt = 𝑎0 + 𝑎1𝑌𝑡−1 + 𝑢𝑡 + 𝑏0 + 𝑏1𝑢𝑡−1 (u là nhiễu trắng) (3.17) Tóm lại, Yt là quá trình ARMA (p, q) nếu Yt có thể biểu diễn dưới dạng: Yt = 𝑎0 + 𝑎1𝑌𝑡−1 + 𝑎2𝑌𝑡−2 + + 𝑎𝑝𝑌𝑡−𝑝 + 𝑢𝑡 + 𝑏0 + 𝑏1𝑢𝑡−1 + 𝑏2𝑢𝑡−2+ . . . + 𝑏𝑞𝑢𝑡−𝑞 (3.18) 3.3.4. Mô hình trung bình trượt tự hồi quy ARIMA (Autoregressive Intergrated Moving Average) Một chuỗi thời gian có thể tuân theo nhiều mô hình khác nhau. Tuy nhiên, cả ba mô hình AR, MA, ARMA đều yêu cầu chuỗi phải có tính dừng [4]. Nhưng thực tế có nhiều chuỗi thời gian không có tính dừng. Vậy làm thế nào để áp dụng được các mô hình trong thực tế ? Câu trả lời ở đây là sử dụng phương pháp lấy sai phân biến đổi một chuỗi không dừng thành chuỗi dừng, trước khi sử dụng mô hình ARMA. Nếu chuỗi Yt có đồng liên kết bậc d trên mô hình ARMA (p, q) cho chuỗi sai phân bậc d, thì chúng ta có mô hình ARIMA (p, d, q). Với bậc tự hồi quy p, số lần lấy sai phân d để chuỗi Yt được xác định là chuỗi dừng, bậc trung bình trượt q (p và q là bậc tương ứng của chuỗi dừng). - Trong mô hình ARIMA (p, d, q), khi d = 0 và q = 0 thì ta có AR(p). - Trong mô hình ARIMA (p, d, q), khi d = 0 và p = 0 thì ta có MA(q). - Với ARIMA(1,1,1) nghĩa là Yt có sai phân bậc 1 là một chuỗi dừng. Chuỗi sai phân dừng này có thể biểu diễn dưới dạng ARMA (1,1). ∆𝑌𝑡 = 𝑎0 + 𝑎1𝑌𝑡−1 + 𝑎0𝑢𝑡 + 𝑎1𝑢𝑡−1 (u là nhiễu trắng) (3.19) Như vậy, xác định được các giá trị p, d, q ta sẽ mô hình hóa được chuỗi ARIMA. Ta thấy, mô hình ARIMA chỉ sử dụng các giá trị trong quá khứ của chuỗi chứ không dùng thêm biến độc lập khác. 3.3.5. Dự báo dữ liệu chuỗi thời gian Dự báo chuỗi thời gian là phương pháp dự báo sử dụng các giá trị lịch sử của các nhân tố chẳng hạn như giá và sản lượng, lạm phát, lợi nhuận trong quá khứ, để dự báo giá trị hiện tại hoặc dự báo sự thay đổi của giá trị hiện [4]. Gồm có loại dự báo chính là dự báo định tính và dự báo định lượng. Chuỗi thời gian thuộc lớp dự báo định lượng vì kết quả của mô hình là một giá trị định lượng, nên được sử dụng khá phổ biến trong nghiên cứu kinh tế học như GDP, lạm phát, tăng trường hay nghiên cứu giá cả thị trường. Trong loại hình này một vài nguyên tắc dự báo cơ bản thường được dùng là AR, MA, 25 Phương pháp Box-Jenkins được xem là một trong những kỹ thuật có hiệu quả cao trong việc đưa ra các dự báo chính xác và có độ tin cậy cao. Sức mạnh của nó là ở chỗ nó đưa ra những thông tin giúp nhà phân tích chuỗi thời gian lựa chọn mô hình phù hợp với dữ liệu quan sát được. Đối với các phương pháp khác, nhà phân tích giả thiết một mô hình nào đó rồi tiến hành ước lượng các tham số của mô hình. Trong giai đoạn đầu tiên, ta nhận dạng một mô hình thử nghiệm bằng cách so sánh các hàm tự tương quan mẫu và tự tương quan riêng phần mẫu của chuỗi thời gian dừng với các hàm tự tương quan và tự tương quan riêng lí thuyết của các mô hình ARMA. ARIMA là một mô hình dự báo phổ biến và linh hoạt sử dụng dữ liệu trong quá khứ để đưa ra các dự báo [7]. Loại mô hình này là một kỹ thuật dự báo cơ bản có thể được sử dụng làm nền tảng cho các mô hình phức tạp hơn. Dựa vào những đặc điểm đó, trong phần thực nghiệm học viên quyết định sử dụng mô hình ARIMA để thực nghiệm trên tập dữ liệu chuỗi thời gian. Các bước chính trong phương pháp Box‐Jenkins: Bước 1: Nhận dạng mô hình Dữ liệu quá khứ được sử dụng để nhận dạng thử một mô hình ARIMA thích hợp. Bước 2: Ước lượng mô hình Dữ liệu quá khứ được sử dụng để ước lượng các tham số của mô hình thử nghiệm. Bước 3: Kiểm tra dự đoán xem mô hình có phù hợp Các đánh giá khác nhau được dùng để kiểm tra sự thích hợp của mô hình thử nghiệm, và nếu cần thiết, gợi ý một mô hình tốt hơn rồi sau đó mô hình này lại được xem như một mô hình thử nghiệm mới. Bước 4: Dự báo Khi đã chọn được mô hình cuối cùng, nó được sử dụng để dự báo các giá trị tương lai của chuỗi thời gian. 26 Nhận dang mô hình Ước lượng mô hình Mô hình có phù hợp? Dự báo Vẽ biểu đồ chuỗi giá trị Là chuỗi dừng? Lấy sai phân của chuỗi Điều chỉnh mô hình Có Không Có Không Hình 3.6. Các bước chính trong phương pháp Box‐Jenkins Trên thực tế, nhiều chuỗi thời gian có thể được biểu diễn bằng những mô hình đơn giản. Mô hình với số tham số thường được ưa chuộng hơn. Thông thường đối với các mô hình ARMA(p, q) ta chỉ cần xét p ≤ 2 và/hoặc q ≤ 2. Có thể cải thiện việc biểu diễn mô hình bằng cách sử dụng một phép biến đổi dữ liệu gốc phù hợp. Dữ liệu đã được biến đổi, nếu chưa có tính dừng, sẽ được sai phân hóa cho đến khi đạt được tính dừng bởi vì ta bắt buộc phải làm việc với chuỗi thời gian dừng. Tóm tắt chương 3 Chương 3 đã đi sâu chi tiết phân tích các đặc điểm chuỗi dữ liệu chuỗi thời gian, và dựa vào đặc điểm của dữ liệu chuỗi thời gian đã đưa ra lựa chọn mô hình phân tích phù hợp ARIMA. Chương 4 học viên tiến hành thực nghiệm tập dữ liệu dịch bệnh cúm do Google Flu Trends công bố sử dụng R và dựa trên mô hình ARIMA. 27 CHƯƠNG 4. THỰC NGHIỆM VÀ ĐÁNH GIÁ Hiện nay, có nhiều phương pháp ứng dụng trong việc khai phá, phân tích và dự đoán xu hướng dữ liệu. Kéo theo đó là rất nhiều phần mềm hỗ trợ cho việc phân tích và dự đoán dữ liệu. Luận văn này sử dụng phần mềm R để làm thực nghiệm trên tập dữ liệu dịch cúm Google Flu Trends công bố. 4.1. Mô hình thực nghiệm Trong phần thực nghiệm này, với bộ dữ liệu liên quan đến dịch bệnh cúm như đã đề cập ở trên, luận văn sẽ giới thiệu từng bước thực nghiệm sử dụng mô hình ARIMA và sử dụng R. Mô hình ARIMA phổ biến và linh hoạt trong lĩnh vực dự đoán bằng việc sử dụng những thông tin trong quá khứ để đưa ra dự đoán. Loại mô hình này là kỹ thuật dự đoán cơ bản mà có thể được sử dụng giống như một nền tảng cho những mô hình hoàn thiện hơn. ARIMA cho hồi quy tự động được tích hợp trung bình trượt và được chỉ định bởi thứ tự 3 tham số (p, d, q), tiến trình phù hợp mô hình ARIMA là thỉnh thoảng được đề cập tới giống như phương thức Box-Jenkins. Một công cụ tự hồi quy (auto regressive - AR) hướng tới sử dụng những giá trị quá khứ trong công thức hồi quy cho chuỗi Y, tham số tự hồi quy p chỉ định số lượng của độ trễ được dùng trong mô hình. 𝑌𝑡 = 𝑎0 + 𝑎1𝑌𝑡−1 + 𝑎2𝑌𝑡−2 + ⋯ + 𝑎𝑝𝑌𝑡−𝑝 + 𝑢𝑡 (4.2) Một công cụ trung bình trượt (moving average - MA) nêu ra lỗi của mô hình giống như sự kết hợp thành phần lỗi trước đây et. Theo đó q xác định số lượng giới hạn gồm có trong mô hình. 𝑌𝑡 = 𝑏0 + 𝑒𝑡 + 𝑏1𝑒𝑡−1 + 𝑏2𝑒𝑡−2 + ⋯ + 𝑏𝑞𝑒𝑡−𝑞 (4.3) Mặt khác, tự hồi quy và công cụ trung bình trượt thể hiện một mô hình ARIMA theo mùa có thể được viết bằng sơ đồ tuyến tính: 𝑌𝑡 = 𝑎0 + 𝑎1𝑌𝑡−1 + 𝑎2𝑌𝑡−2 + + 𝑎𝑝𝑌𝑡−𝑝 + 𝑢𝑡 + 𝑏0 + 𝑏1𝑢𝑡−1 + 𝑏2𝑢𝑡−2 + . . . + 𝑏𝑞𝑢𝑡−𝑞 (4.4) Lưu ý rằng mô hình ở trên giả định chuỗi không theo mùa, có nghĩa là ta có thể cần phải không hợp lý hóa chuỗi trước khi mô hình hóa. Mô hình ARIMA có thể được chỉ định thông qua cấu trúc mùa. Trong trường hợp này, mô hình được chỉ định với hai tập của tham số (p, d, q) giống như mô tả ở trên và những tham số mô tả thành phần mùa m. Phương pháp ARIMA có những hạn chế của nó. Những mô hình này dựa trực tiếp vào các giá trị trong quá khứ và hoạt động tốt nhất trên chuỗi dữ liệu dài và 28 ổn định. 4.2. Mục đích thực nghiệm Dựa trên tập dữ liệu dịch cúm của Google Flu Trends tiến hành thực nghiệm nhằm phân tích và đưa ra kết quả dự báo. Trong phân thực nghiệm này học viên sử dụng mô hình ARIMA để phân tích hồi quy tập dữ liệu chuỗi thời gian, qua đó đưa ra mô hìn dự báo diễn biến dịch bệnh. Hiện nay, phân tích dự báo đang trở thành công tác quan trọng ở các đơn vị quản lý và hoạch định chiến lược. Số liệu được phân tích, dự đoán phục vụ cho việc định hướng các hoạt động trong tương lai. 4.3. Tập dữ liệu Google Flu Trends Google Flu Trends là một dịch vụ web do Google thực hiện. Nó cung cấp ước tính về diễn biến của dịch cúm hơn 25 quốc gia, bằng cách thu thập các truy vấn của công cụ tìm kiếm Google, nó cố gắng để đưa ra dự đoán chính xác về hoạt động của dịch cúm. Dự án này được Google.org triển khai lần đầu tiên vào năm 2008 để giúp dự đoán sự bùng phát của dịch cúm. Google Flu Trends hiện không còn công bố số liệu dịch cúm hiện tại. Các dữ liệu lịch sử của 25 nước vẫn có sẵn và dữ liệu được cung cấp cho các mục đích nghiên cứu, chúng ta có thể tải về từ địa chỉ: https://www.google.org/flutrends/about/ Tập dữ dữ liệu Google Flu Trends được tổng hợp qua nhiều năm trên nhiều quốc gia, với tập dữ liệu được thu thập qua nhiều năm tại 25 nước trên thế giới, đó là tập dữ liệu lý tưởng để phân tích và đưa ra dự báo. Số liệu dịch cúm mà Google Flu Trends tổng hợp và công bố, được đánh giá sát với số liệu của hệ thống cảnh báo độc lập Sentinel GP và HealthStat cung cấp. Dữ liệu của Google Flu Trends được tổng hợp theo thời gian thực và sẽ được đối chiếu lại với số liệu của những trung tâm kiểm soát dịch bệnh trên thế giới. Hình 4.1. Biểu đồ so sánh dữ liệu dự báo của Google Flu Trends và Trung tâm kiểm soát và phòng ngừa các chứng bệnh của Mỹ Đường màu xanh là số liệu được tổng hợp thông qua www.google.com với các từ khóa tìm kiếm liên quan đến các dịch cúm, màu vàng là dữ liệu do và Trung tâm kiểm soát và phòng ngừa các chứng bệnh của Mỹ đưa ra. 29 Số liệu dự báo được thu thập theo thời gian của các thành phố rải rác trên 25 quốc gia, từ năm 2003 đến 2015. Số liệu dịch cúm được thu thập không theo định kỳ, mà được tổng hợp tại các thời điểm ngẫu nhiên trong tháng, bộ dữ liệu được tổng hợp đầy đủ 12 tháng trong năm, để có thể đánh giá được diễn biến dịch bệnh theo các thời điểm từng tháng của năm. Trong một tập dữ liệu được thu thập gồm 2 trường thông tin: Date (ngày), Tên địa danh (đất nước hoặc thành phố). Cột Date là các thời điểm ghi nhận số lượng ca mắc cúm được biểu diễn bằng các ngày trong tháng và đối với mẫu dữ liệu 1 năm của một đất nước/thành phố luôn được ghi nhận đủ dữ liệu 12 tháng, kiểu dữ liệu cột Date là kiểu ngày (date). Cột Tên địa danh là tên của đất nước hoặc thành phố được ghi nhận, tại cột này ghi nhận số lượng ca mắc cúm tương ứng với thời điểm ghi nhận tại cột Date, kiểu dữ liệu cột này là Integer. Có thể tải bộ dữ liệu tại địa chỉ https://www.google.org/flutrends/about để mở các tệp này trong ứng dụng bảng tính, mở tệp văn bản dưới dạng bảng tính CSV. Hình 4.2. Mẫu dữ liệu bệnh cúm của 25 nước trên thế giới được tổng hợp từ 2003 đến 2015 Tại hình 4.2 ở trên ta thấy tại vùng (1) là dữ liệu của cột Date là các thời điểm ghi nhận số ca mắc cúm. Tại vùng số (2) là số lượng ca mắc cúm tương ứng với các mốc thời gian tại cột Date, số lượng ca mắc cúm được ghi nhận của 25 nước khác nhau trên thế giới. Tương tự, khi xét tập dữ liệu của một quốc gia ta cũng sẽ có được một tập dữ liệu với cấu trúc gồm 2 cột Date và Tên địa danh là các thành phố. Google Flu Trends được đã sử dụng phương pháp sau đây để thu thập thông tin về diễn biến của dịch cúm. (1) (2) 30 Thứ nhất, chuỗi thời gian được tính cho khoảng 50 triệu truy vấn phổ biến được cập nhật hàng tuần ở Hoa Kỳ từ năm 2003 đến năm 2008. Một chuỗi thời gian của truy vấn được tính riêng cho mỗi trạng thái và được bình thường hóa thành một phần nhỏ bằng cách chia số truy vấn cho mỗi số tất cả các truy vấn trong tiểu bang đó. Bằng cách xác định địa chỉ IP của mỗi tìm kiếm, trạng thái truy vấn này đã được nhập có thể được xác định. log(𝑃) = 𝛽0 + 𝛽1 𝑥 log(Q) + 𝜀 (4.1) P là tỷ lệ phần trăm của truy cập bác sĩ và Q là phân số truy vấn liên quan đến triệu chứng giống bệnh cúm tính trong các bước trước. β0 là hệ số chặn và β1 là hệ số, trong khi ε là sai số. Mỗi trong số 50 triệu truy vấn được kiểm tra là Q để xem liệu kết quả tính từ một truy vấn có thể khớp với dữ liệu liên quan đến các triệu chứng của bệnh cúm trong lịch sử, thực tế thu được từ Trung tâm Kiểm soát và Phòng ngừa dịch bệnh của Hoa Kỳ (viết tắt là CDC). Quá trình này tạo ra một danh sách các truy vấn hàng đầu cung cấp cho các dự đoán chính xác nhất của dữ liệu liên quan quan đến triệu chứng cúm của CDC khi sử dụng mô hình tuyến tính. Sau đó, 45 truy vấn hàng đầu được chọn vì khi kết hợp với nhau, những truy vấn này phù hợp với dữ liệu lịch sử một cách chính xác nhất. Sử dụng tổng số 45 truy vấn liên quan đến triệu chứng giống bệnh cúm hàng đầu, mô hình tuyến tính được lắp vào dữ liệu hàng tuần giữa năm 2003 và 2007 để có thể đạt được hệ số. Cuối cùng, mô hình đào tạo được sử dụng để dự đoán dịch cúm ở tất cả các vùng ở Mỹ. 4.4. Môi trường, cấu hình hệ thống và công cụ 4.4.1. Cấu hình phần cứng Thành phần Chỉ số CPU Intel Pentium T4400 / 2.2 GHz RAM 2 x 2 GB OS Windows 7 Bộ nhớ ngoài 250 GB Bảng 1. Cấu hình phần cứng 4.4.2. Các công cụ phần mềm sử dụng TT Tên phần mềm Nguồn 1 R i386 3.4.4 https://www.r-project.org Bảng 2. Các công cụ, phần mềm sử dụng 4.5. Kết quả thực nghiệm 31 Đầu tiên, để tiến hành thực nghiệm chúng ta mở những gói thư viện cần thiết trong R và đọc tập dữ liệu cần phân tích, ta dùng 4 thư viện: ggplot2, forecast, tseries, lubridate. Ví dụ: Sử dụng thư viện lubridate Nếu thư viện chưa được cài đặt ta tiền hành cài trước khi sử dụng: Hình 4.3. Cài đặt gói thư viện 4.5.1. Lựa chọn và xử lý dữ liệu Bộ dữ liệu của GFT công bố gồm rất nhiều nước trên thế giới, tuy nhiên để giảm bớt dữ liệu trùng lặp mà vẫn thể hiện được tính liên quan giữa thời gian và số liệu cúm biến động. Trong tập dữ liệu được thu thập của Argentina và các thành phố thuộc Argentina, luận văn đã lọc những dữ liệu dịch cúm của Argentina được thống kê từ năm 2003 đến 2015, dữ liệu cúm được tổng hợp và đại diện chung cho các thành phố khác của Argentina. Tập dữ liệu sẽ bao gồm các thông tin ngày - tháng - năm, số lượng; đối với tập dữ liệu sẽ có 2 cột được làm thực nghiệm: Date (ngày tháng) và Argentina (số liệu cúm được tổng hợp). Kết quả thu được là số liệu công bố dịch cúm của Argentina từ 2003 đến 2015 có 655 bản ghi. Nạp dữ liệu: 32 Hình 4.4. Nạp dữ liệu Ta có tập dữ liệu d sau khi được nạp như sau: Hình 4.5. Tập dữ liệu cúm của Argentina Bước 1: Lựa chọn dữ liệu Trong tập dữ liệu được nạp d là dữ liệu từ năm 2003 đến năm 2015, dữ liệu được thu thập và có biến động tại các thời điểm khác nhau trong mỗi năm và từ năm này qua năm khác. Tuy nhiên, với sự biến động dữ liệu này, bằng trực quan cũng có thể nhận 33 thấy một số mẫu dữ liệu, ví dụ: số ca mắc cúm thường tăng cao vào những tháng 5, 6, 7 hàng năm. Để dự đoán được xu hướng diễn biến dịch cúm trong một năm, ta tiến hành trích xuất dữ liệu của một năm bất kỳ trong tập d, cụ thể dữ liệu của năm 2004. Hình 4.6. Tập dữ liệu cúm của Argentina năm 2004 Ta trích lấy mẫu dữ liệu của Argentina được thu thập vào năm 2004 để tự đánh giá diễn biến của mô hình dữ liệu trong một năm của dịch cúm. Xây dựng sơ đồ diễn biến ta thấy số liệu có sự biến đổi theo các tháng trong năm, tập trung cao điểm vào các tháng 5, 6 và có sự suy giảm vào các tháng khác. Hình 4.7. Diễn biến cúm năm 2004 của Argentina theo tháng Với số liệu được trình diễn bằng sơ đồ ta có thể thấy rằng diễn biến dịch bệnh được thay đổi theo thời gian và có chu kỳ diễn biến nhất định. Tại Hình 4.7, sơ đồ biểu diễn dịch bệnh cúm mùa của Argentina năm 2004, số ca mắc được phân bổ như sau: vào những tháng 1, 2, 3, 4 dịch cúm ở mức thấp; đến tháng 5, 6, 7, 8, 9 số ca mắc tăng vọt và giảm dần vào cuối năm từ tháng 10, 11, 12. Chu kỳ biến động dịch bệnh cũng được lặp đi lặp lại từ năm này qua năm khác. Từ phép phân tích trên có thể nhận thấy chu kỳ tăng, giảm của bệnh dịch qua đó sẽ đưa ra dự báo cho thời diểm trong tương lai. 34 Đánh giá tập dữ liệu năm 2004 của Argentina nói riêng và các tập dữ liệu khác của Google Flu Trends nói chung, nhận thấy các tập dữ liệu bao gồm những thông tin cơ bản đáp, ứng yêu cầu phân tích chuỗi dữ liệu thời gian, các thuộc tính đều phù hợp với mô hình, nên không cần phải qua bước xử lý dữ liệu. Cụ thể, trong tập dữ liệu năm 2004 của Argentina có duy nhất 2 cột: Date (ngày ghi nhận số ca mắc cúm) và Argentina (số liệu cúm được ghi nhận). Tập dữ liệu đầu vào đã đáp ứng nên thực nghiệm của luận văn bỏ qua Bước 2: Tiền xử lý dữ liệu và chuyển qua Bước 3: Đổi dạng. Bước 3: Đổi dạng Ta loại bỏ các ngoại lệ của chuỗi thời gian với tsclean(), xác định và thay thế các ngoại lệ bằng cách làm mịn và phân tách chuỗi thời gian. Phương thức này có khả năng nhập các giá trị bị mất trong chuỗi nếu có, chúng ta sử dụng lệnh ts() để tạo một đối tượng chuỗi thời gian qua hàm tsclean(). Sử dụng hàm tsclean(), tập dữ liệu được làm sạch, trong tập dữ liệu mới được tạo ra có thêm cột clean_scm, là số liệu đã được làm sạch. Hình 4.8. Dữ liệu cúm của năm 2004 Argentina được làm sạch Vẽ biểu đồ với tập dữ liệu Nam2004 sau khi được xử lý làm sạch dữ liệu, ta nhận được biểu đồ bằng với dữ liệu sạch, như sau: 35 Hình 4.9. Diễn biến cúm Argentina năm 2014 được làm sạch Ngay khi loại bỏ các ngoại lệ, biểu đồ dữ liệu vẫn khá giống với biểu đồ trước khi được làm sạch (gồm những dữ liệu ngoại lệ). Nhìn trực quan, ta có thể vẽ một đường thẳng qua chuỗi và đỉnh trong khi làm mịn các dao động. Đường thẳng này có thể được mô tả bằng khái niệm trong phân tích chuỗi thời gian được gọi là trung bình trượt MA (moving average). Công thức chung, trung bình trượt MA của số ca mắc cúm m có thể được tính bằng cách lấy trung bình của chuỗi Y, k khoảng thời gian xung quanh mỗi điểm: 𝑀𝐴 = 1 𝑚 ∑ 𝑌𝑡+𝑗 𝑘 𝑗 = −𝑘 (4.5) Trong đó: m = 2k + 1, số lượng trên được gọi là trung bình trượt đối xứng. Trung bình trượt MA(q) là một phần của mô hình ARIMA, đề cập đến độ trễ lỗi và kết hợp, trong khi thống kê của trung bình trượt đề cập đến kỹ thuật làm mịn dữ liệu. Cửa sổ của trung bình trượt càng rộng, chuỗi thời gian ban đầu càng mượt mà hơn. Trong bài phần thực nghiệm này, chúng ta lấy mức trung bình theo những khoảng thời gian, làm mịn để chuỗi trở nên ổn định hơn và có thể dự đoán được. Ngoài sơ đồ biến động dịch cúm 2004, lập mô hình dữ liệu theo hàng ngày có thể yêu cầu xác định nhiều mức độ thời vụ (seasonality). Để đơn giản, ta lập mô hình trung bình trượt theo 7 ngày (được thể hiện bởi dòng màu xanh). 36 Hình 4.10. So sánh số liệu bệnh cúm của Argentina với dữ liệu được làm mịn 4.5.2. Phân tách dữ liệu Bước 4: Khai phá dữ liệu Các thành phần được xây dựng của quá trình phân tích chuỗi thời gian là tính thời vụ (seasonality), xu hướng (trend) và chu kỳ (cycle). Các thành phần trực quan này nắm bắt các mẫu dữ liệu quá khứ của chuỗi. Đầu tiên, tính toán thành phần mùa của dữ liệu bằng cách sử dụng stl(), để phân tích và dự báo chuỗi dữ liệu thời gian. Nó tính toán thành phần mùa của chuỗi bằng cách làm mịn và điều chỉnh chuỗi ban đầu bằng cách loại bỏ tính thời vụ theo hai dòng đơn giản. Trong trường hợp cấu trúc mô hình bổ sung, cùng một nhiệm vụ phân tách chuỗi và loại bỏ tính thời vụ có thể được thực hiện bằng cách bỏ đi thành phần theo mùa từ chuỗi ban đầu với hàm seasadj(). Xác định tính chu kỳ của dữ liệu với ts(), tức là số lần quan sát trong một khoảng thời gian là 7 ngày. Hình 4.11. Sơ đồ dữ liệu được phân tách theo thành phần tính thời vụ, xu hướng và chu kỳ 37 Sử dụng ADF để kiểm tra tính dừng của chuỗi thời gian trước khi sử dụng ARIMA để dự đoán, kết quả kiểm tra qua ADF như sau: Augmented Dickey-Fuller Test data: count_sm Dickey-Fuller = -1.2685, Lag order = 3, p-value = 0.8648 alternative hypothesis: stationary Với kết quả trả về giá trị 𝑝 − 𝑣𝑎𝑙𝑢𝑒 = 0.8648 và lớn hơn 0.05 cho thấy chuỗi không có tính dừng. Vì vậy, tiếp tục chọn các tham số thứ tự cho mô hình ARIMA. Có thể thể hiện trực quan tính không dừng của chuỗi qua mô hình ACF hiển thị mối tương quan giữa một chuỗi và độ trễ của nó. Các mô hình ACF có thể giúp xác định bậc của mô hình MA(q). PACF hiển thị mối tương quan giữa một biến và độ trễ của nó không được giải thích bởi các trễ trước đó. Khi biểu diễn mô hình, trong R vẽ đường ranh giới 95% là đường chấm màu xanh. Có mối tự tương quan với các độ trễ trong chuỗi dịch bệnh cúm của chúng ta, có thể quan sát mô hình ACF bên dưới. nhìn vào mô hình PACF ta thấy sự tăng đột biến ở độ trễ thứ 1 và dần giảm về quanh giá trị 0. Hình 4.12. Mô hình ACF 38 Hình 4.13. Mô hình PACF Ta thấy, mô hình ACF tại Hình 4.12 và mô hình PACF tại Hình 4.13 các hệ số tương quan giảm rất chậm về 0, như trong sơ đồ ACF có đến 11 độ trễ khác 0 và nằm ngoài giới hạn tin cậy 5%. Ta có thể kết luận chuỗi không có tính dừng. Tiếp tục với sai phân 𝑑 = 1 và đánh giá lại. Vẽ sơ đồ chuỗi khác, chúng ta thấy một mô hình dao động quanh 0 không có xu hướng rõ ràng. Kiểm tra lại với ACF với 𝑑 = 1, cho kết quả như sau: Augmented Dickey-Fuller Test data: count_d1 Dickey-Fuller = -3.5602, Lag order = 3, p-value = 0.0471 alternative hypothesis: stationary Với 𝑑 = 1 qua phép kiểm tra ADF ta thu được giá trị 𝑝 − 𝑣𝑎𝑙𝑢𝑒 = 0.0471 nhỏ hơn 0.05, vậy có thể kết luận chuỗi đã có tính dừng. Hình 4.14. Mô hình kiểm tra với 𝐝 = 𝟏 Tiếp theo, các mức tăng đột biến ở độ trễ cụ thể của chuỗi có thể giúp lựa chọn p hoặc q cho mô hình của chúng ta. Có sự tương quan tự đáng kể ở độ trễ 1. Tại các 39 Hình 4.15 mô hình ACF với 𝑑 = 1 và Hình 4.16 mô hình PACF với 𝑑 = 1, ta thấy ACF và PACF có sự tăng đột biến đáng kể ở độ trễ 1 và giảm dần về 0, đánh giá thấy chuỗi đáp ứng tính dừng, nên chúng ta có thể thử nghiệm các mô hình với các thành phần AR hoặc MA theo độ trễ 1. Hình 4.15. Mô hình ACF với 𝐝 = 𝟏 Hình 4.16. Mô hình PACF với 𝐝 = 𝟏 Bây giờ chúng ta áp dụng mô hình. Gói thư viện forecast cho phép người dùng xác định rõ bậc của mô hình bằng cách sử dụng hàm ARIMA() hoặc tự động tạo một tập hợp tối ưu (p, d, q) sử dụng auto.arima(). Hai trong số các tiêu chí được sử dụng rộng rãi nhất là tiêu chí thông tin Akaike (AIC) và các tiêu chuẩn thông tin Baysian (BIC). Các tiêu chí này có liên quan chặt chẽ và được hiểu là ước tính số lượng thông tin sẽ bị mất nếu một mô hình cụ thể được chọn. Khi so sánh các mô hình, người ta muốn giảm thiểu AIC và BIC. Bước 5: Trình diễn 40 Ta có thể chỉ định cấu trúc không theo mùa ARIMA và phù hợp với mô hình để khử dữ liệu theo mùa. Các tham số (1, 1, 1) được đề xuất bởi quy trình tự động; mô hình kết hợp sự khác biệt về bậc 1 và sử dụng thuật ngữ tự động của độ trễ đầu tiên và mô hình trung bình động auto.arima(). Ta đã có một mô hình dự báo, chúng ta có thể bắt đầu bằng cách kiểm tra các ô ACF và PACF. Hình 4.17. Mô hình 𝐀𝐑𝐈𝐌𝐀(𝟏, 𝟏, 𝟏) Có một mô hình ACF / PACF và các ô mẫu còn lại lặp lại ở độ trễ 7. Điều này cho thấy mô hình của chúng ta có thể tốt hơn với một đặc tả khác, như 𝑝 = 7 ℎ𝑜ặ𝑐 𝑞 = 7. Chúng ta có thể lặp lại quá trình phù hợp cho phép thành phần 𝐴𝑅(7) và kiểm tra lại mô hình chẩn đoán. Lần này, không có hiện tượng tự tương quan đáng kể nào. Nếu mô hình không được chỉ định chính xác, thì thường sẽ được phản ánh dưới dạng các xu hướng, độ lệch, hoặc bất kỳ mẫu nào khác không được mô hình nắm bắt. Lý tưởng nhất, dư lượng sẽ trông giống như nhiễu trắng, có nghĩa là chúng thường được phân phối. Hàm tsdisplay() có thể được sử dụng để vẽ các mô hình chẩn đoán này. Các mô hình còn lại cho thấy phạm vi lỗi nhỏ hơn, ít nhiều tập trung xung quanh 0. Chúng ta có thể quan sát thấy AIC nhỏ hơn đối với cấu trúc (1, 1, 7). 41 Hình 4.18. Mô hình ARIMA (1, 1, 7) Chúng ta có thể thông qua mô hình trong R để dự báo h giai đoạn trong tương lai, với tham số h được xác định theo chu kỳ 30 ngày liên tiếp có ghi nhận số liệu cúm của tập dữ liệu. Hình 4.19. Mô hình dự báo với hệ số (1, 1, 1) Đường màu xanh nhạt ở trên cho thấy sự phù hợp do mô hình cung cấp. Một phương pháp nữa là dự trữ một phần dữ liệu của chúng ta dưới dạng tập hợp "giữ" (hold-out), phù hợp với mô hình và sau đó so sánh dự báo với các giá trị được quan sát thực tế. 42 Hình 4.20. Mô hình dự báo Tuy nhiên, đường màu xanh đại diện cho dự báo có vẻ rất đơn giản, nó đi gần với một đường thẳng khá sớm, mà dường như không giống với mô hình trong quá khứ của chuỗi. Nhớ rằng mô hình này, giả sử một chuỗi không có thời vụ và phân biệt dữ liệu không có tính dừng ban đầu. Nói cách khác, dự đoán được vẽ dựa trên giả định rằng sẽ không có biến động theo mùa nào khác trong dữ liệu và thay đổi về số lượng cúm từ ngày này sang ngày khác ít nhiều liên tục về trung bình và phương sai. Chúng ta thêm lại thành phần theo mùa mà đã trích xuất trước đó. Một cách tiếp cận khác là cho phép các thành phần (p, d, q) được đưa vào mô hình, đó là một mặc định trong hàm auto.arima(). Lắp lại mô hình trên cùng một dữ liệu, ta thấy rằng vẫn có thể có một số mẫu theo mùa trong chuỗi, với thành phần theo mùa được mô tả bởi 𝐴𝑅(1). Hình 4.21. Mô hình dự báo ARIMA(0, 2, 0)(0, 0, 1)(7) Lưu ý rằng, các thông số (p, d, q) thay đổi sau khi chúng ta bao gồm một thành phần theo mùa. Chúng ta có thể trải qua quá trình đánh giá mô hình còn lại và các ô ACF / PACF và điều chỉnh cấu trúc nếu cần thiết. Cả hai ước tính dự đoán ở trên được cung cấp với độ tin cậy cao: độ tin cậy 80% 43 được tô bằng màu xanh sẫm hơn và 95% màu xanh nhạt hơn. Dự báo dài hạn thường sẽ có sự không chắc chắn hơn, vì mô hình sẽ hồi quy Y trong tương lai dựa trên các giá trị được dự đoán trong quá khứ của chuỗi. Ta quan sát tập dữ liệu cúm của Argentina được biểu diễn từ năm 2003 đến 2010, số liệu cúm cũng diễn biến theo như hình dưới đây: Hình 4.22. Diễn biến dịch bệnh thực tế tại Argentina từ năm 2003 đến 2015 4.6. Đánh giá kết quả Với số liệu được trình diễn bằng sơ đồ ta có thể thấy rằng diễn biến dịch bệnh được thay đổi theo thời gian và có chu kỳ diễn biến nhất định. Tại hình 4.19 sơ đồ biểu diễn dịch bệnh cúm mùa của Argentina năm 2004, số ca mắc được phân bổ như sau: vào mùa những tháng 1, 2, 3, 4 dịch cúm ở mức thấp ; đến tháng 5, 6, 7, 8, 9 do sự thay đổi thời tiết khiến dịch bệnh tăng vọt và giảm dần vào cuối năm từ tháng 10, 11, 12. Chu kỳ biến động dịch bệnh cũng được lặp đi lặp lại từ năm này qua năm khác. Từ phép phân tích trên có thể nhận thấy chu kỳ tăng, giảm của bệnh dịch qua đó sẽ đưa ra dự báo cho thời diểm trong tương lai. Như vậy model ARIMA dự báo được chính xác 80% số trường hợp tăng của dịch bệnh, trong phần thực nghiệm ta sử dụng tập dữ liệu mẫu số liệu bệnh cúm tại Arrgentina. Để rõ hơn về quy luật này ta nhìn vào Hình 4.20. Diễn biến dịch bệnh tại Argentina từ năm 2003 đến 2015, số liệu được biến thiên đều đặn hàng năm theo biểu đồ hình sin từ năm 2003 đến 2011. Tóm tắt chương 4 Chương 4 luận văn tiến hành thực nghiệm phân tích tập dữ liệu dịch bệnh cúm của Google Flu Trends trên R, thông qua mô hình ARIMA và đưa ra dự báo dữ liệu từ tập dữ liệu cúm của Argentina. Qua kết quả phân tích và đối chiếu mô hình dự báo với dữ 2003-02-02 2004-02-15 2005-02-27 2006-03-12 2007-03-25 2008-04-06 2009-04-19 2010-05-02 2011-05-15 2012-05-27 2013-06-09 2014-06-22 2015-07-05 1 0 0 2 0 0 3 0 0 4 0 0 44 liệu thực tế cho thấy tỷ lệ chính xác lên 95%, qua đó có thể thấy độ tin cậy của kết quả dự đoán trong phần thực nghiệm. 45 KẾT LUẬN 1. Các kết quả đạt được Để nghiên cứu bài toán ứng dụng khai phá dữ liệu trong y tế dự phòng, học viên đã tập trung nghiên cứu các khái niệm về y tế dự phòng, thực trạng về nhu cầu trong việc quản lý, phân tích và dự báo đươc dịch bệnh trên tập số liệu được báo cáo. Bên cạnh đó, học viên cũng nghiên cứu, tìm hiểu một số phương pháp khai phá dữ liệu hiện nay. Cùng với đó là đề xuất một số phương pháp khai dữ liệu phù hợp với tập dữ liệu dịch bệnh cúm do Google công bố. Dựa trên nghiên cứu đó luận văn đề xuất một mô hình dự báo dịch bệnh truyền nhiễm dựa trên tập dữ liệu thời gian. Luận văn cũng tiến hành cài đặt thực nghiệm một tập dữ liệu được trích xuất trong tập dữ liệu của một quốc gia. Dựa vào kết quả phân tích, dự báo như đã trình bày trong phần thực nghiệm, lấy đó làm cơ sở cho cho xây dựng các bài toán dự báo tình hình dịch bệnh. 2. Hướng nghiên cứu tiếp theo Trong khuôn khổ luận văn này, tôi mới chỉ dừng lại ở việc phân tích chuỗi dữ liệu thời gian và đưa ra dự báo dựa vào xu hướng dữ liệu trên thực nghiệm trong mô hình đó, đánh giá kết quả dự báo trên tập dữ liệu so với số liệu thực tế. Trong thời gian tới, tôi sẽ tiếp tục thực nghiệm các tập dữ liệu còn lại trong tập dữ liệu được công bố, đồng thời xem xét hướng nghiên cứu bổ sung nhằm phân tích, đánh giá các quy luật diễn biến dịch bệnh cúm trên toàn cầu dự trên các đặc điểm thời gian, địa lý, điều kiện thời tiết để nâng cao độ chính xác và giảm thiểu việc bỏ sót các cặp quan hệ trong chuỗi dữ liệu thời gian. 46 TÀI LIỆU THAM KHẢO Tiếng Việt [1] Nguyễn Minh Sơn - Dịch tễ học, Nhà xuất bản Giáo dục 2012. Tiếng Anh [2] Centers for Disease Control and Prevention (CDC USA) - Principles of epidemiology in public health practice, Third edition 2012. 2 [3] Dorland - Dorland's Illustrated Medical Dictionary 32nd Edition, 2011. [4] Chi-Chen Wang. “A comparision study between fuzzy time series model and ARIMA model for forecasting Taiwan export”. Expert Systems with Applications, vol.38, no.8, pp.9296-9304, 2011. [5] Hippocrates - On airs, waters, and places written 400 B.C.E (Translated by Francis Adams). [6] Han, Jiawei, Jian Pei, and Micheline Kamber. Data mining: concepts and techniques. Elsevier, 2011. [7] K. Senthamarai Kannan and E. Sakthivel. “Fuzzy Time Series Model and ARIMA Model – A Comparative Study”. Indian Journal of Applied Research, vol.4, no.8, pp.624-636, 2014. [8] LeCun, Yann, Yoshua Bengio, and Geoffrey Hinton. "Deep learning." Nature 521.7553 (2015): 436-444. [9] R. Bonita, R. Beaglehole, Tord Kjellström - Basic epidemiology 2nd edition, World Health Organization. [10] Shasha, D., High Performance Discovery in Time Series, Berlin: Springer, ISBN 0387008578, 2004. [11] Verikas, Antanas, Adas Gelzinis, and Marija Bacauskiene. "Mining data with random forests: A survey and results of new tests." Pattern Recognition 44.2 (2011): 330-349. [12] https://www.cs.waikato.ac.nz [13] https://www.spss-tutorials.com/spss-what-is-it [14] https://www.r-project.org [15] https://www.britannica.com/science/preventive-medicine. 47 PHỤ LỤC 1. Gọi thư viện: ggplot2, forecast, tseries, lubridate. > library('ggplot2') > library('forecast') > library('tseries') > library(lubridate) 2. Cài đặt thư viện: > install.packages("lubridate") 3. Nạp tập dữ liệu: > d<-read.csv("dataArgentina.csv", head=T) > d 4. Trích xuất dữ liệu của một năm bất kỳ trong tập d với dữ liệu của năm 2004 của Argentina. > Nam2004 <- d[format(as.Date(d$Date, format = '%m/%d/%Y'), '%Y')==2004,] > Nam2004 5. Xây dựng sơ đồ diễn biến số liệu năm 2004 của Argentina. > Nam2004$Date = as.Date(Nam2004$Date) > ggplot(Nam2004, aes(Date, Argentina))+ geom_line()+ scale_x_date('month')+ ylab("Số ca mắc cúm")+xlab("thời gian") 6. Làm mịn tập dữ liệu: > count_sc = ts(Nam2004[, c('Argentina')]) > Nam2004$clean_scm = tsclean(count_sc) > Nam2004 7. Vẽ biểu đồ với tập dữ liệu Nam2004 sau khi được xử lý qua hàm tsclean(): > ggplot() + geom_line(data = Nam2004, aes(x = Date, y = clean_scm)) +ylab('Số ca mắc cúm (Cleaned)') 8. Lấy mức trung bình theo những khoảng thời gian, làm mịn để chuỗi trở nên ổn định hơn và có thể dự đoán được: > Nam2004$cnt_ma = ma(Nam2004$clean_scm, order=7) #sử dụng số tại cột clean_scm đã được loại bỏ ngoại lệ > Nam2004$cnt_ma30 = ma(Nam2004$clean_scm, order=30) > ggplot() + geom_line(data = Nam2004, aes(x = Date, y = clean_scm, colour 48 ="Counts")) + geom_line(data = Nam2004, aes(x = Date, y = cnt_ma30, colour = "Di chuyển trượt hàng tháng")) + ylab('Số ca bệnh mắc') 9. Làm mịn và điều chỉnh chuỗi ban đầu bằng cách loại bỏ tính thời vụ: > count_sm = ts(na.omit(Nam2004$cnt_ma), frequency=7) > decomp = stl(count_sm, s.window="periodic") > deseasonal_scm <- seasadj(decomp) > plot(decomp) 10. Sử dụng ADF để kiểm tra tính dừng của chuỗi thời gian: > adf.test(count_sm, alternative = "stationary") 11. Biểu diễn sơ đồ dữ liệu với ACF và PACF: > Acf(count_sm, main='') > Pacf(count_sm, main='') 12. Kiểm tra sơ đồ với d = 1: > count_d1 = diff(deseasonal_scm, differences = 1) > plot(count_d1) > adf.test(count_d1, alternative = "stationary") 13. Biểu diễn sơ đồ dữ liệu với ACF và PACF với d = 1: > Acf(count_d1, main='ACF for Differenced Series') > Pacf(count_d1, main='PACF for Differenced Series') 14. Biểu diễn mô hình ARIMA: > auto.arima(deseasonal_scm, seasonal=FALSE) > fit<-auto.arima(deseasonal_scm, seasonal=FALSE) > tsdisplay(residuals(fit), lag.max=45, main='(1,1,1) Model Residuals') > fit2 = arima(deseasonal_scm, order=c(1,1,7)) 15. Biểu diễn mô hình dự báo: > fcast <- forecast(fit2, h=30) > plot(fcast)

Các file đính kèm theo tài liệu này:

  • pdfluan_van_khai_pha_du_lieu_va_ung_dung_trong_y_te_du_phong_ho.pdf
Luận văn liên quan