Các câu lệnh cĩ thể được gõ vào hay chạy như một tập tin batch bằng cách click vào nút trong màn hình Do-file Editor hay sử dụng lệnh do dofile Chúng ta cũng có thể thực hiện các tập hợ
Trang 1Tài liệu cơ bản dành cho Stata bao gồm: Stata Getting Started, Stata User’guide,
Stata Base Reference Manuals (4 tập), và Stata Graphics Reference Manual Ngoài ra
còn có một số cuốn sổ tay tham khảo khác như Stata Pro-Gramming Reference Manuals
và Stata Cross-Sectional Time-Series Refernce Manuals (phân tích số liệu theo chiều
dọc) Các cuốn sổ tay kể trên liệt kê các thông tin cực kỳ chi tiết về các lệnh Stata, trong
khi đó User’s Guide đưa ra những hướng dẫn chung hơn Những đặc trưng hệ điều hành thì được mô tả trong sổ tay Getting Started …., Getting Started with Stata for Window.
Mỗi lệnh đều có phần hướng dẫn nằm trong menu help Các tập tin hướng dẫn và
các cuốn sổ tay đều đề cập đến Base Reference Manuals theo [R] tên đăng nhập, User’s
Guide theo [U] theo số chương/mục và tên, Graphic Manuals bằng [G] tên đăng nhập,
vvvv (xem Stata Getting Started Manual, ngay sau bản nội dung để có danh sách đầy đủ)
Ngày càng có nhiều sách viết về Stata như Halmilton (2004); Kohler và Kreuter(2004), cũng như các sách viết bằng tiếng Đức, Pháp, Tây Ban Nha Các cuốn sách cực
hay viết về từng loại phân tích bao gồm A Short Introductin to Stata for Bistatistics của Hills và De Stavola (2002); Regression Models for Categorical Dependent Variables
using Stata của Long và Freese (2003); An Introduction to Survival Analysis using Stata
của Cleves, Gould và Gutierrez (2004); Generalized Linear Models and Extensions của
www.stata.com/bookstore/statabook.html để cập nhật thông tin về các cuốn sách này vàcác cuốn khác
Trang web của Stata http:// www.stata.com đưa ra những thông tin bổ ích về việctìm hiểu Stata trong đó bao gồm một loạt những câu hỏi thường gặp (FAQS) Stata cũng
đưa ra những khoá học trên mạng, gọi là netcourses Các khoá học này diễn ra thông qua
danh sách những người tổ chức và học viên Mỗi tuần, người tổ chức sẽ gửi những ghichú bài giảng và bài tập cho học viên giúp học viên có thể thảo luận với nhau cho đến khi
Trang 2người tổ chức gửi đáp án bài tập cùng với những câu trả lời các câu hỏi mà học viên đặtra.
Ủy ban kỹ thuật của học viện UCLA cũng đưa ra sách giáo khoa có ích và nhữngtài liệu ví dụ tại trang web http://www.ats.ucla.edu/stat/stata/, hướng dẫn cách thực hiện
các phân tích trong Stata Các bài báo From the helpdesk và Speaking Stata thuộc tạp chí
Stata journal cũng rất có ích trong việc học hỏi Stata; xem tại trang web journal.com
www.stata-Một đặc trưng thú vị đối với người sử dụng Stata là bạn có thể trở thành viên củacộng đồng Stata Các cuộc gặp gỡ của cộng đồng những người sử dụng Stata diễn ra
thường niên tại UK, USA và một số quốc gia khác; xem mục 1.11 Statalist là một danh
sách mail cho phép hỗ trợ về mặt kỹ thuật bởi những thành viên của Stata và nhữngngười sử dụng chuyên nghiệp ví dụ như Nick Cox thường giải đáp các thắc mắc củangười sử dụng
Trang 3Mỗi cửa sổ đều có thể thay đổi kích thước và di chuyển bình thường; cửa sổ Variables vàReview có thể đưa ra ngoài cửa sổ chính Muốn đưa một cửa sổ bị che mờ ra phía trước,chọn tên cửa sổ thích hợp trong menu Window Font của một cửa sổ có thể thay đổi bằngviệc click vào nút ở trái trên của màn hình chính Tất cả những thiết lập này sẽ đượclưu tự động khi đóng Stata.
số liệu, tên biến và tên nhã của biến sẽ được trình bày trong cửa sổ Variables Tập tin số
liệu có thể được xem dưới dạng màn hình bảng tính bằng Data Browser khi click vào
nút và sửa chữa số liệu bằng Data Editor khi click vào nút Cả Data Browser
và Data Editor đều được mở bằng menu Window Cần lưu ý là khi màn hình Data
Browser và Data Editor mở thì chúng ta không thể làm gì khác (ví dụ như cửa sổ Stata
Command biến mất) Xem mục 1.4 để biết thêm chi tiết về tập tin số liệu
1.2.3 Các lệnh và kết quả
Trước khi ra bản Stata 8.0, người dùng phải gõ câu lệnh để sử dụng Stata, và nhiều ngườivẫn thích dùng lệnh như sau: lệnh được đánh vào cửa sổ Command và được thi hành khi
ấn Return (hay Enter) Lệnh tiếp theo sẽ hiện lên màn hình Results dưới dạng dấu
chấm,và ở trên là kết quả của lệnh trước đó
Nếu kết quả quá dài so với màn hình hiển thị, cuối màn hình sẽ xuất hiện chữ
more Nhấn bất kì nút nào để cuộn kết quả Thanh cuộn được dùng để di chuyển lên
xuống danh sách kết quả Tuy nhiên, chỉ có một số kết quả hiển thị trước đó được giữ lạitrên màn hình Vì lý do này và để lưu được kết quả về sau, cần tạo nên một log file, xemmục 1.2.6
Stata sẵn sàng cho lệnh mới khi xuất hiện dấu ngắt (dấu chấm) cuối màn hình.Nếu Stata chưa sẵn sàng để nhập lệnh mới do đang chạy hay chưa trình bày hết kết quả,
chúng ta có thể tạm ngừng chương trìnhbằng cách giữ Ctrl và nhấn phím Pause/Break
hay nhấn nút Break trên thanh công cụ của màn hình Stata
Một câu lệnh trước đó có thể được xem trở lại bằng cách nhấn phím Pgup và
Pgdn hay bằng cách chọn lệnh này trong màn hình Review Lệnh này có thể được sửa đổi
nếu cần trước khi cho thi hành lệnh
Hầu hết các lệnh trong Stata đều liên quan đến một loạt các biến, cú pháp cơ bản
sẽ là command varlist Ví dụ, nếu tập tin số liệu chứa các biến x, y, z thì:
list x y
sẽ liệt kê giá trị của x, y Các phần khác có thể được thêm vào câu lệnh chẳng hạn thêm if
exp sau varlist thì lệnh chỉ xử lý những lần quan sát thoả điều kiện đưa ra trong exp.
Những lựa chọn (phần thêm sau câu lệnh) sẽ được phân biệt với lệnh chính bằng dấu
Trang 4phẩy Cấu trúc lệnh hồn chỉnh và các thành phần của câu lệnh sẽ được trình bày trongmục 1.5.
về ví dụ tạo một đồ thị bằng hộp thoại
1.2.5 Do-files
Sẽ rất hữu ích nếu chúng ta tạo được một tập tin chứa các câu lệnh thực hiện một phân
tích nào đĩ Việc này cĩ thể thực hiện được bằng lệnh Do-file Editor hay những trình
biên tập khác Do-file editor cĩ thể mở bằng cách nhấn vào nút hay chọn Do… từ menu File Các câu lệnh cĩ thể được gõ vào hay chạy như một tập tin batch bằng cách
click vào nút trong màn hình Do-file Editor hay sử dụng lệnh
do dofile
Chúng ta cũng có thể thực hiện các tập hợp con những câulệnh bằng cách ấn nút Do-file có thể được sử dụngtrong các tập tin Stata về sau Xem mục 1.10 để biết thêm chitiết về do-file
1.2.6 Log file.
Sẽ rất có ích nếu chúng ta mở một log file ngay từ lúc đầulàm việc với Stata Nhấn nút , gõ một tên file vào hộp
thoại, và chọn Save Theo mặc định, file này sẽ là file smcl
(Stata Markup and Control Language, phát âm là “smicle”) vớiphần đuôi là scml, nhưng một file văn bản ASCII cũng có thểđược tạo bằng cách chọn đuôi log Nếu tên file bạn nhậpvào đã có, thì một hộp thoại hiện lên thông báo bạn cómuốn chép đè lên file cũ hay kếp hợp với file cũ hay không
Trang 5File log có thể được xem trước trong suốt quá trình làmviệc bằng cách chọn nút và nó sẽ tự động lưu khi đóngtập tin File log cũng có thể được mở ra, xem, hay đóng lại
bằng cách chọn các thẻ Begin…, View… , hay Close… Trong menu File Các lệnh sau đây được dùng để mở, và đóng một file tên my log, thay thế file cũ nếu đã được tạo ra trước
đó:
log using mylog, replace
log close
Để xem một file log đã được tạo ra từ lần làm việc trước,
chọn View trong thẻ Log của menu File, chọn đúng đường dẫn chứa file đó File log cũng thể được in ra bằng cách chọn Print
Viewer từ menu File.
1.2.7 Hỗ trợ
Phần hỗ trợ có thể tiếp cận bằng cách vào menu Help với
màn hình như hình 1.2 Muốn tìm hiểu về lệnh Stata, giả sử
tên lệnh đã biết, chọn Stata Command….đầu tiên để tìm lệnh Stata phù hợp, chọn thẻ Search…trong menu Help, sẽ có
màn hình như hình 1.3 Ví dụ, để tìm hồi quy Cox, gõ vào hộp
thoại Keyword từ “survival” rồi ấn OK Màn hình Stata Viewer sẽ
hiện lên một dãy những tên lệnh có liên quan hay nhữngchủ đề mà các file hỗ trợ hay những câu hỏi thường gặpchứa từ đó Mỗi mục trong danh sách này bao gồm nhữngchữ màu xanh (một hyperlink) có thể dẫn đến một file hỗtrợ hay một FAQ Mỗi file hỗ trợ chứa hyperlink đến những filehỗ trợ liên quan Việc tìm kiếm và các file hỗ trợ có thểđược tiếp cận bằng cách dùng lệnh sau
search survival
help stcox
ContentsSearchStata CommandWhat’s New?
NewsOffical Updates
SJ and User-written ProgramsStata Web site
About Stata
Trang 6Hình 1.2: Menu Help
Hình 1.3: hộp thoại Search
Kết quả của phần giúp đỡ sẽ hiện lên màn hình Result củaStata với những dòng chữ xanh dương đại diện cho các hyperlink đến những file khác
Nếu máy của bạn có kết nối internet thì Stata cũng tìm kiếmnhững tài liệu trên mạng cho bạn, những chương trình đượcsoạn bởi người sử dụng bằng cách chọn “Search net resources”trong hộp thoại Search Dấu kiểm cuối cùng, “Search all” sẽ tìmkiếm tất cả những tài liệu liên quan bao gồm các file hỗtrợ, FAQS, và tài liệu trên mạng Điều này tương đương vớiviệc dùng câu lệnh findit keyword Những tìm kiếm lọc khác
có thể được tiến hành bằng cách sử dụng lệnh search (xem
help search) Các lựa chọn khác bao gồm News, Official Updates,
SJ and User-Written Programs, và Stata Web Site đều có thể
giúp người sử dụng tiếp cận những thông tin có liên quantrên web (xem mục 1.11 về cập nhật Stata)
1.2.8 Đóng Stata
Stata có thể đóng theo 3 cách:
Nhấp chuột vào nút Close ở góc phải trên màn
hình chính
Chọn Exit từ menu File
Gõ exit, clear vào màn hình Command và nhấn Return.
1.3 CÁC QUY ƯỚC TRONG SÁCH
Trong cuốn sách này chúng ta sẽ dùng loại chữ này để chỉ tênlệnh, chọn lựa, tên biến … Ngược lại những chữ in nghiêng sẽkhông dùng để đánh vào; chúng là những từ sẽ được thay
thế bằng những chữ khác Ví dụ summarize varname có
Trang 7nghĩa là varname sẽ được thay bằng một tên biến cụ thể
nào đó, ví dụ như age, như vậy câu lệnh sẽ là summarize age.Chúng tôi sẽ trình bày câu lệnh dưới dạng sau:
summarize age
drop age
Nếu câu lệnh dài quá 2 dòng chúng ta sẽ dùng dấu */ cuốidòng một và */ dầu dòng 2 để Stata không ngắt câu lệnh.Một cách khác là dùng /// cuối dòng Cần chú ý rằngnhững điều trên chỉ được thực hiện trong do-file chứ khôngđược sử dụng trong màn hình Command vì nó sẽ làm sai kếtquả Trong cửa sổ Command, các câu lệnh có thể chiếmtrên một vài dòng
Các kết quả chiếm một khoảng rất nhỏ sẽ được trìnhbày ngay sau dòng lệnh nhưng không thụt vào và ở dướidạng font nhỏ hơn:
display 1
1
Kết quả chiếm nhiều vị trí hơn sẽ được trình bày thành chữnổi lên Một số lệnh có các ghi chú, ví dụ lệnh generate liệtkê bao nhiêu giá trị bị mất khi tạo biến Chúng ta thườngkhông trình bày những ghi chú này
1.4 TẬP TIN SỐ LIỆU TRONG STATA
1.4.1 Nhập và xuất số liệu
Stata có dịnh dạng số liệu riêng với phần mở rộng là dta.
Việc đọc và ghi trong Stata có thể được thực hiện trực tiếp
Nếu tên file là bank.dta, lệnh sẽ là :
Trang 8use bank, clear
Nếu chúng ta muốn lưu dữ liệu dưới tên một file có sẵn,việc này sẽ tạo ra một thông báo lỗi trừ khi chúng ta dùnglệnh sau:
save bank, replace
Đối với những tập tin số liệu có kích thứơc lớn, chúng tacần phải tăng dung lượng bộ nhớ số liệu của máy, bìnhthường máy quy định bộ nhớ này là 1 Mb Ví dụ, khi khôngcó tập tin số liệu nào đang tải xuống bộ nhớ (nghĩa là tadùng lệnh clear), thiết lập dung lượng bộ nhớ lại bằng cáchsử dụng lệnh
set memory 2m
Lệnh memory không có đối số đưa ra thông tin bộ nhớ códung lượng đang được sử dụng là bao nhiêu và có tổng cộnglà bao nhiêu
Nếu file số liệu không phải là định dạng Stata, chúng cóthể được chuyển sang định dạng Stata bằng cách sử dụngcác phần mềm chuyển đổi khác (ví dụ như Stata/Tranfer) haylưu lại thành file ASCII (mặt dù cách làm sau sẽ làm mất tấtcả các nhãn) Khi lưu dưới dạng ACSII, các giá trị bị mất sẽđược thay thế bằng các ký số
Có 3 lệnh dành cho việc đọc các loại số liệu ASCII khácnhau: insheet dành cho file chứa một quan sát (cho tất cả cácbiến) trên một dòng với các biến được phân tách bởi cácdấu tab và dấu phẩy, trong đó dòng đầu tiên có thể làtên biến; infile với varlist (định dạng tự do) cho phép ngắt dòng
ở bất kỳ chỗ nào và biến được phân tách bởi các khoảngtrống hay bằng các dấu tab và dấu phẩy; infix dành cho
Trang 9những file với định dạng cột hiệu chỉnh nhưng một quan sátcó thể ở một số dòng khác nhau; infile với “từ điể” (địnhdạng hiệu chỉnh) là lệnh thích hợp nhất bởi vì “từ điển” cóthể xác định chính xác dòng nào và cột nào chứa thông tingì.
Số liệu có thể được lưu lại dưới dạng ASCII bằng cáchsử dụng outfile hay outsheet Cuối cùng, lệnh odbc có thể đượcdùng để tải, ghi chép, hay xem số liệu từ nguồn (ODBC) Xem
help infiling hay [U] 24 lệnh nhập số liệu để có một cái nhìn
tổng quan về việc đọc dữ liễu
Chỉ có một tập tin được gọi ra nhưng chúng ta có thểkết hợp với tập tin đang hiện hành, bằng cách sử dụng lệnh
merge hay append để thêm các quan sát hay các biến; xem mục1.6.2
Có 2 loại biến số trong Stata: biến chuỗi và biến số Mỗi
biến có thể là một trong số các loại lưu trữ cần số lượng
byte khác nhau Các loại lưu trữ bao gồm byte, int, long, float, và double đối với biến kiểu số và str1 đến str80 (str244
sử dụng trong Stata/SE) đối với biến chuỗi với độ dài khácnhau Bên cạnh loại lưu trữ, các biến số còn đi kèm với tên,nhãn và định dạng của chúng nữa Tên của biến y có thểđược đổi thành biến x bằng cách sử dụng:
rename y x
Nhãn biến có thể được định nghĩa bằng cách
label variable x “cost in pounds”
và định dạng của biến số có thể được thiết lập thành
“general numeric” với hai số lẻ bằng cách
format x %7.2g
Biến kiểu số
Một giá trị mất trong biến kiểu số được tượng trưng bằngdấu chấm ‘.’ (giá trị mất hệ thống), hay bằng một dấuchấm theo sau là một ký tự, ví dụ như a, b vvv Giá trị mấtđược diễn giải như là một số dương rất lớn vơiù < a < b,vvv Điều này có thể dẫn đến sai lầm trong hồi quy logic; xemmục 1.5.2 Ký hiệu các giá trị bị mất kiểu số ( ví dụ như ‘-99’) có thể được chuyển đổi thành giá trị bị mất (và ngượclại) bằng cách sử dụng lệnh mvdecode Ví dụ:
Trang 10mvdecode x, mv(-99)
thay thế tất cả giá trị của biến x là -99 bằng các dấuchấm và
mvencode x, mv(-99)
thay đổi giá trị mất trở về -99
Các biến kiểu số có thể được dùng để đại diện chocác biến thứ tự hay biến liên tục trong đó có cả biến kiểungày tháng Đối với biến thứ tự, thường khó nhớ được kýsố nào đại diện cho thứ tự nào Vì vậy các nhã giá trị đượcđịnh nghĩa như sau:
label define s 1 married 2 divorced 3 widowed 4 single
label values marital s
Thứ tự cũng có thể được mã hoá lại, ví dụ như:
Trang 11dưới dạng ASCII) Trong Stata, thường người ta chuyển nhữngbiến dạng chuỗi thành dạng biến số và việc chuyển đổiđược thực hiện trực tiếp Biến dạng chuỗi có thể được
chuyển đổi thành dạng số bằng cách dùng lệnh encode.
Lệnh này sẽ thay mỗi chuỗi thành một số nguyên và sửdụng chuỗi này làm nhãn cho giá trị biến số tương ứng
Lệnh decode sẽ chuyển từ biến kiểu số thành biến kiểu
chuỗi
Biến kiểu chuỗi string1 tượng trưng cho ngày có thể được
chuyển thành biến kiểu số bằng cách sử dụng hàm
date(string1, string2) trong đó string2 là hoán vị của “dmy” để
xác định trật tự của ngày, tháng năm trong chuỗi string1 Ví
dụ, lệnh
display date (“30/1/1930”,”dmy”)
và
display date(“january 30, 1930”, “mdy”)
Cả hai đều đưa đến kết quả là -10928 bởi vì đó là số ngàytrước ngày 1/1/1960
1.5 LỆNH STATA.
Các lệnh trong Stata sẽ có cấu trúc như sau:
[by varlist:] command [varlist] [=exp] [if exp] [in range] [weight] [using filename] [,
tùy chọns]
Các thành phần bên trên có ý nghĩa như sau:
[by varlist:] hướng dẫn Stata lập lại lệnh đối với mỗi tập hợpcác biến trong danh sách các biến varlist
command là tên của lệnh thường được viết tắt; ví dụ, lệnhdisplay có thể được viết tắt là dis
[varlist] là danh sách các biến mà một lệnh nào đó đượcsử dụng trên các biến này
[=exp] là phần mô tả của câu lệnh
[if exp] giới hạn lậnh chỉ thực hiện trên những tập con cácquan sát thoả mô tả logic trong exp
[in range] hạn chế câu lệnh chỉ được áp dụng cho nhữngbiến có giá trị nằm trong một khoảng nào đó
Trang 12[weight] cho phép trọng lượng kết hợp với các quan sát(xemmục 1.7)
[using filename] xác định filename được sử dụng
[, tùy chọns] dấu phẩy chỉ được sử dụng khi có một lựachọn; lựa chọn sẽ cụ thể đối với từng câu lệnh và có thểthường được viết tắt
Đối với bất kỳ câu lệnh nào, không phải lúc nào các
thành phần này cũng đầy đủ; ví dụ, lệnh list không cho
phép sử dụng [using filename] Các tập tin hướng dẫn chotừng câu lệnh sẽ xác định cụ thể thành phần nào có thểđược sử dụng với một dấu ngoặc vuông hai bên Lấy ví dụsau:
log using filename [, noproc append replace [text/smcl] ]
Muốn nói lên rằng [by varlist] không được phép sử dụng,filename phải bắt buộc sử dụng, trong khi đó ba lựa chọn lànoproc append replace và [text/smcl] (có nghĩa là dạng text haysmcl) có thể được sử dụng trong câu lệnh này
Cú pháp của varlist, exp và range được trình bày tiếp theocùng với những thông tin về việc làm thế nào để xâuchuỗi các tập hợp biến số hay quan sát lại với nhau
1.5.1 Varlist
Dạng varlist đơn giản nhất là danh sách những tên biến đượcphân biệt bằng khoảng trắng Tên biến có thể được viếttắt miễn là không gây nhầm lẫn, chẳng hạn x1 có thểtượng trưng cho x trừ khi không có tên biến nào khác bắtđầu bằng x như chính bản thân x hay là x2 Một tập hợp cácbiến liên tục ví dụ như m1, m2 là x có thể được biểu diễndưới dạng m1-x Tất cả các biến bắt đầu cùng bằng mộtký tự có thể được thay thế bằng dấu * để m* có thể tượngtrưng cho m1 m6 mother Tập hợp các biến có thể được ghi là_all hay * Ví dụ về varlist được liệt kê dưới đây:
Trang 13tượng trưng cho ‘bằng với’ và ‘không bằng với’, và kí tự !, &và | tượng trưng cho ’không’, ‘và’, ‘hoặc’ vì vậy
if (y!=2 & z>x )|x==1
Sẽ đọc là ‘nếu y không bằng 2 và z lớn hơn x hay x bằng 1’.Tuy nhiên trong thực tế câu mô tả trên phải được viết dướidạng tượng trưng cho bất cứ biến nào sau đây:
(y i # 2 & z i > x i ) | x i == 1
trong đó i tượng trương cho tập hợp các biến
Chúng ta phải quan tâm đặc biệt khi sử dụng các dấu
> hay >= cho các số liệu mất Ví dụ, nếu chúng ta muốn xoátất cả các đối tượng có độ tuổi lớn hơn 16, chúng ta đánhlệnh
drop if age>16
lệnh này sẽ xoá luôn những người có giá trị mất (đượctượng trưng bằng ‘.’, ‘.a’, ‘.b’, vvv ) bởi vì những giá trị mấtnày được diễn giải như là những con số rất lớn Thường đểcho an toàn chúng ta nên có thêm điều kiện dành cho giátrị mất như câu lệnh dưới đây:
drop if age>16 & age<
Cần chú ý rằng điều kiện age< sẽ an toàn hơn là age!=.bởi vì sẽ có những giá trị mất ký hiệu là ‘.a’ hay ‘.b’, vvv
Những câu diễn tả đại số sử dụng các dấu +, -, *, /,và ^ sẽ tượng trưng cho cộng , trừ, nhân, chia, và mũ Stata
cũng có các hàm toán học như sqrt(), exp(), log() vvv và những hàm phân phối như chiprob() và normprob() đối với hàm phân phối tích lũy và invnorm() vvv đối với hàm phân
phối tích lũy ngược Các con số giả ngẫu nhiễn với phânphối đồng dạng trong khoảng [0,1] có thể được thực thi bằng
lệnh uniform() Ví dụ như các diễn giải sau
Cuối cùng những mô tả dạng chuỗi thường được sử
dụng chủ yếu cho các hàm chuỗi cụ thể như là substr(str,
n1, n2) để rút một chuỗi nhỏ hơn từ chuỗi str bắt đầu tại n1
Trang 14đến n2 Dấu logic == và = cũng cho phép sử dụng với biếnchuỗi và dấu + dùng để nối 2 chuỗi với nhau Ví dụ, mô tảchuỗi và logic kết hợp sau đây.
“moon” + substr(“sunlight”, 4, 5))==”moonlight”
sẽ trả giá trị 1 là ‘true
Muốn xem thêm danh sách và những giải thích của tất
cả các hàm, xin sử dụng chức năng help.
1.5.3 Liệt kê danh sách quan sát và các khoảng
Mỗi quan sát có một tập hợp các giá trị các biến kèm theoquan sát đó Ví dụ giá trị của quan sát thứ ba của một biến
x cụ thể nào đó có thể được ký hiệu là x[3] Tập lệnh _nsẽ nhận giá trị của tập hợp đang chạy và _N tương đương vớisố quan sát Vì vậy chúng ta có thể đề cập đến một quansát trước đó của một biến bằng cách ký hiệu x[_n-1]
Một biến được tạo chỉ mục chỉ được cho phép trên phíatay phải của một mệnh đề Nếu chúng ta muốn thay thếx[3] bằng 2, chúng ta có thể thực hiện điều này bằng cáchsử dụng cú pháp
replace x=2 if _n==3
chúng ta có thể đề cập đến một khoảng các quan sátbằng cách sử dụng if với một mô tả logic bao gồm _n hay,
dễ hơn là, bằng cách sử dụng range Câu lệnh trên có thể
được thay thế bằng
replace x=2 in 3
Tổng quát hơn, range có thể là một khoảng liệt kê cụ thểsử dụng cú pháp f/1 ( tượng trưng cho ‘first to last’) trong đó fvà/hoặc 1 có thể được thay thế bằng những giá trị số nếucần thiết, để 5/12 có nghĩa là ‘năm đến 12’ và f/10 cónghĩa là ‘từ dầu đến thứ 10’ vvv Những số âm được sửdụng để đếm từ cuối ví dụ:
list x in -10/1
Trong đó list liệt kê mười quan sát cuối cùng
1.5.4 Liên kết các quan sát và các khoảng.
Trang 15Việc nối kết những quan sát lại với nhau thường không cầnthiết bởi vì những mô tả đã bao gồm các biến được ướclượng tự động cho mỗi quan sát Tuy nhiên việc lập lại mộtlệnh cho một tập hợp con quan sát là điều cần thiết và đólà chức năng của [by varlist:] Trước khi sử dụng by varlistchúng ta phải xắp sếp số liệu trước:
sort varlist
Trong đó varlist bao gồm những biến được sử dụng cho byvarlist: Cần chú ý rằng nếu varlist chứa nhiều hơn một biến,biến trước sẽ được sắp xếp theo biến sau Ví dụ:
sort school class
by school class: summarize test
sẽ đưa ra một thống kê tóm tắt cho mỗi lớp Nếu lớp đượcdán nhãn từ 1 đến n1 cho trường thứ I, thì không sử dụngschool trong câu lệnh trên sẽ đưa đến những quan sát cho tấtcả các lớp với cùng nhãn được nhóm lại với nhau Đểtránh tình trạng sắp xếp lại số liệu như vậy, bysort có thểđược thay thế by để câu lệnh đơn sau đây có thể thay thếhai lệnh trước:
bysort school class: summarize test
Một đặc trưng rất hữu ích của by varlist: là nó có thểgây chỉ mục của quan sát _n được đếm từ 1 trong mỗi nhómđược định nghĩa bởi kết hợp phân biệt của các giá trị trongvarlist Tập lệnh _N đại diện cho số quan sát trong mỗi nhóm
Ví dụ
sort group age
sy group: list age if _n==_N
Liệt kê tuổi đối với quan sát cuối trong mỗi nhóm trong đóquan sát cuối trong trường hợp này là quan sát có số tuổicao nhất trong nhóm của nó Tương tự có thể đạt được trongmột câu lệnh duy nhất:
bysort group (age): list age if _n==_N
Trong đó biến trong ngoặc ở mỗi nhóm được sử dụng đểxếp loại số liệu nhưng không được phân bố để định nghĩanhững nhóm nhỏ hơn quan sát mà lệnh list được áp dụng
Trang 16Chúng ta cũng có thể nối một danh sách các biến haynhững đối tượng khác sử dụng forreach Cú pháp đơn giảnnhất là
foreach variable in v1 v2 v3 { list ‘variable’}
Cú pháp này sử dụng một tập lệnh nội (xem mục 1.9)
variable trong đó giá trị (string ) v1, rồi v2 và cuối cùng là v3
trong dấu ngoặc.( tập lệnh nội cũng có thể được định nghĩa
chính xác bằng cách sử dụng local variable v1)
Xung quanh tập lệnh này trong ’ ‘ tương đương với gõ nội dungcủa nó nghĩa là ‘variable’ tương đương v1, rồi v2 và cuối cùnglà v3 để mỗi biến này được liệt kê làn lượt
Trong dòng đầu tiên ở trên, chúng ta liệt kê chính xácmỗi biến thay vì vậy chúng ta có thể sử dụng một cúpháp varlist chung hơn bằng cách xác định danh sách là loạivarlist như sau:
foreach variable of varlist v* {
list ‘variable’
}
danh sách kiểu số cũng có thể được xác định Câu lệnh
foreach number of numlist 1 2 3 {
Trang 17ở đây tập lệnh nội I được định nghĩa bằng cách sử dụngi=1 và sau đó tăng lên cấp số cộng là 1 bằng cách sửdụng i= ‘I’ + 1 xem mục 1.10 về chương trình Cox (2002b) đưa ramột hướng dẫn về byvarlist: và cox (2002b; 2003) thảo luậnvề foreach và forvalues để biết thêm chi tiết.
1.6 XỬ LÝ SỐ LIỆU
1.6.1 Tạo và thay đổi biến
Biến mới có thể được tạo ra bằng cách sử dụng lệnh
generate hay egen Lệnh generate đơn giản chỉ là đặt
phương trình một biến mới bằng một mô tả nào đó dùngđể ứớc lượng cho mỗi quan sát Ví dụ:
generate x=1
sẽ tạo ra một biến mới x thiết lập nó bằng 1 Khi generateđược sử dụng cùng với if exp hay in range, những quan sát cònlại sẽ được bỏ qua Ví dụ:
generate percent = 100*(old – new)/old if old>0
sẽ tạo nên biến percent và thiết lập nó tương đương vớiphần trăm giảm từ già old sang new trong đó old là số dươngvà tương đương bỏ qua ngược lại Lệnh replace hoạt động theocùng một cách như lệnh generate ngoại trừ nó cho phép mộtbiến đã hiện hữu có thể được thay đổi Ví dụ:
replace percent = 0 if old<0
sẽ thay các giá trị bỏ qua trong biến percent thành 0 hai lệnhtrên có thể được thay bằng một lệnh duy nhất:
generate percent = cond(old>0, 100*(old-new)/old, 0)
trong đó cond() tương đương đối số thứ hai nếu đối số thứnhất là đúng và đối số thứ ba nếu ngược lại
Lệnh egen cung cấp phần mở rộng cho lệnh generate.Một lợi điểm của egen là một số hàm của egen chấp nhậnđối số là một danh sách biến, trong khi các phương trình củagenerate chỉ chấp nhận các mô tả d97n như là đối số củanó Ví dụ, chúng ta có thể tạo biến trung bình của 100 biếntừ m1 đến m100
egen average = rmean(m1-m100)
Trang 18Trong đó các giá trị mất bị bỏ qua Những phương trình khácđối với egen hoạt động trên nhóm quan sát Ví dụ, nếuchúng ta có thu nhập (biến income) đối với các thành viêntrong gia đình ( biến family) chúng ta có thể muốn tính toántổng thu nhập của mỗi thành viên trong gia đình bằng cách
egen faminc = sum(income), by(family)
Một biến đang chạy chỉ có thể sử dụng lệnh replace khi đãxoá sử dụng nó
recode categ 1/3 = 1 4 =2
Nếu có những giá trị khác ví dụ như giá trị bị mất, nhữnggiá trị này sẽ giữ nguyên Xem help recode để biết thêm chitiết
1.6.2 THAY ĐỔI ĐỊNH DẠNG CỦA SỐ LIỆU
Thường thì cĩ một nhu cầu thay đổi dạng số liệu, áp dụng thơngthường nhất là nhĩm số liệu, đặc biệt lập lại những tính tốn như là sốliệu bảng biểu Nếu chúng ta cĩ một đo lường cơ hội j đối với đối tượng
i, cĩ thể được xem như là tập hợp số liệu đa biến trong đĩ mỗi cơ hội jtượng trưng bằng một biến xj, và biến xác định đối tượng sẽ là biếnsubj tuy nhiên, đối với một số phân tích thống kê, chúng ta chỉ cầnmột vector đáp ứng dài và duy nhất chứa đựng những đáp ứng cho tất
cả các cơ hội cho tất cả các đối tượng, cũng như hai biến subj và occ sẽtượng trưng cho danh muc i và j hai dạng số liệu này gọi là rộng vàdài Chúng ta cĩ thể chuyển từ dạng rộng với các biến xj và subj
list
x1 x2 subj
thành dạng dài với các biến x, occ, và subj sử dụng cú pháp
reshape long x, i(subj) j(occ)
Trang 19(note: j = 1 2) wide long
chúng ta cũng có thể chuyển số liệu trở lại bằng cách sử dụng
reshape wide x, i(subj) j(occ)
đối với số liệu dạng dài, chúng cần phải được bỏ bớt số liệu sao chomỗi nhóm tượng trưng bằng một con số đo lường tóm gọn duy nhất ví
dụ, đối với số liệu trên, mỗi đáp ứng của đối tượng có thể được tóm tắtbằng cách sử dụng trung bình, meanx và độ lệch chuẩn, sdx, và số đápứng không mất, num điều này có thể đạt được bằng cách sử dụng
collapse (mean) meanx=x (sd) sdx=x (count) num=x, by(subj)
Một cách khác để thay đổi dạng số liệu bao gồm cả bỏ quan sát
sử dụng
drop in 1/10
để bỏ mười quan sát đầu tiên hay
bysort group (weight) : keep if _n= =1
để bỏ tất cả trừ những tàhnh viên nhẹ nhất của mỗi nhóm Đôi khi cầnphải hoán đổi, chuyển các biến thành quan sát và ngược lại điều này
có thể thực hiện bằng lệnh xpose
Trang 20Nếu mỗi quan sát tượng trưng cho một số đơn vị (như saucollapse) đơi khi cần lập lại mỗi quan sát bằng số đơn vị, num, mà nĩtượng trưng điều này cĩ thể thực hiện bằng lệnh expand num
Nếu cĩ hai tập tin số liệu, subj.dta chứa đối tượng xác định biến,
và occ.dta chứa các biến xác đ5inh cơ hội cho cùng đối tượng rồi nếucác file chứa cùng mả số đối tượng sắp theo thứ tự subj-id và subj,dtađược tải xuống, các file này cĩ thể được trộn chung như sau
merge subj-id using occ
đưa đến kết quả là các biến từ subj,dta đã được mở rộng khi thực hiệnexpand lệnh trên và các biến từ occ,dta đã được thêm vào
1.7 Ước Lượng
Tất cả các lệnh ước lượng giống như regress, logistic, poisson và glm đềucùng một cú pháp và cĩ nhiều tùy chọn giống nhau
Các lệnh ước lượng cùng tạo ra những kết quả tương tự cần thiết
và được lưu trữ cùng dạng thơng tin Những thơng tin đđược lưu trữcó thể được xử lý bằng cách sử dụng cùng cấu trúc lệnhsau khi ước lượng
Cấu trúc lệnh cơ bản là:
[xi] command depvar [model] [weights], tùy chọn
trong đó có thể kết hợp thêm by varlist:, if exp, và in range nhưthường lệ Các biến đáp ứng được cụ thể bằng depvar vàcác biến giải thích là model Biến giải thích thường là mộtdanh sách các biến giải thích Nếu các biến giải thích cóthứ tự và tương tác là cần thiết, sử dụng xi: ở đầu củalệnh có thể giúp ghi chú đặc biệt đối với model được sửdụng Ví dụ,
xi: regress resp i.x
Tạo nên những biến giả đối với mỗi giá trị x ngoại trừ giátrị thấp nhất và đưa những biến giả này như là nhữngbiến dự đoán trong mô hình
xi: regress resp i.x*y z
sẽ hiệu chỉnh mô hình hồi quy với những tác động chính là
x, y, và z và tương tác giữa chúng x x y trong đó x được sử lýnhư biến thứ tự và y và z như là biến liên tục (xem help xi đểbiết thêm chi tiết)
Cú pháp đối với {weights} là
weighttype = varname
Trang 21Trong đó weighttype phụ thuộc vào lý do đối vơi đo đạc sốliệu Nếu số liệu dưới dạng bảng trong đó mỗi quan sát
tượng trưng cho một nhóm chứa tổng các quan sát freg, sử
dụng {fweight=freg} tương tự với việc chạy cùng câu lệnh ướclượng trong tập tin số liệu mở rộng trong đó mỗi quan sát
được lập lại freq lần Ví dụ nếu các quan sát có độ lệch
chuẩn khác nhau bởi vì chúng tượng trưng cho trung bình củacác lần quan sát khác nhau, thì aweight được sử dụng vớitrọng số phần trăm của nghịch đảo độ lệch chuẩn Cuốicùng, pweights được sử dụng cho đo lường xác suất trong đótrọng số tương đương với xác suất nghịch đảo mà mỗi quansát được lấy mẫu (một loại trọng số khác là iweights, cũngđược sử dụng trong các lệnh ước lượng, chủ yếu dành chocác lập trình viên)
Tất cả các kết quả của lệnh ước lượng đều được lưulại và có thể xử lý bằng các lệnh hậu ước lượng Ví dụ,
sử dụng lệnh predict cho tập tin số liệu hiện hành và sử dụng các lệnh test, testparm, lrtest và lincom để suy luận
dựa trên những mô hình trước đó
Các kết quả lưu lại có thể được xem lại nếu dùngđúng đường dẫn Ví dụ, hệ số hồi quy được lưu lại trong tậplệnh chung _b[varname] Để trình bày hệ số hồi quy của biến
x, chỉ cần gõ:
display _b[x]
để tiếp cận được với tòan bộ vector tham số, sử dụng e(b).Nhiều kết quả khác có thể được tiếp cận bằng cách sửdụng cú pháp e(name) Xem mục “lưu kết quả” trong phầnnhập liệu của lệnh ước lượng trong sổ tay tham khảo stata(SRM) để tìm ra được tên của các kết quả cụ thể được lưudưới tên gì Câu lệnh
return list
sẽ liệt kê tất cả các tên và nội dung của kết quả “r-class”hiện có
Trang 221.8 ĐỒ HỌA
Một trong những đặc trưng tuyệt vời được giới thiệu trongstata 8 là phần đồ họa được cải tiến Giao diện đồ họa ngườidùng (GUI) giúp người sử dụng dễ dàng vẽ được các dạngđồ họa khác nhau Để minh họa điều này, chúng ta trước hếtcần tạo ra một bộ số liệu như sau:
set obs 100
set seed 13211
gen x=invnorm(uniform())
gen y=2+3*x + invnorm(uniform())
muốn vẻ một phân tán đồ của biến y theo biến x bằng GUI,
chọn menu Graphic, chọn Twoway graph (scatterplot, line etc ),
màn hình sẽ xuất hiện cửa sổ như hình 1.4 Chúng ta có thểgõ hay chọn tên biến từ cửa sổ variables để điền vào khung
x và khung y Muốn dán nhãn cho trục hoành, chọn thẻ X-axis, và gõ tên nhãn vào khung Title Tương tự, ta chọn thẻ Y-axis
để dán nhãn cho trục tung Muốn hiển thị giá trị của từng
chấm điểm đánh dấu check vào ô Marker label đề chọn
màu sắc cũng như kích cỡ cho giá trị được dán cho chấmđiểm Sau đây là câu lệnh để vẽ phân tán đồ
twoway (scatter y x, ytitle(bien gia y) xtitle(bien gia x)
Lệnh twoway, là dạng rút gọn của graph twoway, có thể đượcsử dụng để vẽ phân tán đồ, biểu đồ đoạn thẳng, hay biểuđồ cong và nhiều dạng biểu đồ khác cần có trục tung vàtrục hoành Trong phân tán đồ plotstype sẽ là scatter và cầnphải có hai biến x và y các tùy chọn như nhãn trục tung, trụchòanh có thể được thêm vào Có thể xem phần trợ giúpvề phân tán đồ ở phần “graph teoway scatter” Phần trợ giúpvề các tùy chọn đối với graph twoway có ở mục “twoway-tùy chọns”
Chúng ta có thể sử dụng graph twoway để vẽ phân tánđồ với đường hồi quy chồng như trong hình 1.6
twoway (scatter y x) (lfit y x), ytitle(biengia y) xtitle(biengia x) legend(order(1
“observed” 2 “fitted”))