messenger_logo
Liên hệ qua Messenger
SciEco

Cách tạo lệnh chạy chatgpt trong phần mềm stata

I
IEFPA
Ngày viết: 22/04/2026

Trí tuệ nhân tạo đang trở thành một chủ đề thu hút sự chú ý lớn và ChatGPT hiện là công cụ phổ biến nhất trong lĩnh vực này. Việc kết hợp khả năng phân tích thống kê chuyên sâu của Stata với sự linh hoạt của trí tuệ nhân tạo có thể giúp quy trình làm việc của nhà nghiên cứu trở nên hiệu quả hơn. Bài viết này sẽ hướng dẫn bạn cách xây dựng một lệnh tùy chỉnh trong Stata để gọi trực tiếp ChatGPT thông qua việc tích hợp môi trường Python.

Tích hợp Stata và Python

Để bắt đầu, chúng ta cần tận dụng khả năng chạy mã Python ngay bên trong Stata. Nếu bạn chưa quen với việc sử dụng kết hợp hai ngôn ngữ này, hãy đảm bảo rằng Stata đã được thiết lập để nhận diện phiên bản Python trên máy tính của bạn. Việc tích hợp này cho phép chúng ta sử dụng các thư viện mạnh mẽ của Python để xử lý các tác vụ mà Stata thuần túy chưa hỗ trợ, ví dụ như giao tiếp với giao diện lập trình ứng dụng.

Sử dụng Python để tương tác với ChatGPT

Chúng ta sẽ sử dụng API của OpenAI để giao tiếp với ChatGPT. Để thực hiện, bạn cần có một tài khoản OpenAI và mã API key cá nhân. Ngoài ra, bạn phải cài đặt thư viện openai cho Python. Bạn có thể cài đặt thư viện này bằng cách nhập lệnh shell pip install openai vào cửa sổ lệnh của Stata.

Viết hàm Python đầu tiên

Bước đầu tiên là viết một đoạn mã Python để nhập thư viện, định nghĩa một hàm và gửi mã API key đến máy chủ OpenAI. Trong đoạn mã dưới đây, chúng ta sẽ định nghĩa một hàm có tên chatgpt và thiết lập chuỗi nhập liệu ban đầu là một yêu cầu viết thơ haiku về Stata.

1python:
2import openai
3def chatgpt():
4    openai.api_key = "DÁN MÃ API CỦA BẠN VÀO ĐÂY"
5    inputtext = "Write a haiku about Stata"
6    outputtext = openai.ChatCompletion.create(
7        model="gpt-3.5-turbo",
8        messages=[{"role": "user", "content": inputtext}]
9    )
10    print(outputtext.choices[0].message.content)

python: chatgpt()

end

Sau khi chạy hàm này, bạn sẽ nhận được câu trả lời từ ChatGPT ngay trong cửa sổ kết quả của Stata.

Tạo lệnh Stata tùy chỉnh

Việc gọi trực tiếp hàm Python như trên khá bất tiện nếu bạn muốn sử dụng thường xuyên. Giải pháp tốt hơn là tạo ra một chương trình Stata riêng biệt. Chúng ta sẽ lưu đoạn mã vào một tệp tin có đuôi .ado để có thể gọi lệnh bất cứ lúc nào.

Để lệnh này trở nên linh hoạt, chúng ta cần cho phép người dùng nhập câu hỏi trực tiếp từ dòng lệnh Stata thay vì cố định trong mã nguồn. Chúng ta sẽ sử dụng đối số InputText để lưu trữ nội dung câu hỏi và giao diện chức năng Stata để truyền dữ liệu này sang môi trường Python.

Truyền tham số và nhận kết quả

Sử dụng thư viện sfi của Stata, chúng ta có thể dễ dàng lấy giá trị từ các biến cục bộ macro và chuyển chúng thành biến trong Python. Đồng thời, kết quả trả về từ ChatGPT cũng sẽ được lưu ngược lại vào một biến cục bộ trong Stata để người dùng có thể sử dụng cho các bước tiếp theo.

1program chatgpt, rclass
2    version 18
3    args InputText
4    python: chatgpt_run()
5    return local OutputText = `"`OutputText'"'

python:

import openai

from sfi import Macro

def chatgpt_run():

openai.api_key = "DÁN MÃ API CỦA BẠN VÀO ĐÂY"

inputtext = Macro.getLocal('InputText')

outputtext = openai.ChatCompletion.create(

model="gpt-3.5-turbo",

messages=[{"role": "user", "content": inputtext}]

)

result = outputtext.choices[0].message.content

print(result)

Macro.setLocal("OutputText", result)

end

end

Bây giờ, bạn có thể thực hiện lệnh mới này với bất kỳ câu hỏi nào bằng cú pháp đơn giản: chatgpt "Viết một bài thơ về hồi quy tuyến tính".

Lưu phản hồi vào tệp văn bản

Một vấn đề thường gặp là khi kết quả trả về quá dài, các ký tự xuống dòng có thể bị mất định dạng khi hiển thị trong cửa sổ kết quả. Để giải quyết điều này, chúng ta có thể bổ sung thêm vài dòng mã Python để ghi toàn bộ nội dung phản hồi vào một tệp tin txt.

