messenger_logo
Liên hệ qua Messenger
SciEco

Tạo biến mới trên STATA

NH
Nguyễn Hữu Kiên
Ngày viết: 22/06/2023

Trong bài viết này, SciEco cung cấp nội dung về tạo biến và hiệu chỉnh biến trên STATA.

1. Các toán tử trong Stata

Các toán tử trong STATA được trình bày trong bảng dưới đây:

+
Cộng
!
Không
>
Lớn hơn
-
Trừ
|
Hoặc
<
Nhỏ hơn
*
Nhân
&
>=
Lớn hơn hoặc bằng
/
Chia
=
Phép gán
<=
Nhỏ hơn hoặc bằng
^
==
Bằng
+
Nối chuỗi
!=
Không bằng

Ví dụ: biểu thức x+yxyx×y- \dfrac{x + y ^ {x - y}}{x \times y} được viết thành –(x+y^(x-y))/(x*y)

2. Các kiểu dữ liệu

Giá trị nhỏ nhất
GIá trị nhỏ nhất
Giá trị lớn nhất
byte
-127
100
int
-32,767
32,740
long
−2,147,483,647
2,147,483,647
float
−1.70141173319 × 10^38
1.70141173319 × 10^38
double
−8.9884656743 × 10^307
8.9884656743 × 10^307
Loại lưu trữ
Độ dài lớn nhất
str1
1
str2
2
...
.
...
.
str2045
2045
strL
2,000,000,000

3. Tạo biến mới với câu lệnh gen

Câu lệnh gen được thực hiện khi cần tạo biến mới dựa trên tính toán biểu thức.
Cấu trúc câu lệnh

generate [type] newvar[:lblname] =exp [if] [in] [, before(varname) | after(varname)]

Tạo biến số newv1 bằng tổng biến v1 cộng thêm 2

1generate newv1= v1 + 2

Trường hợp tương tự, biến newv1 đứng trước/đứng sau biến v1

1generate newv1=v1 + 2, before(v1)
2generate newv1=v1 + 2, after(v1)

Trường hợp tương tự, biến newv1 dạng byte với nhãn giá trị (label values) mylabel (Nhãn của biến và nhãn giá trị được trình bày ở nội dung dưới)

1generate byte newv1:mylabel=v1 + 2

Tạo biến chuỗi newv2 bằng “SciEco”

1generate newv2= "SciEco"

Tạo biến newv3 bằng thứ tự của quan sát

1generate newv3=_n

Tạo biến newv4 bằng tổng số quan sát

1generate newv4=_N

4. Tạo biến mới với câu lệnh egen

Câu lệnh egen được thực hiện khi cần tạo biến mới dựa trên hàm:

egen [type] newvar = fcn(arguments) [if] [in] [, options]

Tạo biến với rowtotal( )

1egen hsum = rowtotal(a b c)
2generate vsum = sum(hsum)
3egen sum = total(hsum)

Kết quả

a
b
c
hsum
vsum
sum
1.
.
2
3
5
5
63
2.
4
.
6
10
15
63
3.
7
8
.
15
30
63
4.
10
11
12
33
63
63

Tạo biến với rowmean(), rowmedian(), rowpctile(), rowsd(), và rownonmiss()

Hàm rowmean() tính giá trị trung bình theo quan sát của các biến khác nhau (tương đương với hàm average trong excel); tương tự, các hàm còn lại lần lượt tính toán giá trị trung vị, phân vị, độ lệch chuẩn và số biến không bị missing theo hàng.

1egen avg = rowmean(a b c)
2egen median = rowmedian(a b c)
3egen pct25 = rowpctile(a b c), p(25)
4egen std = rowsd(a b c)
5egen n = rownonmiss(a b c)

Kết quả:

a
b
c
avg
median
pct25
std
n
1.
.
2
3
2.5
2.5
2
.7071068
2
2.
4
.
6
5
5
4
1.414214
2
3.
7
8
.
7.5
7.5
7
.7071068
2
4.
10
11
12
11
11
10
1
3

Nội dung chi tiết các hàm trong STATA sẽ được trình bày tại các bài viết tiếp theo trong chủ đề “Các lệnh xử lý dữ liệu trong STATA”

