class: center, middle, inverse, title-slide .title[ # Ứng dụng phần mềm mã nguồn mở R trong phân tích kinh tế ] .subtitle[ ## Tìm hiểu về phân tích dữ liệu với R ] .author[ ### TS. Trần Quang Quý ] .institute[ ### Bộ môn Khoa học Máy tính & Công nghệ - Đại học Công nghệ Thông tin & Truyền thông ] .date[ ### Tháng 05 năm 2022 ] --- --- # Một số nội dung chính trình bày ##1. Tổng quan về phân tích dữ liệu ##2. Giới thiệu ngôn ngữ R ##3. Ví dụ xử lý dữ liệu với R ##4. Bài toán phân tích dữ liệu kinh tế sử dụng R ##5. Một số nội dung liên quan khác với R --- # Tổng quan về phân tích dữ liệu - Chúng ta đang bước vào kỷ nguyên số với nhu cầu lưu trữ và khai thác các nguồn dữ liệu (Big Data) ngày một lớn. Trở thành một nhà phân tích dữ liệu hoặc đảm nhiệm các vị trí liên quan đến lĩnh vực phân tích dữ liệu là công việc có ý nghĩa quan trọng với bất kì tổ chức, doanh nghiệp nào. - Phân tích dữ liệu __là một quá trình kiểm tra, làm sạch, chuyển đổi và mô hình hóa dữ liệu__ với mục tiêu khám phá thông tin hữu ích, thông báo kết luận và hỗ trợ ra quyết định. .center[ ] --- # Mô hình phân tích dữ liệu Trong hầu hết các dự án phân tích dữ liệu, chúng ta sẽ phải thực hiện những việc sau: .center[ ] --- # Nhập dữ liệu Chúng ta sẽ lấy dữ liệu được lưu trữ trong một tệp, cơ sở dữ liệu hoặc trang web và tải nó vào thành một đối tượng để xử lý. Những bộ dữ liệu này có thể là đầu ra của một dự án nghiên cứu mã gen, kết quả của một cuộc khảo sát, các phép đo được thực hiện trong phòng thí nghiệm, v.v. .center[ ] --- # Làm sạch, gọn gàng dữ liệu Việc tiếp theo sau khi nhập xong dữ liệu đó chính là việc làm sạch và gọn gàng dữ liệu (clean and tidy up data). Công việc này cho phép chúng ta có một bộ dữ liệu sạch và gọn gàng, giúp dễ dàng hơn cho việc trực quan và đưa vào mô hình học máy. Thông thường, với một dữ liệu được gọi là gọn gàng (tidy), cần đảm bảo hai yếu tố sau: - Mỗi một hàng của dữ liệu có thể được ví như một quan sát nhất định - Mỗi một cột của dữ liệu là một đặc tính hoặc biến số miêu tả tính chất của quan sát .center[ ] --- # Dữ liệu gọn - Tidy Data Chúng ta biết răng 80% phân tích dữ liệu được dành cho việc làm sạch và chuẩn bị dữ liệu. Và đây không chỉ là bước đầu tiên mà còn phải lặp lại nhiều lần trong quá trình phân tích khi các vấn đề mới xuất hiện hoặc dữ liệu mới được thu thập [Trích dẫn](https://cran.r-project.org/web/packages/tidyr/vignettes/tidy-data.html) .center[ ] > Happy families are all alike; every unhappy family is unhappy in its own way — Leo Tolstoy --- # Chuyển đổi dữ liệu Khi dữ liệu của chúng ta đã gọn gàng, thông thường cần phải chuyển đổi dạng hình dáng của dữ liệu. Các phép biến đổi phổ biến bao gồm chuẩn hóa (normalization), tạo các biến mới từ các biến hiện có (ví dụ: chuyển đổi đơn vị từ inch sang cm) hoặc tính toán thống kê tóm tắt (ví dụ: tính mean, median, max, min, mode….). .center[ ] --- # Trực quan và mô hình hóa - Khi dữ liệu chúng ta đã sẵn sàng, việc trực quan hóa dữ liệu là cần thiết để bước đầu khám phá ra các nội dung kiến thức và tri thức từ những con số, chữ cái. Đôi khi trực quan dữ liệu mang tới những tri thức mà chúng ta có thể không tưởng tượng ra được. - Mô hình hóa dữ liệu bản chất là đưa ra các công thức toán học hoặc các mô hình toán học nhằm bổ sung rõ hơn về mặt phân tích con số cho trực quan. Các mô hình và phương trình toán học được đưa ra áp dụng cho các quan sát và biến số trong tập dữ liệu. .center[ ] --- # Trực quan và mô hình hóa Khi các nội dung đã được phân tích và có kết quả phù hợp với bài toán đề ra, chúng ta có thể kết nối hoặc đưa ra các nội dung này tới người đọc hoặc nghiên cứu, thông qua các phương tiện như bài báo khoa học, báo cáo trình bày, thesis... .center[ ] --- # Giới thiệu ngôn ngữ R .center[ ] --- # Ngôn ngữ R .center[ ] --- # Ngôn ngữ R và chi phí ###- R là một công cụ rất mạnh cho học máy, thống kê và phân tích dữ liệu. Nó là một ngôn ngữ lập trình. Ngôn ngữ R là một platform-independent do đó chúng ta có thể sử dụng nó cho bất kỳ hệ điều hành nào. Việc cài đặt R cũng miễn phì vì thế chúng ta có thể sử dụng mà không cần phải mua bản quyền. ###- Với R, người dùng có thể thao tác và quản lý các dữ liệu thống kê một cách dễ dàng. ###- Đây còn là môi trường phần mềm gồm các nhóm toán tử giúp cho việc tính toán mảng, vector, ma trận... trở nên dễ dàng hơn. Bên cạnh đó, ngôn ngữ lập trình R cũng hỗ trợ rất tốt cho việc xây dựng các đồ họa thống kê. --- # Ngôn ngữ R và chi phí ###- R được trang bị bộ công cụ lớn, có thể tích hợp để phân tích dữ liệu các loại ngôn ngữ như C, C++, Fortran... giúp cho việc tính toán được thực hiện nhanh chóng. ###- [Cài đặt R và Rstudio](https://rpubs.com/tranquangquy_ictu/772213) --- # Sự phổ biến của R ### Từ năm 2019 đến 2020, Ngôn ngữ lập trình R đã thiết lập một kỷ lục mới từ hạng 20 lên hạng 8. Cách đây một thời gian, có vẻ như Python đã chiến thắng trong cuộc chiến lập trình thống kê, nhưng mức độ phổ biến của R vẫn đang tăng lên trong dòng chảy của Python. Không thể phủ nhận được sự phổ biến, tiện dụng của R trong công cuộc lập trình thống kê dữ liệu. ###[Link tham khảo](https://websitehcm.com/10-ly-do-huu-ich-de-hoc-ngon-ngu-lap-trinh-r/) --- # Sự phổ biến của R .center[ ] --- <div class="figure"> <img src="r2.png" alt="Distribution of Salaries." width="2048" /> <p class="caption">Distribution of Salaries.</p> </div> --- # Một số sự kiện sử dụng R tiêu biểu Sự kiện quan trọng liên quan đến ngôn ngữ R - Google sử dụng R để tính ROI của các chiến dịch quảng cáo. - Ford sử dụng R để cải thiện thiết kế của xe của mình. - Twitter sử dụng R để theo dõi trải nghiệm người dùng. - FDA (Cơ quan Quản lý Thực phẩm và Dược phẩm) sử dụng R để mô phỏng các thử nghiệm trên các sản phẩm thực phẩm và dược phẩm mới trước khi chúng được phép sản xuất. - Cơ quan Thời tiết Quốc gia Hoa Kỳ sử dụng R để dự đoán lũ lụt nghiêm trọng. - Nhóm Phân tích Dữ liệu Nhân quyền sử dụng R để định lượng tác động của chiến tranh. - R đang được The New York Times sử dụng để tạo đồ họa thông tin. --- .center[ ] --- # So sánh R và SPSS ###- Hiện nay, có rất nhiều phần mềm chuyên dụng phục vụ cho việc xử lý và phân tích số liệu thống kê. Ví dụ như: SAS, SPSS, STATA, R… Mỗi phần mềm có đặc trưng, điểm mạnh, điểm yếu riêng. ###- SPSS có giao diện giữa người và máy khá thân thiện cho phép sử dụng các menu thả xuống để chọn các lệnh thực hiện. Khi thực hiện một phân tích chỉ đơn giản chọn thủ tục cần thiết và chọn các biến phân tích và bấm OK là có kết quả ngay trên màn hình để xem xét. --- # Ưu điểm của SPSS ###– SPSS có một bộ soạn thảo dữ liệu tương tự như excel, bộ soạn thảo cho phép vào các dữ liệu và mô tả các thuộc tính của chúng, chính vì vậy SPSS khá dễ sử dụng. ###– Sức mạnh lớn nhất của SPSS là lĩnh vực phân tích phương sai (SPSS cho phép thực hiện nhiều loại kiểm định tác động riêng biệt) và phân tích nhiều chiều (thí dụ phân tích phương sai nhiều chiều, phân tích nhân tố, phân tích nhóm tổ). --- # Nhược điểm của SPSS ###- Điểm yếu nhất của SPSS là khả năng xử lý đối với những vấn đề ước lượng phức tạp và do đó khó đưa ra được các ước lượng sai số đối với các ước lượng này. ###- SPSS không có công cụ quản lý dữ liệu lớn và xử lý. ###- SPSS xử lý mỗi file dữ liệu ở một thời điểm và không phải là rất mạnh khi thực hiện các nhiệm vụ phân tích cần làm việc với nhiều file dữ liệu cùng một lúc. Các file dữ liệu có thể có đến 4096 biến và số lượng bản ghi chỉ bị giới hạn trong dung lượng của đĩa cứng. ###- Ngôn ngữ cú pháp của SPSS ###- [Link tham khảo](https://phuongphapnghiencuu.com/so-sanh-va-lua-chon-giua-cac-phan-mem-thong-ke-phan-tich-so-lieu-spss-stata-sas-r/) --- # Tại sao R được dùng nhiều trong kinh doanh ###- Lý do quan trọng nhất – R là một open-source, nên nó cực kỳ “kinh tế”. Đồng thời R rất phù hợp cho việc mô phỏng dữ liệu qua bảng biểu. Nhờ một cộng đồng phát triển và hơn 15000+ packages trong mọi lĩnh vực nghiên cứu. Hiện tại, khó có một công cụ nào có thể theo kịp R. ###- Trong việc nghiên cứu dữ liệu, việc khan hiếm nhân tài là một vấn đề rất lớn. Các công ty có thể dùng ngôn ngữ R để làm nền tảng và training nhân viên sử dụng nó. --- # Một vài tính năng thống kê quan trọng ###- Basic Statistics – Mean, variance, median. ###- Static graphics – Basic plots, graphic maps. ###- Probability distributions – Beta, Binomial. ###- Tính toán phân tán (Distributed-Computing) – Distributed computing là một open source, hiệu năng cao cho ngôn ngữ R. Nó chia công việc thành nhiều task nhỏ cho nhiều node để chạy đồng thời, nhờ đó giảm thời gian để chạy phân tích một tập dữ liệu lớn. ###- R packages – là một tập các R functions, compiled code và dữ liệu mẫu. --- # Ưu và nhược điểm của R ##Ưu điểm của ngôn ngữ R ###- R có những package thống kê toàn diện nhất với công nghệ mới nhất, những ý tưởng mới thường xuất hiện đầu tiên trên R. R là open-source nên bất kỳ ai cũng có thể sử dụng và cải tiến nó. ###- Vì là open-source nên R có thế được dùng mọi lúc mọi nơi cho bất cứ việc gì, kể cả bán các sản phẩm từ R theo điều kiện của giấy phép. ###- R có thể chạy trên bất kỳ hệ điều hành nào. Bất kỳ ai cũng được hỗ trợ để đưa ra ý tưởng phát triển, fix bug, phát triển package mới. --- # Ưu và nhược điểm của R ## Nhược điểm của R ###- Một vài package của R có thể không hoàn hảo và còn lỗi, thậm chí là không phù hợp. ###- Việc xử lý lỗi code khi chạy đôi khi không có ai trợ giúp hoặc có hướng giải quyết. ###- R tham lam khi sử dụng tài nguyên bộ nhớ của hệ thống, có thể "tranh giành và chiếm bộ nhớ của máy tính". --- # Ví dụ về Mô hình phân tích dữ liệu __Tập dữ liệu IRIS__ - Bộ dữ liệu về hoa iris được thu thập bởi Edgar Anderson, một nhà thực vật học người Mỹ vào những năm 1920. Dữ liệu này được nhà thống kê Ronald Fisher sử dụng để chứng minh các phương pháp phân loại thống kê. .center[ ] --- # Câu hỏi phân tích Dựa trên số liệu có thể đo được của một bông hoa diên vỹ bất kỳ nào đó, liệu có thể phân loại được xem đó là bông hoa nào không? ```r library(dplyr) library(ggvis) library(kableExtra) # Load dữ liệu data("iris") # Xem 6 quan sát đầu tiên iris %>% head(n=4) %>% kable() ``` <table> <thead> <tr> <th style="text-align:right;"> Sepal.Length </th> <th style="text-align:right;"> Sepal.Width </th> <th style="text-align:right;"> Petal.Length </th> <th style="text-align:right;"> Petal.Width </th> <th style="text-align:left;"> Species </th> </tr> </thead> <tbody> <tr> <td style="text-align:right;"> 5.1 </td> <td style="text-align:right;"> 3.5 </td> <td style="text-align:right;"> 1.4 </td> <td style="text-align:right;"> 0.2 </td> <td style="text-align:left;"> setosa </td> </tr> <tr> <td style="text-align:right;"> 4.9 </td> <td style="text-align:right;"> 3.0 </td> <td style="text-align:right;"> 1.4 </td> <td style="text-align:right;"> 0.2 </td> <td style="text-align:left;"> setosa </td> </tr> <tr> <td style="text-align:right;"> 4.7 </td> <td style="text-align:right;"> 3.2 </td> <td style="text-align:right;"> 1.3 </td> <td style="text-align:right;"> 0.2 </td> <td style="text-align:left;"> setosa </td> </tr> <tr> <td style="text-align:right;"> 4.6 </td> <td style="text-align:right;"> 3.1 </td> <td style="text-align:right;"> 1.5 </td> <td style="text-align:right;"> 0.2 </td> <td style="text-align:left;"> setosa </td> </tr> </tbody> </table> --- # Thống kê tổng quan ```r # Thống kê tổng quát summary(iris) ``` ``` ## Sepal.Length Sepal.Width Petal.Length Petal.Width ## Min. :4.300 Min. :2.000 Min. :1.000 Min. :0.100 ## 1st Qu.:5.100 1st Qu.:2.800 1st Qu.:1.600 1st Qu.:0.300 ## Median :5.800 Median :3.000 Median :4.350 Median :1.300 ## Mean :5.843 Mean :3.057 Mean :3.758 Mean :1.199 ## 3rd Qu.:6.400 3rd Qu.:3.300 3rd Qu.:5.100 3rd Qu.:1.800 ## Max. :7.900 Max. :4.400 Max. :6.900 Max. :2.500 ## Species ## setosa :50 ## versicolor:50 ## virginica :50 ## ## ## ``` --- # Lọc dữ liệu để phân tích ```r library(dplyr) iris %>% filter(Species == "setosa" | Species == "virginica") -> iris_subset iris_subset %>% head() %>% kable() ``` <table> <thead> <tr> <th style="text-align:right;"> Sepal.Length </th> <th style="text-align:right;"> Sepal.Width </th> <th style="text-align:right;"> Petal.Length </th> <th style="text-align:right;"> Petal.Width </th> <th style="text-align:left;"> Species </th> </tr> </thead> <tbody> <tr> <td style="text-align:right;"> 5.1 </td> <td style="text-align:right;"> 3.5 </td> <td style="text-align:right;"> 1.4 </td> <td style="text-align:right;"> 0.2 </td> <td style="text-align:left;"> setosa </td> </tr> <tr> <td style="text-align:right;"> 4.9 </td> <td style="text-align:right;"> 3.0 </td> <td style="text-align:right;"> 1.4 </td> <td style="text-align:right;"> 0.2 </td> <td style="text-align:left;"> setosa </td> </tr> <tr> <td style="text-align:right;"> 4.7 </td> <td style="text-align:right;"> 3.2 </td> <td style="text-align:right;"> 1.3 </td> <td style="text-align:right;"> 0.2 </td> <td style="text-align:left;"> setosa </td> </tr> <tr> <td style="text-align:right;"> 4.6 </td> <td style="text-align:right;"> 3.1 </td> <td style="text-align:right;"> 1.5 </td> <td style="text-align:right;"> 0.2 </td> <td style="text-align:left;"> setosa </td> </tr> <tr> <td style="text-align:right;"> 5.0 </td> <td style="text-align:right;"> 3.6 </td> <td style="text-align:right;"> 1.4 </td> <td style="text-align:right;"> 0.2 </td> <td style="text-align:left;"> setosa </td> </tr> <tr> <td style="text-align:right;"> 5.4 </td> <td style="text-align:right;"> 3.9 </td> <td style="text-align:right;"> 1.7 </td> <td style="text-align:right;"> 0.4 </td> <td style="text-align:left;"> setosa </td> </tr> </tbody> </table> --- # Trực quan dữ liệu chiều dài Đài hoa .pull-left[ ```r library(ggplot2) library(plyr) library(ggvis) # Trực quan cho chiều dài Đài hoa iris_subset %>% group_by(Species) %>% ggvis(x = ~ Sepal.Length, fill = ~ Species) %>% layer_histograms(width = 0.3) -> p1 ``` ] .pull-right[
Renderer:
SVG
|
Canvas
Download
] --- # Trực quan dữ liệu chiều rộng Đài hoa .pull-left[ ```r library(ggplot2) library(plyr) # Trực quan cho chiều rộng Đài hoa iris_subset %>% group_by(Species) %>% ggvis(x = ~ Sepal.Width, fill = ~ Species) %>% layer_histograms(width = 0.3) -> p2 ``` ] .pull-right[
Renderer:
SVG
|
Canvas
Download
] --- # Trực quan dữ liệu chiều dài Cánh hoa .pull-left[ ```r library(ggplot2) library(plyr) # Trực quan cho chiều dài cánh hoa iris_subset %>% group_by(Species) %>% ggvis(x = ~ Petal.Length, fill = ~ Species) %>% layer_histograms(width = 0.3) -> p3 ``` ] .pull-right[
Renderer:
SVG
|
Canvas
Download
] --- # Trực quan dữ liệu chiều rộng .pull-left[ ```r library(ggplot2) library(plyr) # Trực quan cho chiều rộng Cánh hoa iris_subset %>% group_by(Species) %>% ggvis(x = ~ Petal.Width, fill = ~ Species) %>% layer_histograms(width = 0.3) -> p4 ``` ] .pull-right[
Renderer:
SVG
|
Canvas
Download
] --- # Nhận xét - Nhìn vào 4 biểu đồ phân bố histogram, chúng ta hoàn toàn dễ dàng nhận thấy sự khác biệt về các thuộc tính với hai loài hoa này. Ví dụ: Với loài hoa setosa, chiều dài và chiều rộng cánh hoa có xu hướng tập trung ở các bông hoa có kích thước nhỏ hơn 3.0 và 1.0 (các cột tần số xuất hiện) màu xanh nước biển. - Nhờ các đồ thị trên, chúng ta biết rằng chúng ta có thể sử dụng chiều dài và chiều rộng của cánh hoa để phân biệt giữa một bông hoa thuộc loài Iris setosa và loài Iris virginica. Với giả định rằng chúng tôi chỉ xử lý hoa từ hai loài này, hãy sử dụng các quan sát của chúng tôi để đề xuất một mô hình đơn giản để phân loại hoa iris. --- # Mô hình hóa ```r which_species <- function(petal_length, petal_width){ if (petal_length <= 3 && petal_width <= 1){ print("Iris setosa") } else{ print("Iris virginica") } } # Test which_species(petal_length=2, petal_width=0.5) ``` ``` ## [1] "Iris setosa" ``` ```r which_species(petal_length=10, petal_width=0.5) ``` ``` ## [1] "Iris virginica" ``` --- # Ngôn ngữ R .center[ ] --- # Ngôn ngữ R .center[ ] [Tìm hiểu về ngôn ngữ R](https://rpubs.com/tranquangquy_ictu/772213) --- # Case Study -- Giới thiệu về thống kê dữ liệu với tập dữ liệu PISA [Phân tích thống kê PISA](https://rpubs.com/tranquangquy_ictu/770024) -- Giới thiệu gói quantmod -- Lấy dữ liệu từ Yahoo Finance -- Trực quan dữ liệu và phân tích --- # Giới thiệu về quantmod -- Phân tích kỹ thuật (Technical Analysis) là một phương pháp phân tích chứng khoán, dự báo biến động của giá thông qua việc nghiên cứu các dữ liệu quá khứ của thị trường, chủ yếu là giá cả và khối lượng giao dịch. -- Các công cụ chủ yếu sử dụng trong phân tích kỹ thuật bao gồm biểu đồ (charts) và các chỉ báo kỹ thuật (indicators). Trong đó biểu đồ là một công cụ quan trọng, làm nền tảng cho nhiều kỹ thuật như phân tích xu hướng (trends), phân tích mô hình giá (patterns), phân tích chu kỳ (cycles)… -- Một chức năng rất mạnh của R là cho phép lấy trực tiếp các dữ liệu trên Internet, nhất là dữ liệu tài chính theo thời gian (FTS - Financial Time Series) bằng gói quantmod. Với gói quantmod của R cho phép download khoảng 40000 chuỗi dữ liệu thời gian từ các nguồn như Yahoo Finance, Google Finance, …). --- # Câu hỏi? Trong nội dung này chúng ta sẽ so sánh giá đóng cửa (closing prices) dành cho 2 công ty Apple và Facebook từ tháng 05 năm 2021 đến hiện tại. .center[ ] --- # Thu thập dữ liệu cho Apple ```r apple <- getSymbols("AAPL", return.class = "data.frame", from = "2021-05-05") apple <- AAPL %>% mutate(Date = as.Date(row.names(.))) %>% select(Date, AAPL.Close) %>% mutate(Company = "Apple") names(apple)[names(apple) == "AAPL.Close"] <- "Close" apple %>% head(n=10) ``` ``` ## Date Close Company ## 2021-05-05 2021-05-05 128.10 Apple ## 2021-05-06 2021-05-06 129.74 Apple ## 2021-05-07 2021-05-07 130.21 Apple ## 2021-05-10 2021-05-10 126.85 Apple ## 2021-05-11 2021-05-11 125.91 Apple ## 2021-05-12 2021-05-12 122.77 Apple ## 2021-05-13 2021-05-13 124.97 Apple ## 2021-05-14 2021-05-14 127.45 Apple ## 2021-05-17 2021-05-17 126.27 Apple ## 2021-05-18 2021-05-18 124.85 Apple ``` --- # Thu thập dữ liệu cho Facebook ```r facebook <- getSymbols("FB", return.class = "data.frame", from = "2021-05-05") facebook <- FB %>% mutate(Date = as.Date(row.names(.))) %>% select(Date, FB.Close) %>% mutate(Company = "Facebook") names(facebook)[names(facebook) == "FB.Close"] <- "Close" facebook %>% head(n=10) ``` ``` ## Date Close Company ## 2021-05-05 2021-05-05 315.02 Facebook ## 2021-05-06 2021-05-06 320.02 Facebook ## 2021-05-07 2021-05-07 319.08 Facebook ## 2021-05-10 2021-05-10 305.97 Facebook ## 2021-05-11 2021-05-11 306.53 Facebook ## 2021-05-12 2021-05-12 302.55 Facebook ## 2021-05-13 2021-05-13 305.26 Facebook ## 2021-05-14 2021-05-14 315.94 Facebook ## 2021-05-17 2021-05-17 315.46 Facebook ## 2021-05-18 2021-05-18 309.96 Facebook ``` --- # Nối dữ liệu và trực quan hóa ```r # Nối dữ liệu data_series <- rbind(apple, facebook) # Trực quan hóa dữ liệu # National Association of Securities Dealers Automated Quotation System ggplot(data = data_series, mapping = aes(x = Date, y = Close, color = Company)) + geom_line(size = 1) + scale_x_date(date_breaks = "1 month", label = date_format("%b-%Y")) + theme(axis.text.x = element_text(angle = 45, hjust = 1)) + scale_y_continuous(limits = c(100, 450), breaks = seq(100,400,50), labels = dollar) + labs(title = "NASDAQ Closing Prices", subtitle = "From May 2021 to May 2022", caption = "source: Yahoo Finance", x = "", y = "Closing Price") + scale_color_brewer(palette = "Set1") -> p5 ``` --- # Hiển thị dữ liệu
--- # Case Study: Gapminder [Case Study Gapminder]("C:\Users\Admin\Desktop\SeminarTUEBA\Gapminder1.html") --- # Kết luận Như vậy, qua một số nội dung trình bày. Chúng ta có thể tóm lược một số nội dung chính như sau: ###- Nắm bắt được một quá trình cơ bản trong phân tích dữ liệu tổng quát. ###- Một số ưu, nhược điểm của ngôn ngữ R so với các ngôn ngữ tính toán thống kê khác hiện nay. ###- Khả năng phân tích dữ liệu kinh tế của R. --- # Question and Answer .center[] --- .center[]