1python:
2    f = open("chatgpt_output.txt", "w")
3    f.write(result)
4    f.close()

Cách tiếp cận này đảm bảo bạn luôn có một bản sao hoàn chỉnh và đúng định dạng của câu trả lời để phục vụ cho việc báo cáo hoặc lưu trữ.

✨ Khả năng kết nối Stata với các mô hình ngôn ngữ lớn không chỉ dừng lại ở việc đặt câu hỏi vui vẻ, mà còn mở ra tiềm năng tự động hóa việc giải thích các bảng kết quả thống kê phức tạp hoặc viết mã lệnh mô phỏng dữ liệu một cách nhanh chóng.

Hãy thử ứng dụng lệnh vừa tạo để yêu cầu ChatGPT giải thích ý nghĩa của hệ số hồi quy trong một mô hình mà bạn đang thực hiện. Theo bạn, làm thế nào để tối ưu hóa câu lệnh trên để ChatGPT có thể đọc trực tiếp các thông số từ bảng kết quả return list của Stata?


Bài viết khác
Các phương pháp học máy, điển hình là các cây quyết định kết hợp, đang được sử dụng rộng rãi để dự báo kết quả dựa trên dữ liệu. Tuy nhiên, các phương pháp này thường tập trung vào việc đưa ra các dự báo điểm, điều này làm hạn chế khả năng định lượng độ không chắc chắn của dự báo. Trong nhiều lĩnh vực như y tế và tài chính, mục tiêu không chỉ là dự báo chính xác mà còn là đánh giá độ tin cậy của các dự báo đó. Khoảng dự báo, cung cấp các ngưỡng trên và ngưỡng dưới sao cho giá trị thực tế nằm trong đó với xác suất cao, là một công cụ đáng tin cậy để định lượng độ chính xác của dự báo. Một khoảng dự báo lý tưởng cần đáp ứng các tiêu chí: cung cấp độ bao phủ hợp lệ mà không phụ thuộc vào các giả định phân phối mạnh, có tính cung cấp thông tin bằng cách càng hẹp càng tốt cho mỗi quan sát, và có tính thích ứng, tức là cung cấp khoảng rộng hơn cho các quan sát khó dự báo và hẹp hơn cho các quan sát dễ dự báo. Bài viết này sẽ hướng dẫn cách sử dụng bộ lệnh h2oml trong Stata để xây dựng các khoảng dự báo bằng cách tiếp cận hồi quy phân vị phù hợp. Khái niệm về dự báo phù hợp Dự báo phù hợp là một phương pháp tổng quát được thiết kế để bổ trợ cho bất kỳ dự báo học máy nào bằng cách cung cấp các khoảng dự báo có đảm bảo về độ bao phủ thống kê mà không cần giả định phân phối. Về mặt lý thuyết, dự báo phù hợp bắt đầu với một mô hình học máy đã được huấn luyện trước trên dữ liệu độc lập và được phân phối định danh. Sau đó, nó sử dụng dữ liệu kiểm chứng được giữ lại từ cùng một phân phối tạo dữ liệu, gọi là dữ liệu hiệu chuẩn, để xác định một hàm số điểm S. Hàm số này gán điểm số lớn hơn khi sự khác biệt giữa giá trị dự báo và giá trị phản hồi thực tế lớn hơn. Những điểm số này sau đó được sử dụng để xây dựng khoảng dự báo cho các quan sát mới.
Trong phân tích thống kê hiện đại, việc xác định các hệ số của mô hình thường chỉ là bước khởi đầu. Điều mà các nhà nghiên cứu thực sự quan tâm là tác động của các biến độc lập lên giá trị kỳ vọng của biến kết quả. Từ phiên bản Stata 14.2, khả năng sử dụng lệnh margins sau khi ước lượng bằng phương pháp moment tổng quát đã mở ra một công cụ mạnh mẽ để phân tích sâu hơn các mô hình phức tạp. Bài viết này sẽ hướng dẫn cách sử dụng margins và marginsplot để ước lượng tác động của các biến cộng biến trong mô hình Probit được thực hiện qua phương pháp GMM. Lệnh margins hoạt động bằng cách tính toán các số liệu thống kê từ dự báo của một mô hình đã khớp trước đó tại các giá trị cố định của một số biến cộng biến, sau đó lấy trung bình hoặc tích phân trên các biến còn lại. Phương pháp này cực kỳ hữu ích để ước lượng các tham số trung bình của quần thể như trung bình biên, tác động điều trị trung bình hoặc tác động trung bình của một biến lên trung bình có điều kiện. Mô hình Probit và phương pháp moment tổng quát Đối với một kết quả nhị phân y và các biến dự báo x, mô hình Probit giả định rằng biến y bằng một khi tổng tích của x với hệ số beta cộng với sai số lớn hơn không, trong đó sai số tuân theo phân phối chuẩn hóa. Hàm trung bình có điều kiện của y khi biết x chính là hàm phân phối tích lũy chuẩn hóa của tích x và beta.
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