-
Notifications
You must be signed in to change notification settings - Fork 2
/
Statistic.ipynb
402 lines (402 loc) · 33.6 KB
/
Statistic.ipynb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
{
"cells": [
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
"# Nhập môn thống kê với Python\n",
"### Mô tả một tập dữ liệu\n",
"Giả sử rằng bạn chạy 100 m trong sáu lần, mỗi lần chạy bạn dùng đồng hồ đo lại thời gian chạy (tính bằng giây) và kết quả 6 lần chạy của bạn gồm sáu giá trị (còn gọi là quan sát). Một phương pháp được dùng trong thống kê là sử dụng bảng thu thập dữ liệu như sau:\n",
"![1.png](https://cldup.com/ce5pxlT19Z-2000x2000.png)\n",
"Để thấy được mối quan hệ giữa các dữ liệu một cách trực quan, chúng ta có thể tạo một biểu đồ cột \n",
"![2.png](https://cldup.com/skKctyxVB6-2000x2000.png)\n",
"Biểu đồ cột trên có thể được tạo bằng cách dùng thư viện [matplotlib](https://matplotlib.org/) như sau:"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {
"scrolled": true
},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x1d6853e8e48>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Vẽ biểu đồ thống kê số giây sau mỗi lần chạy\n",
"from matplotlib import pyplot as plt\n",
"Lan_chay = [1,2,3,4,5,6]\n",
"So_giay = [25.1, 21.2, 17.9, 23.0, 24.6, 19.5]\n",
"xs = [i + 0.1 for i, _ in enumerate(Lan_chay)]\n",
"plt.bar(xs, So_giay)\n",
"plt.ylabel(\"Số giây\")\n",
"plt.xlabel(\"Lần chạy\")\n",
"plt.title(\"Thống kê số giây sau mỗi lần chạy\")\n",
"plt.xticks([i + 0.1 for i, _ in enumerate(Lan_chay)], Lan_chay)\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Từ bảng dữ liệu hay biểu đồ, chúng ta có thể suy ra một số thông tin đơn giản như lần chạy nào có số giây lớn nhất hay nhỏ nhất nhưng chúng ta vẫn cần biết nhiều hơn.\n",
"## Xu hướng tập trung (Central Tendencies)\n",
"Một trong những phương pháp đo lường phổ biến dùng trong thống kê là đo lường theo xu hướng tập trung dựa trên 3 tham số là số trung bình (mean hay average), số trung vị (media) và số mode - là số có tần suất xuất hiện nhiều nhất trong mẫu.\n",
"### Mean\n",
"Mean có thể được tính một cách đơn giản bằng tổng của tất cả các giá trị của dữ liệu trong mẫu chia cho kích thước mẫu.Hàm tính Mean của một mẫu có thể được định nghĩa đơn giản bằng Python như sau:"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"21.88333333333333\n"
]
}
],
"source": [
"Lan_chay = [1,2,3,4,5,6]\n",
"So_giay = [25.1, 21.2, 17.9, 23.0, 24.6, 19.5]\n",
"# Định nghĩa hàm tính mean\n",
"def mean(mau):\n",
" return sum(mau)/len(mau)\n",
"print(mean(So_giay)) # 21.88333333333333"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Median\n",
"Trong lý thuyết xác suất và thống kê, nếu m là số trung vị (Median) của một tập mẫu nào đó thì 1/2 số phần tử trong tập mẫu đó có giá trị nhỏ hơn hay bằng m và một nửa còn lại có giá trị bằng hoặc lớn hơn m.\n",
"Median được tính như sau: Sắp xếp dữ liệu và lấy giá trị ở giữa. Nếu số giá trị là một số chẳn thì median là trung bình của 2 giá trị ở giữa. Để hiểu hơn về trung vị chúng ta có thể xem xét hai tập mẫu sau:\n",
"S1 = {7, 3, 2, 4, 3}\n",
"S2 = {8, 7, 5, 6, 4,3}\n",
"Trước khi tính trung vị, chúng ta cần sắp xếp dữ liệu theo thứ tự tăng (hay giảm) dần. Tập S1 có thể được viết lại\n",
"S1 = {2,3,3,4,7}\n",
"Và S2 có thể được viết lại:\n",
"S2 = {3,4,5,6,7,8}\n",
"Như vậy Median(S1) = 3 và Median(S2) = (5+6)/2 = 5.5. Đoạn mã Python sau minh họa hàm tính Median:"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"3\n",
"5.5\n"
]
}
],
"source": [
"S1 = [7, 3, 2, 4, 3]\n",
"S2 = [8, 7, 5, 6, 4, 3]\n",
"# Hàm tính Median của một tập mẫu\n",
"def median(v):\n",
" n = len(v)\n",
" # sắp xếp tập mẫu\n",
" sorted_v = sorted(v)\n",
" midpoint = n // 2\n",
" if n % 2 == 1:\n",
" # nếu số phần tử của tập mẫu là lẻ thì Median là phần tử ở giữa sau khi \n",
" # tập mẫu được sắp xếp\n",
" return sorted_v[midpoint]\n",
" else:\n",
" # nếu số phần tử của tập mẫu là chẵn thì Median là Median của hai phần tử\n",
" # ở giữa sau khi tập mẫu được sắp xếp\n",
" lo = midpoint - 1\n",
" hi = midpoint\n",
" return (sorted_v[lo] + sorted_v[hi]) / 2\n",
"print(median(S1)) # 3\n",
"print(median(S2)) # 5.5"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Quantile\n",
"Dạng tổng quát của Median là Quantile– là những giá trị (hay điểm cắt (cut points)) chia tập mẫu thành p phần có số phần tử bằng nhau. Khi đó ta có thể gọi các điểm này là p-quantiles. Median 2-quantiles. Một Quantile phổ biến khác dùng trong xác suất và thống kê gọi là Tứ phân vị (quartile) https://vi.wikipedia.org/wiki/T%E1%BB%A9_ph%C3%A2n_v%E1%BB%8B là 4-quantiles. Xem danh sách các quantiles tại https://en.wikipedia.org/wiki/Quantile \n",
"Hàm Python sau sẽ định nghĩa một hàm quantile trả về một quantile theo tỉ lệ p:"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"6"
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"S = [3, 6, 7, 8, 8, 9, 10, 13, 15, 16, 20]\n",
"def quantile(x, p):\n",
" p_index = int(p * len(x))\n",
" return sorted(x)[p_index]\n",
"quantile(S, 0.1)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Mode \n",
"Mode là số có tần suất xuất hiện nhiều nhất trong tập mẫu. Xem xét các tập mẫu và Mode của chúng:\n",
"S1 = {1, 1, 3, 3, 3, 4} -> Mode (S1) = 3 vì 3 xuất hiện nhiều nhất trong S1\n",
"S2 = {1, 2, 3} -> Mode(S2) = {1,2,3} vì các số 1,2,3 có số lần xuất hiện bằng nhau là 1 \n",
"S3 = {1, 2, 2, 1} -> Mode(S3) = {1,2} vì các số 1,2 có số lần xuất hiện bằng nhau là 2\n",
"Đoạn mã Python sau định nghĩa hàm mode trả về các phần tử Mode:"
]
},
{
"cell_type": "code",
"execution_count": 28,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[3]\n",
"[1, 2, 3]\n",
"[1, 2]\n"
]
}
],
"source": [
"from collections import Counter\n",
"S1 = [1, 1, 3, 3, 3, 4]\n",
"S2 = [1, 2, 3]\n",
"S3 = [1, 2, 2, 1]\n",
"def mode(x):\n",
" counts = Counter(x)\n",
" max_count = max(counts.values())\n",
" return [x_i for x_i, count in counts.items()\n",
" if count == max_count]\n",
" return 0\n",
"print(mode(S1)) # [3]\n",
"print(mode(S2)) # [1,2,3]\n",
"print(mode(S3))#[1,2]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Đo lường sự biến thiên của dữ liệu (Variation of Data)\n",
"Để đo lường sự biến thiên hay (thường so với giá trị trung bình) của dữ liệu người ta thường dùng các tham số Range (khoảng biến thiên), Interquartile Range (IQR – Khoảng tứ phân vị), Standard Deviation (độ lệch chuẩn), Variance (phương sai), Standard Error (sai số chuẩn).\n",
"### Range (Khoảng biến thiên) \n",
"Được tính bằng cách lấy giá trị lớn nhất trừ giá trị nhỏ nhất trong mẫu. Đoạn mã Python sau mô tả cách tính Range:"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"7.200000000000003\n"
]
}
],
"source": [
"So_giay = [25.1, 21.2, 17.9, 23.0, 24.6, 19.5]\n",
"def data_range(x):\n",
" return max(x) - min(x)\n",
"print(data_range(So_giay))"
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
"### Deviation (độ lệch)\n",
"Trong thống kê, khi muốn đo lường sự phân tán của dữ liệu so với giá trị trung tâm ta dùng khái niệm độ lệch (deviation). Giả sử ta sử dụng giá trị trung bình làm giá trị trung tâm, khi đó ta có tổng độ lệch của tất cả quan sát với giá trị trung bình trong mẫu có n giá trị là:\n",
"![4.png](https://cldup.com/1_gclwcaeU-3000x3000.png)\n",
"Vì các giá trị si có thể lớn, bằng hay nhỏ hơn Mean nên giá trị độ lệch mỗi lần quan sát sẽ có những giá trị âm, dương hay 0 và điều này sẽ dẫn đến kết quả tổng độ lệch d có thể bằng 0. Để tránh sự bất tiện này, chúng ta sẽ dùng giá trị tuyệt đối cho các độ lệch và cũng để không bị ảnh hưởng từ kích thước mẫu chúng ta sẽ dùng công thức tổng độ lệch như sau:\n",
"![5.png](https://cldup.com/h6NX_KuGQ5-3000x3000.png)\n",
"Tuy nhiên, vấn đề của giá trị tuyệt đối là tính không liên tục tại gốc tọa độ nên chúng ta sẽ sử dụng các công cụ khác để đo lường sự phân tán của dữ liệu như phương sai (variance) và độ lệch chuẩn (standard deviation).\n",
"### Phương sai (variance) và độ lệch chuẩn (standard deviation)\n",
"Trong xác suất thống kê có hai khái niệm cơ bản là population (tạm dịch: quần thể) và sample. Population là một tập hợp có số lượng lớn các cá thể (hay các tên gọi khác như phần tử, thành viên, v.v.) và một sample là một tập con hay tập mẫu của population. Để tiện việc minh họa, các khái niệm hay công thức trong bài viết này được áp dụng trên các sample thay vì population.\n",
"Vì hạn chế của giá trị tuyệt đối trong công thức tính độ lệch nên chúng ta có thể sử dụng khái niệm phương sai (variance) để đo lường sự phân tán của dữ liệu. Phương sai áp dụng cho tập mẫu (sample) gồm n phần tử gọi là phương sai mẫu (sample variance) có công thức như sau:\n",
"![6.png](https://cldup.com/VErEhbqy5K-3000x3000.png)\n",
"Lưu ý rằng, nếu phương sai áp dụng trên tập population có N cá thể thì công thức sẽ là:\n",
"![7.png](https://cldup.com/B_DCgio2ID-3000x3000.png)\n",
"Vấn đề dùng (n-1) hay N liên quan đến các khái niệm ước lượng chệch (biased estimator) và ước lượng không chệch (unbiased estimator). Có thể tìm hiểu thêm tại https://stats.stackexchange.com/questions/17890/what-is-the-difference-between-n-and-n-1-in-calculating-population-variance\n",
"Phương sai là tham số rất tốt để đo lường sự biến thiên (hay phân tán) của dữ liệu trong mẫu vì nó đã quan tâm đến độ lệch của mỗi quan sát so với số trung bình, loại bỏ ảnh hưởng của kích thước mẫu và là hàm mượt. Tuy nhiên, điểm yếu của phương sai là không cùng đơn vị tính với Mean. Đơn vị tính của phương sai là bình phương của đơn vị tính của trung bình. Chẳn hạn, đơn vị tính của thời gian chạy trung bình là giây trong khí đó đơn vị tính của phương sai là giây bình phương. Để giải quyết vấn đề này, người ta lấy căn bậc 2 của phương sai và kết quả này gọi là độ lệch chuẩn (Standard Deviation). Công thức độ lệch chuẩn (áp dụng trên tập mẫu):\n",
"![8.png](https://cldup.com/xYiN6A8o7X-3000x3000.png)\n",
"## Tính tương quan (Correlation)\n",
"Trong lý thuyết xác suất và thống kê, hệ số tương quan (Coefficient Correlation) cho biết độ mạnh của mối quan hệ tuyến tính giữa hai biến số ngẫu nhiên. Từ tương quan (Correlation) được thành lập từ Co- (có nghĩa \"together\") và Relation (quan hệ).\n",
"Hệ số tương quan giữa 2 biến có thể dương (positive) hoặc âm (negative). Hệ số tương quan dương cho biết rằng giá trị 2 biến tăng cùng nhau còn hệ số tương quan âm thì nếu một biến tăng thì biến kia giảm.\n",
"Một khái niệm quan trọng khác liên quan đến tính tương quan là hiệp phương sai (covariance). Nếu phương sai dùng để đo lường sự biến thiên của một biến ngẫu nhiên (hay dữ liệu trên một tập mẫu) thì hiệp phương sai đo lường sự biến thiên của hai biến ngẫu nhiên (hay dữ liệu trên hai tập mẫu cùng số cá thể). Công thức hiệp phương sai của hai biến (hay hai tập mẫu có cùng n cá thể) x, y:\n",
"![9.png](https://cldup.com/BU7VQs5VdH-3000x3000.png)\n",
"Công thức tính hệ số tương quan dựa trên hiệp phương sai như sau:\n",
"![10.png](https://cldup.com/03fGbeVD2F-3000x3000.png)\n",
"Với sdx và sdy tương ứng là độ lệch chuẩn của x và y.Đoạn mã Python dùng để tính hệ số tương quan r như sau:"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"scrolled": true
},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x1ed0c0e4668>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"0.9575066230015952\n"
]
}
],
"source": [
"import math\n",
"from matplotlib import pyplot as plt\n",
"Lan_chay = [1,2,3,4,5,6]\n",
"So_giay = [25.1, 21.2, 17.9, 23.0, 24.6, 19.5]\n",
"Temperature = [14.2, 16.4,11.9, 15.2, 18.5, 22.1, 19.4, 25.1, 23.4, 18.1, 22.6, 17.2]\n",
"Ice_Cream_Sales = [215, 325, 185, 332, 406, 522, 412, 614, 544, 421, 445, 408]\n",
"# Tính tổng bình phương \n",
"def dot(x,y):\n",
" return sum(x_i * y_i\n",
" for x_i, y_i in zip(x, y))\n",
"# Tính tổng bình phương \n",
"def sum_of_squares(s):\n",
" return sum(s_i * s_i\n",
" for s_i, s_i in zip(s, s))\n",
"# Định nghĩa hàm tính mean\n",
"def mean(s):\n",
" return sum(s)/len(s)\n",
"# tính độ lệch\n",
"def deviation(s):\n",
" s_Mean = mean(s)\n",
" return [s_i - s_Mean for s_i in s]\n",
"# tính phương sai mẫu\n",
"def variance(s):\n",
" n = len(s)\n",
" d = deviation(s)\n",
" return sum_of_squares(d) / (n - 1)\n",
"# tính độ lệch chuẩn mẫu\n",
"def standard_deviation(s):\n",
" return math.sqrt(variance(s))\n",
"# tính hiệp phương sai\n",
"def covariance(x, y):\n",
" n = len(x)\n",
" return dot(deviation(x), deviation(y)) / (n - 1)\n",
"# tính hệ số tương quan\n",
"def correlation(x, y):\n",
" stdev_x = standard_deviation(x)\n",
" stdev_y = standard_deviation(y)\n",
" if stdev_x > 0 and stdev_y > 0:\n",
" return covariance(x, y) / (stdev_x * stdev_y)\n",
" else:\n",
" return 0 \n",
"plt.scatter(Temperature,Ice_Cream_Sales)\n",
"plt.show()\n",
"print(correlation(Temperature, Ice_Cream_Sales))"
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {
"collapsed": true
},
"source": [
"Xét một ví dụ về mối tương quan giữa nhiệt độ (Temprature) và doanh số bán kem (Ice Cream Sales) như sau:\n",
"![11.png](https://cldup.com/peeatJU2JT-3000x3000.png)\n",
"Chúng ta có thể thấy rõ hơn mối tương quan giữa hai biến này thông qua đồ thị sau:\n",
"![12.png](https://cldup.com/HiHF9n4uGm-3000x3000.png)\n",
"Qua đồ thị chúng ta thấy rằng, nhiệt độ càng cao thì doanh số bán kem càng tăng. Hệ số tương quan và đồ thị của hai biến nhiệt độ và doanh số bán kem có thể được mô tả qua các dòng mã Python:\n",
"```\n",
"Temperature = [14.2, 16.4,11.9, 15.2, 18.5, 22.1, 19.4, 25.1, 23.4, 18.1, 22.6, 17.2]\n",
"Ice_Cream_Sales = [215, 325, 185, 332, 406, 522, 412, 614, 544, 421, 445, 408]\n",
"plt.scatter(Temperature,Ice_Cream_Sales)\n",
"plt.show()\n",
"print(correlation(Temperature, Ice_Cream_Sales)) # 0.9575\n",
"```\n",
"Hệ số tương quan sẽ xấp xỉ 0.9575.\n",
"## Kết luận\n",
"Qua bài viết này chúng ta đã tìm hiểu các khái niệm cơ bản nhất trong thống kê – một lĩnh vực có vai trò quan trọng trong Machine Learning. Bài tiếp theo chúng ta sẽ tìm hiểu các khái niệm trong một lĩnh vực có quan hệ vô cùng mật thiết với thống kê là xác suất và cũng có vai trò cực kỳ quan trọng trong Machine Learning.\n",
"### Tham khảo\n",
"* https://www.mv.helsinki.fi/home/jmisotal/BoS.pdf\n",
"* http://bis.net.vn/forums/t/489.aspx \n",
"* https://statistics.laerd.com/statistical-guides/measures-of-spread-absolute-deviation-variance.php\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.6.2"
}
},
"nbformat": 4,
"nbformat_minor": 2
}