You are on page 1of 10

quytrinhanova - Printed on 23-Oct-23 7:12:17 AM

1 ****Thực hành Anova***************


2
3 *=======================================================================
4 **BƯỚC 1. QUAN SÁT DỮ LIỆU ANOVA
5 *=======================================================================
6
7 /**********1.Hiển thị dữ liệu ANOVA dạng thô***************************
8 *** Ví dụ 1.
9 */
10 use "cr4a", clear
11
12 sort grp
13
14 by grp: generate order = _n /* Quan sát số lượng trong mỗi nhóm */
15
16 tabdisp order grp, cellvar(y)
17
18 /* Kết quả thu được như sau:
19 ---------------------------------
20 | grp
21 order | 1 2 3 4
22 ----------+-----------------------
23 1 | 3 4 7 7
24 2 | 6 5 8 8
25 3 | 3 4 7 9
26 4 | 3 3 6 8
27 5 | 1 2 5 10
28 6 | 2 3 6 10
29 7 | 2 4 5 9
30 8 | 2 3 6 11
31 ----------------------------------
32 */
33
34 *** Ví dụ 2.
35 use "crf33", clear
36
37 sort a b
38
39 by a b: generate order = _n /* number observations within each cell */
40
41 tabdisp order b a, cellvar(y)
42
43 /* Kết quả như sau:
44 --------------------------------------------------------------------
45 | a and b
46 | ------- 1 ------ ------- 2 ------ ------- 3 ------
47 order | 1 2 3 1 2 3 1 2 3
48 ----------+---------------------------------------------------------
49 1 | 37 44 38 34 35 36 21 39 52
50 2 | 42 36 28 30 27 45 31 50 53
51 3 | 29 27 48 26 40 26 10 34 64
52 4 | 33 43 29 39 31 46 20 41 42
53 5 | 24 25 47 21 22 27 18 36 49
54 --------------------------------------------------------------------
55 */
56
57
58
59
60 /****************2. Phân tích mô tả và thăm dò tổng quát dữ liệu ANOVA******
61 Việc xem xét dữ liệu là rất cần thiết để hiểu nó tốt nhất có thể.
62

Page 1
quytrinhanova - Printed on 23-Oct-23 7:12:17 AM
63 Các công cụ trong thống kê mô tả và phân tích dữ liệu có thể được sử dụng cho dữ liệu này.
64 */
65
66
67 use "hsb2", clear
68
69 describe
70
71 /* Kết quả là:
72 obs: 200 highschool and beyond (200 cases)
73 vars: 11 21 Jun 2000 08:54
74 size: 9,600 (98.9% of memory free)
75 ----------------------------------------------------------------------------
76 storage display value
77 variable name type format label variable label
78 ----------------------------------------------------------------------------
79 id float %9.0g
80 female float %9.0g fl
81 race float %12.0g rl
82 ses float %9.0g sl
83 schtyp float %9.0g scl type of school
84 prog float %9.0g sel type of program
85 read float %9.0g reading score
86 write float %9.0g writing score
87 math float %9.0g math score
88 science float %9.0g science score
89 socst float %9.0g social studies score
90 --------------------------------------------------------------------------
91 */
92
93 summarize read write math science
94
95 /*
96
97 Variable | Obs Mean Std. Dev. Min Max
98 -------------+-----------------------------------------------------
99 read | 200 52.23 10.25294 28 76
100 write | 200 52.775 9.478586 31 67
101 math | 200 52.645 9.368448 33 75
102 science | 200 51.85 9.900891 26 74
103
104 tab1 female prog
105
106 -> tabulation of female
107
108 female | Freq. Percent Cum.
109 ------------+-----------------------------------
110 male | 91 45.50 45.50
111 female | 109 54.50 100.00
112 ------------+-----------------------------------
113 Total | 200 100.00
114
115 -> tabulation of prog
116
117 type of |
118 program | Freq. Percent Cum.
119 ------------+-----------------------------------
120 general | 45 22.50 22.50
121 academic | 105 52.50 75.00
122 vocation | 50 25.00 100.00
123 ------------+-----------------------------------
124 Total | 200 100.00

Page 2
quytrinhanova - Printed on 23-Oct-23 7:12:17 AM
125
126 */
127
128 stem write
129
130 /*
131 Stem-and-leaf plot for write (writing score)
132
133 3* | 1111
134 3t | 3333
135 3f | 55
136 3s | 66777
137 3. | 899999
138 4* | 0001111111111
139 4t | 223
140 4f | 4444444444445
141 4s | 66666666677
142 4. | 99999999999
143 5* | 00
144 5t | 2222222222222223
145 5f | 44444444444444444555
146 5s | 777777777777
147 5. | 9999999999999999999999999
148 6* | 00001111
149 6t | 2222222222222222223333
150 6f | 5555555555555555
151 6s | 7777777
152
153 */
154
155 *** Quan sát phân phối của dữ liệu
156 pnorm write
157
158
159 qnorm write
160
161
162 histogram write, start(30) width(5) normal freq
163
164
165 kdensity write, normal
166
167
168 /***************3. QUAN SÁT DỮ LIỆU THEO NHÓM*****************************
169
170 Việc xem xét dữ liệu riêng cho từng nhóm nhằm kiểm tra xem dữ liệu có đáp ứng các giả định phân
tích phương sai hay không, đặc biệt là các giả định về phân phối chuẩn và tính đồng nhất của
phương sai.
171
172 Giả sử, muốn sử dụng kỹ thuật anova cho biến "write" theo các biến phân loại "female" hoặc/và
"prog". Biến "female" có 2 phân loại và biến prog có ba phân loại, do đó 2 biến này chia mẫu dữ
liệu thành 6 mẫu con. Một số lệnh mà có thể sử dụng để xem dữ liệu ở cấp độ cận biên và/hoặc mẫu
con là:
173 */
174
175 ****************CÁCH 1.
176 graph box write, over(female)
177
178
179 graph box write, over(prog)
180
181