Thay đổi biến đã có với lệnh replace

Thay đổi giá trị của 1 biến đã thực hiện lệnh replace. Ví dụ, tạo biến giả nhận dạng trẻ em (kid) dựa vào biến tuổi (age).

1gen kid=1 if age<16
2    replace kid=0 if kid==.

hoặc

1gen kid=.
2		replace kid=1 if age<16
3		replace kid=0 if age>=16

Bài viết khác
Trong quá trình phân tích dữ liệu, chúng ta thường phải tạo ra rất nhiều bảng kết quả hồi quy với cùng một định dạng và nhãn dán lặp đi lặp lại. Thay vì phải định dạng lại từ đầu cho mỗi bảng báo cáo, Stata cung cấp một giải pháp hiệu quả giúp bạn lưu lại toàn bộ cấu trúc trình bày để tái sử dụng về sau. Bài viết này sẽ hướng dẫn cách lưu các thiết lập định dạng bảng và áp dụng chúng cho những dự án phân tích dữ liệu trong tương lai. Tạo bảng kết quả cơ bản Chúng ta sẽ bắt đầu bằng việc mở tập dữ liệu thông qua lệnh webuse nhanes2l. Sau đó, chúng ta dùng lệnh table để tạo một bảng cơ bản cho mô hình hồi quy logistic với biến phụ thuộc nhị phân là highbp. Bảng này sẽ bao gồm tỷ số chênh, sai số chuẩn, thống kê z, p-value và khoảng tin cậy. Lưu ý rằng ký hiệu biến phân loại của Stata được sử dụng để đưa vào hiệu ứng chính của biến liên tục age, hiệu ứng chính của các biến phân loại sex và diabetes, cùng với sự tương tác giữa age và sex.
Machine learning, deep learning và trí tuệ nhân tạo là tập hợp các thuật toán dùng để nhận diện các mẫu trong dữ liệu. Các thuật toán này thường có tên gọi khá đặc biệt như random forests, neural networks hay spectral clustering. Bài viết này trình bày cách sử dụng một trong những thuật toán phổ biến mang tên Support Vector Machines hay còn được gọi tắt là SVM. Mục tiêu là ứng dụng mô hình SVM để phân biệt những người có khả năng mắc bệnh tiểu đường và những người không mắc bệnh thông qua hai biến số là tuổi và mức HbA1c. Tuổi được tính bằng năm, còn HbA1c là chỉ số xét nghiệm máu đo lường mức độ kiểm soát đường huyết. Mô hình SVM sẽ dự đoán rằng những người lớn tuổi với mức HbA1c cao có nguy cơ mắc bệnh tiểu đường cao hơn, trong khi những người trẻ tuổi với mức HbA1c thấp ít có nguy cơ mắc bệnh hơn. Tải, gộp và làm sạch dữ liệu bằng Stata Dữ liệu được sử dụng lấy từ Khảo sát Kiểm tra Sức khỏe và Dinh dưỡng Quốc gia Hoa Kỳ. Cụ thể, biến số tuổi trích xuất từ tập dữ liệu nhân khẩu học, chỉ số HbA1c từ dữ liệu hemoglobin và trạng thái bệnh từ dữ liệu tiểu đường. Quá trình bắt đầu bằng việc tải các tệp gốc từ trang web, lưu thành các tập dữ liệu Stata cục bộ và tiến hành gộp chúng lại với nhau. Sau khi gộp, các biến số sẽ được đổi tên và mã hóa lại cho đồng nhất. Những quan sát có giá trị bị khuyết sẽ được loại bỏ hoàn toàn để đảm bảo chất lượng cho bước huấn luyện mô hình.
SciEco
Science for Economics
Định hướng đào tạo phân tích dữ liệu, xây dựng chính sách, tối ưu hoá danh mục tài chính cá nhân và dự báo thị trường.
Liên hệ
Địa chỉ: Số 60, ngõ 41, Phố Thái Hà, Trung Liệt, Đống Đa, Hà Nội (Google Map)
Email: science.for.economics@gmail.com
Hotline: 03.57.94.7680 (Mrs. Hà)
Mạng xã hội