Page 3
quytrinhanova - Printed on 23-Oct-23 7:12:17 AM
182 graph box write, over(female) over(prog)
183
184
185 tabstat write, stat(n mean sd var) by(prog)
186
187
188 /* Kết quả là:
189 Summary for variables: write
190 by categories of: prog (type of program)
191
192 prog | N mean sd variance
193 ---------+----------------------------------------
194 general | 45 51.33333 9.397775 88.31818
195 academic | 105 56.25714 7.943343 63.0967
196 vocation | 50 46.76 9.318754 86.83918
197 ---------+----------------------------------------
198 Total | 200 52.775 9.478586 89.84359
199 --------------------------------------------------
200 */
201
202 tabulate female prog, summ(write)
203
204 /* Kết quả như sau:
205
206 Means, Standard Deviations and Frequencies of writing score
207
208 | type of program
209 female | general academic vocation | Total
210 -----------+---------------------------------+----------
211 male | 49.142857 54.617021 41.826087 | 50.120879
212 | 10.364776 8.6566215 8.0037047 | 10.305161
213 | 21 47 23 | 91
214 -----------+---------------------------------+----------
215 female | 53.25 57.586207 50.962963 | 54.990826
216 | 8.2052475 7.1156721 8.3411929 | 8.1337152
217 | 24 58 27 | 109
218 -----------+---------------------------------+----------
219 Total | 51.333333 56.257143 46.76 | 52.775
220 | 9.3977754 7.9433433 9.3187544 | 9.478586
221 | 45 105 50 | 200
222 */
223
224
225 ***********CÁCH 2
226
227
228 table female prog, contents(freq mean write sd write) row col
229
230 /*
231 --------------------------------------------------
232 | type of program
233 female | general academic vocation Total
234 ----------+---------------------------------------
235 male | 21 47 23 91
236 | 49.14286 54.61702 41.82609 50.12088
237 | 10.36478 8.656622 8.003705 10.30516
238 |
239 female | 24 58 27 109
240 | 53.25 57.58621 50.96296 54.99083
241 | 8.205248 7.115672 8.341193 8.133716
242 |
243 Total | 45 105 50 200

Page 4
quytrinhanova - Printed on 23-Oct-23 7:12:17 AM
244 | 51.33333 56.25714 46.76 52.775
245 | 9.397776 7.943343 9.318754 9.478586
246 --------------------------------------------------
247 */
248
249
250 ******************* CÁCH 3.
251
252 quietly anova write female##prog
253
254 margins female#prog, asbalanced
255
256
257 /*
258 Adjusted predictions Number of obs = 200
259
260 Expression : Linear prediction, predict()
261
262 ---------------------------------------------------------------------
263 | Delta-method
264 | Margin Std. Err. z P>|z| [95% Conf. Interval]
265 -------------+-------------------------------------------------------
266 female#prog |
267 0 1 | 49.14286 1.803321 27.25 0.000 45.60841 52.6773
268 0 2 | 54.61702 1.205407 45.31 0.000 52.25447 56.97958
269 0 3 | 41.82609 1.723133 24.27 0.000 38.44881 45.20337
270 1 1 | 53.25 1.686852 31.57 0.000 49.94383 56.55617
271 1 2 | 57.58621 1.085097 53.07 0.000 55.45946 59.71296
272 1 3 | 50.96296 1.59038 32.04 0.000 47.84588 54.08005
273 ----------------------------------------------------------------------
274 */
275
276
277 ******************* CÁCH 4.
278
279 sort female prog
280
281 by female prog: sum(write)
282
283 /*
284 _____________________________________________________________________
285 -> female = male, prog = general
286
287 Variable | Obs Mean Std. Dev. Min Max
288 -------------+-----------------------------------------------------
289 write | 21 49.14286 10.36478 31 65
290 _____________________________________________________________________
291 -> female = male, prog = academic
292
293 Variable | Obs Mean Std. Dev. Min Max
294 -------------+-----------------------------------------------------
295 write | 47 54.61702 8.656621 33 67
296 _____________________________________________________________________
297 -> female = male, prog = vocation
298
299 Variable | Obs Mean Std. Dev. Min Max
300 -------------+-----------------------------------------------------
301 write | 23 41.82609 8.003705 31 63
302 _____________________________________________________________________
303 -> female = female, prog = general
304
305 Variable | Obs Mean Std. Dev. Min Max

Page 5
quytrinhanova - Printed on 23-Oct-23 7:12:17 AM
306 -------------+-----------------------------------------------------
307 write | 24 53.25 8.205248 36 67
308 _____________________________________________________________________
309 -> female = female, prog = academic
310
311 Variable | Obs Mean Std. Dev. Min Max
312 -------------+-----------------------------------------------------
313 write | 58 57.58621 7.115672 37 67
314 _____________________________________________________________________
315 -> female = female, prog = vocation
316
317 Variable | Obs Mean Std. Dev. Min Max
318 -------------+-----------------------------------------------------
319 write | 27 50.96296 8.341193 35 67
320
321 */
322
323 hist write, by(female prog) normal start(30) width(5)
324
325 twoway kdensity write, by(prog)
326
327 twoway (kdensity write if prog==1)(kdensity write if prog==2)(kdensity write if prog==3), legend(
off)
328
329
330
331 *****************4. Vẽ đồ thị trung bình của các mẫu con*****************
332 /*
333 Ngoài việc xem xét dữ liệu để kiểm tra các giả định, việc vẽ đồ thị cho trung bình của các mẫu
con được xem là cách để giúp hiểu tương tác giữa các biến.
334 Lệnh anovaplot thường được sử dụng trong trường hợp này, như sau:
335 */
336
337 anova write prog female prog#female
338
339 /*
340 Number of obs = 200 R-squared = 0.2590
341 Root MSE = 8.26386 Adj R-squared = 0.2399
342
343 Source | Partial SS df MS F Prob > F
344 ------+----------------------------------------------------
345 Model | 4630.36091 5 926.072182 13.56 0.0000
346 prog | 3274.35082 2 1637.17541 23.97 0.0000
347 female | 1261.85329 1 1261.85329 18.48 0.0000
348 prog#female | 325.958189 2 162.979094 2.39 0.0946
349 Residual | 13248.5141 194 68.2913097
350 ------------+----------------------------------------------------
351 Total | 17878.875 199 89.843593
352 */
353 /* findit anovaplot để install gói lệnh này */
354
355 anovaplot prog female, scatter(msym(none))
356
357
358 *==========================================================================
359 **BƯỚC 2. THỰC HIỆN PHÂN TÍCH ANOVA TRÊN STATA
360 *==========================================================================
361 ** install các gói lệnh cần thiết trên Stata
362
363 findit effectsize
364 findit tukeyhsd
365 findit tkcomp

Page 6
quytrinhanova - Printed on 23-Oct-23 7:12:17 AM
366 findit qsturng
367 findit anovacontrast
368 findit anovalator
369 findit simpower
370
371 * Hoặc theo cách sau:
372 net from https://stats.oarc.ucla.edu/stat/stata/ado/analysis/
373 net install effectsize
374 net install tukeyhsd
375 net install tkcomp
376 net install qsturng
377 net install anovacontrast
378 net install anovalator
379 net install simpower
380
381
382 ** Đọc dữ liệu
383 use "cr4a", clear
384
385
386 summarize y, detail
387
388 hist y, normal
389
390 kdensity y, normal
391
392 tabulate grp, summ(y)
393
394 tabstat y, by(grp) stat(n mean sd var)
395
396 sort grp
397 graph box y, over(grp)
398
399 histogram y, by(grp) normal
400
401 anova y grp
402
403 effectsize grp
404
405
406 *=========================================================================
407 ** BƯỚC 3. KIỂM ĐỊNH CÁC GIẢ ĐỊNH
408 *=========================================================================
409 /*1. Kiểm định tính độc lập
410 Tính độc lập được thực hiện thông qua việc kiểm tra cách các đối tượng được chọn và cách chúng
được chỉ định vào các nhóm.
411
412 Nếu các đối tượng được lấy mẫu ngẫu nhiên và được phân ngẫu nhiên vào các nhóm thì giả định độc
lập được đáp ứng.
413
414 Nếu một số phương pháp khác được sử dụng để lấy mẫu và chỉ định đối tượng thì cần phải kiểm tra
chặt chẽ quy trình để xác định xem giả định độc lập có được đáp ứng hay không.
415 */
416
417
418 /*2. Kiểm định các tổng thể xấp xỉ phân phối chuẩn
419 Mặc dù đã có một số bài toán kiểm định nhằm kiểm tra tính tuân theo phân phối chuẩn, nhưng việc
kiểm tra thông qua các biểu đồ trực quan phân phối theo từng nhóm cũng mang lại hiệu quả không kém.
420
421 Tuy nhiên, khi kích thước mẫu nhóm nhỏ, rất khó để biết mẫu có được rút ra từ một tổng thể tuân
theo phân phối chuẩn hay không.
422 */

Page 7
quytrinhanova - Printed on 23-Oct-23 7:12:17 AM
423
424 histogram y, by(grp) normal
425
426
427 pnorm y if grp==1
428
429
430 twoway (kdensity y if grp==1)(kdensity y if grp==2)(kdensity y if grp==3)(kdensity y if grp==4),
legend(off)
431
432
433
434 /*3. Tính đồng nhất của phương sai (phương sai sai số không đổi)
435 Có bốn phương pháp để kiểm tra tính đồng nhất của phương sai, gồm:
436 1. Kiểm định Fmax
437 2. Kiểm định Bartlett
438 3. Kiểm định Cochran
439 4. Kiểm định Levene
440 Trong đó, kiểm định Levene ít bị ảnh hưởng nhất bởi tính tuân theo phân phối chuẩn nhất.
441 */
442
443 **Lập bảng trung bình, phương sai và độ lệch chuẩn theo nhóm
444
445 tabstat y, by(a) stat(n mean sd var)
446
447 /* Kết quả
448 b | N mean sd variance
449 ---------+----------------------------------------
450 1 | 8 2.75 1.488048 2.214286
451 2 | 8 3.5 .9258201 .8571429
452 3 | 8 6.25 1.035098 1.071429
453 4 | 8 9 1.309307 1.714286
454 ---------+----------------------------------------
455 Total | 32 5.375 2.756225 7.596774
456 --------------------------------------------------
457 */
458
459 /****1. Kiểm dịnh Fmax
460 Giá trị kiểm định Fmax được tính bằng cách lấy phương sai lớn nhất chia cho phương sai nhỏ nhất
theo nhóm
461
462 Fmax = 2.214286/0.8571429
463
464 Và so sánh với giá trị tới hạn trong bảng Fmax với độ tự do df = (k; n-1) để xác định miến bác bỏ
H0 và ra kết luận.
465 Kiểm định này tính toán nhanh nhưng bị ảnh hưởng rất mạnh nếu các tổng thể con không thỏa giả
định về phân phối chuẩn.
466 */
467
468
469 /****2. Kiểm định Bartlett
470 - Bị ảnh hướng nếu giả định phân phối chuẩn của các tổng thể con không thỏa.
471 - Sử dụng phân phối Chi - bình phương.
472 - Giá trị kiểm định thường được tính sẵn bởi phần mềm Stata khi thực hiện các lệnh "anova" hoặc
"oneway anova".
473 */
474
475 /*3. Kiểm định Cochran
476 - Tính toán trị kiểm định dễ hơn kiểm định Bartlett,
477 C = phương sai lớn nhất/ tổng các phương sai = 2.214286/7.596774
478 - Bị ảnh hướng nếu giả định phân phối chuẩn của các tổng thể con không thỏa.
479 - Sử dụng bảng Cochran's C với độ tự do df = (k; n-1)

Page 8
quytrinhanova - Printed on 23-Oct-23 7:12:17 AM
480 */
481
482
483 /*4. Kiểm định Levene
484 - Tương đối đơn giản
485 - Ít bị ảnh hưởng khi giả định phân phối chuẩn không thỏa.
486 - Sử dụng phân phối F
487 - Có xu hướng bác bỏ H0 sai trong một số tình huống
488 */
489
490 robvar y, by(grp)
491
492 /* Kết quả là:
493 | Summary of y
494 grp | Mean Std. dev. Freq.
495 ------------+------------------------------------
496 1 | 2.75 1.4880476 8
497 2 | 3.5 .9258201 8
498 3 | 6.25 1.0350983 8
499 4 | 9 1.3093073 8
500 ------------+------------------------------------
501 Total | 5.375 2.7562246 32
502
503 W0 = 0.24435318 df(3, 28) Pr > F = 0.86462658
504 W50 = 0.27450980 df(3, 28) Pr > F = 0.84326308
505 W10 = 0.24435318 df(3, 28) Pr > F = 0.86462658
506
507 **** Giá trị W0 chính là giá trị kiểm định của Levene
508 */
509
510
511
512 *===================================================================
513 ** BƯỚC 4. THỰC HIỆN KIỂM ĐỊNH SÂU ANOVA
514 *===================================================================
515
516 use "cr4b", clear
517
518 table b, stat(fvpercent y) stat(mean y) stat(sd y)
519
520 anova y b
521
522
523 anovacontrast b, values(1 -1 0 0) title(1vs2)
524
525
526 anovacontrast b, values(0 0 1 -1) title(3vs4)
527
528
529 anovalator b, wgt(1 -1 0 0)
530
531
532 tukeyhsd b
533
534
535 tkcomp b
536
537
538 oneway y b,t bonferroni sidak scheffe
539
540
541 *===================================================================

Page 9
quytrinhanova - Printed on 23-Oct-23 7:12:17 AM
542 ** BƯỚC 5. NĂNG LỰC KIỂM ĐỊNH VÀ CỠ MẪU (Power & Sample Size)
543 *===================================================================
544
545 **Kiểm định độ hiệu quả f
546
547 anova y b
548
549 effectsize b
550
551
552 ** Sử dụng mô phỏng Monte Carlo với gói lệnh simpower
553
554 anova y b
555
556 simpower y b
557
558
559 simpower, gr(4) n(8 8 8 8) mu(3 3.5 4.25 6.25) s(1.51 0.92 1.03 2.12)
560
561
562

Page 10

You might also like