Compute Variable: tạo đơn giá, nhóm tuổi, điểm tổng và biến dẫn xuất thế nào? là bài 14 của chuyên đề SPSS trong phân tích dữ liệu BĐS. Dùng Compute Variable và điều kiện để tạo đơn giá, tuổi công trình, điểm trung bình và biến dẫn xuất, kiểm chặt đơn vị, mẫu số và missing.
Biên soạn: ThS. Nguyễn Mạnh Hùng
GV. Khoa QLĐĐ&BĐS – ĐH Nông Lâm TP.HCM
Email: nguyenmanhhung@hcmuaf.edu.vn
Cập nhật 01/10/2026: Nội dung đối chiếu với IBM SPSS Statistics 31 và các tài liệu phương pháp nêu ở cuối bài. Dữ liệu BĐS trong ví dụ là giả lập phục vụ giảng dạy, trừ khi ghi rõ nguồn khác.
Vị trí của bài trong mạch học
Bài thuộc Chương 2 – Nhập, chuẩn hóa và làm sạch dữ liệu. Mục tiêu là làm dữ liệu đáng tin và có thể truy vết trước khi bước sang thống kê mô tả. Bài nối trực tiếp quy tắc ở Bài 1–10: hiểu mỗi dòng, mỗi cột và thuộc tính biến trước khi bấm Analyze.
1. Biến dẫn xuất cần công thức
Compute tạo thông tin từ các biến đã có; công thức và đơn vị phải được ghi rõ.
Liên hệ BĐS: với giá, diện tích, khu vực, loại hình hoặc dữ liệu khảo sát, một thao tác đúng kỹ thuật vẫn có thể tạo kết quả sai nghĩa nếu đơn vị quan sát, mã hóa, missing hoặc phạm vi mẫu chưa được kiểm. Vì vậy sau mỗi thao tác phải đối chiếu với codebook và ít nhất một số case cụ thể.
Cách tự kiểm: lưu trạng thái trước thao tác, chạy công cụ, ghi N/giá trị đầu ra, rồi kiểm ngược 5–10 dòng. Nếu không giải thích được vì sao một case được giữ, đổi nhóm, trở thành missing hoặc xuất hiện trong Output, chưa chuyển bước.
2. Đơn giá cần cùng quy ước
gia_rao/dien_tich chỉ đúng khi giá và diện tích đã chuẩn đơn vị.
Liên hệ BĐS: với giá, diện tích, khu vực, loại hình hoặc dữ liệu khảo sát, một thao tác đúng kỹ thuật vẫn có thể tạo kết quả sai nghĩa nếu đơn vị quan sát, mã hóa, missing hoặc phạm vi mẫu chưa được kiểm. Vì vậy sau mỗi thao tác phải đối chiếu với codebook và ít nhất một số case cụ thể.
Cách tự kiểm: lưu trạng thái trước thao tác, chạy công cụ, ghi N/giá trị đầu ra, rồi kiểm ngược 5–10 dòng. Nếu không giải thích được vì sao một case được giữ, đổi nhóm, trở thành missing hoặc xuất hiện trong Output, chưa chuyển bước.
3. Mẫu số phải hợp lệ
Chỉ tính khi diện tích>0; không sửa 0 thành 1 để công thức chạy.
Liên hệ BĐS: với giá, diện tích, khu vực, loại hình hoặc dữ liệu khảo sát, một thao tác đúng kỹ thuật vẫn có thể tạo kết quả sai nghĩa nếu đơn vị quan sát, mã hóa, missing hoặc phạm vi mẫu chưa được kiểm. Vì vậy sau mỗi thao tác phải đối chiếu với codebook và ít nhất một số case cụ thể.
Cách tự kiểm: lưu trạng thái trước thao tác, chạy công cụ, ghi N/giá trị đầu ra, rồi kiểm ngược 5–10 dòng. Nếu không giải thích được vì sao một case được giữ, đổi nhóm, trở thành missing hoặc xuất hiện trong Output, chưa chuyển bước.
4. Tuổi công trình cần mốc thời gian
2026-nam_xay_dung chỉ đúng nếu năm tham chiếu là 2026; dữ liệu nhiều năm có thể cần ngày khảo sát.
Liên hệ BĐS: với giá, diện tích, khu vực, loại hình hoặc dữ liệu khảo sát, một thao tác đúng kỹ thuật vẫn có thể tạo kết quả sai nghĩa nếu đơn vị quan sát, mã hóa, missing hoặc phạm vi mẫu chưa được kiểm. Vì vậy sau mỗi thao tác phải đối chiếu với codebook và ít nhất một số case cụ thể.
Cách tự kiểm: lưu trạng thái trước thao tác, chạy công cụ, ghi N/giá trị đầu ra, rồi kiểm ngược 5–10 dòng. Nếu không giải thích được vì sao một case được giữ, đổi nhóm, trở thành missing hoặc xuất hiện trong Output, chưa chuyển bước.
5. Nhóm tuổi có thể Recode rõ hơn
Compute+IF hữu ích khi điều kiện phức tạp; chia khoảng đơn giản thường nên Recode.
Liên hệ BĐS: với giá, diện tích, khu vực, loại hình hoặc dữ liệu khảo sát, một thao tác đúng kỹ thuật vẫn có thể tạo kết quả sai nghĩa nếu đơn vị quan sát, mã hóa, missing hoặc phạm vi mẫu chưa được kiểm. Vì vậy sau mỗi thao tác phải đối chiếu với codebook và ít nhất một số case cụ thể.
Cách tự kiểm: lưu trạng thái trước thao tác, chạy công cụ, ghi N/giá trị đầu ra, rồi kiểm ngược 5–10 dòng. Nếu không giải thích được vì sao một case được giữ, đổi nhóm, trở thành missing hoặc xuất hiện trong Output, chưa chuyển bước.
6. MEAN và missing
MEAN có thể dùng các giá trị hợp lệ còn lại; MEAN.n yêu cầu tối thiểu n giá trị hợp lệ.
Liên hệ BĐS: với giá, diện tích, khu vực, loại hình hoặc dữ liệu khảo sát, một thao tác đúng kỹ thuật vẫn có thể tạo kết quả sai nghĩa nếu đơn vị quan sát, mã hóa, missing hoặc phạm vi mẫu chưa được kiểm. Vì vậy sau mỗi thao tác phải đối chiếu với codebook và ít nhất một số case cụ thể.
Cách tự kiểm: lưu trạng thái trước thao tác, chạy công cụ, ghi N/giá trị đầu ra, rồi kiểm ngược 5–10 dòng. Nếu không giải thích được vì sao một case được giữ, đổi nhóm, trở thành missing hoặc xuất hiện trong Output, chưa chuyển bước.
7. Điểm tổng phải có cơ sở thang đo
Không cộng các item khác khái niệm chỉ vì cùng thang 1–5.
Liên hệ BĐS: với giá, diện tích, khu vực, loại hình hoặc dữ liệu khảo sát, một thao tác đúng kỹ thuật vẫn có thể tạo kết quả sai nghĩa nếu đơn vị quan sát, mã hóa, missing hoặc phạm vi mẫu chưa được kiểm. Vì vậy sau mỗi thao tác phải đối chiếu với codebook và ít nhất một số case cụ thể.
Cách tự kiểm: lưu trạng thái trước thao tác, chạy công cụ, ghi N/giá trị đầu ra, rồi kiểm ngược 5–10 dòng. Nếu không giải thích được vì sao một case được giữ, đổi nhóm, trở thành missing hoặc xuất hiện trong Output, chưa chuyển bước.
8. If Cases trong Compute
Conditional expression cho phép tính chỉ trên case hợp lệ.
Liên hệ BĐS: với giá, diện tích, khu vực, loại hình hoặc dữ liệu khảo sát, một thao tác đúng kỹ thuật vẫn có thể tạo kết quả sai nghĩa nếu đơn vị quan sát, mã hóa, missing hoặc phạm vi mẫu chưa được kiểm. Vì vậy sau mỗi thao tác phải đối chiếu với codebook và ít nhất một số case cụ thể.
Cách tự kiểm: lưu trạng thái trước thao tác, chạy công cụ, ghi N/giá trị đầu ra, rồi kiểm ngược 5–10 dòng. Nếu không giải thích được vì sao một case được giữ, đổi nhóm, trở thành missing hoặc xuất hiện trong Output, chưa chuyển bước.
9. Kiểm bằng tính tay
Chọn ít nhất 5–10 case để đối chiếu công thức.
Liên hệ BĐS: với giá, diện tích, khu vực, loại hình hoặc dữ liệu khảo sát, một thao tác đúng kỹ thuật vẫn có thể tạo kết quả sai nghĩa nếu đơn vị quan sát, mã hóa, missing hoặc phạm vi mẫu chưa được kiểm. Vì vậy sau mỗi thao tác phải đối chiếu với codebook và ít nhất một số case cụ thể.
Cách tự kiểm: lưu trạng thái trước thao tác, chạy công cụ, ghi N/giá trị đầu ra, rồi kiểm ngược 5–10 dòng. Nếu không giải thích được vì sao một case được giữ, đổi nhóm, trở thành missing hoặc xuất hiện trong Output, chưa chuyển bước.
10. Metadata biến mới
Label, đơn vị và Measure phải được cập nhật sau Compute.
Liên hệ BĐS: với giá, diện tích, khu vực, loại hình hoặc dữ liệu khảo sát, một thao tác đúng kỹ thuật vẫn có thể tạo kết quả sai nghĩa nếu đơn vị quan sát, mã hóa, missing hoặc phạm vi mẫu chưa được kiểm. Vì vậy sau mỗi thao tác phải đối chiếu với codebook và ít nhất một số case cụ thể.
Cách tự kiểm: lưu trạng thái trước thao tác, chạy công cụ, ghi N/giá trị đầu ra, rồi kiểm ngược 5–10 dòng. Nếu không giải thích được vì sao một case được giữ, đổi nhóm, trở thành missing hoặc xuất hiện trong Output, chưa chuyển bước.
Bộ dữ liệu thực hành xuyên suốt
Các bài 11–20 dùng một cấu trúc BĐS thống nhất để tập trung vào phương pháp. Có thể thay bằng dữ liệu thật nếu giữ đúng ý nghĩa biến, đơn vị và yêu cầu bảo mật.
| Tên biến | Kiểu | Ý nghĩa | Mã/đơn vị | Measure |
|---|---|---|---|---|
| ma_bds | String | Mã quan sát/tài sản | — | Nominal |
| khu_vuc | Numeric | Khu vực | 1=Trung tâm; 2=Cận trung tâm; 3=Ngoại vi | Nominal |
| loai_bds | Numeric | Loại BĐS | 1=Căn hộ; 2=Nhà phố; 3=Đất ở | Nominal |
| dien_tich | Numeric | Diện tích | m² | Scale |
| gia_rao | Numeric | Giá rao | triệu đồng | Scale |
| gia_m2 | Numeric | Đơn giá | triệu đồng/m² | Scale |
| khoang_cach_tam | Numeric | Khoảng cách | km | Scale |
| nam_xay_dung | Numeric | Năm xây dựng | năm | Scale |
| muc_hai_long | Numeric | Mức hài lòng | 1–5; 99=không trả lời nếu đã khai Missing | Ordinal |
| y_dinh_mua | Numeric | Ý định mua | 1–5; 99=không trả lời nếu đã khai Missing | Ordinal |
Cú pháp tham khảo
Nên bấm Paste ở hộp thoại quan trọng để lưu dấu vết thao tác. Syntax dưới đây minh họa logic của bài và cần đổi tên biến theo tệp thực tế.
COMPUTE gia_m2=$SYSMIS. IF (dien_tich>0 AND gia_rao>0) gia_m2=gia_rao/dien_tich. COMPUTE tuoi_bds=2026-nam_xay_dung. COMPUTE diem_hl=MEAN.3(q1,q2,q3,q4). EXECUTE.Tình huống thực hành BĐS
File căn hộ có ba diện tích bằng 0. Nhóm tạo gia_m2 chỉ khi diện tích/giá dương, tính tay 10 case, sau đó mới dùng biến ở Descriptives. Với thang 4 item, nhóm so MEAN với MEAN.3 để hiểu missing.
Trong tình huống này, sinh viên phải tách ba việc: phát hiện – xác minh – xử lý. Không được nhảy từ phát hiện sang xóa/sửa khi chưa có căn cứ từ nguồn, codebook hoặc quy tắc nghiên cứu.
Ma trận lựa chọn nhanh
| Tình huống | Cách hiểu/công cụ | Điểm phải kiểm |
|---|---|---|
| gia_m2 | gia_rao/dien_tich | Kiểm dien_tich>0 |
| tuoi_bds | năm tham chiếu - năm xây | Kiểm mốc thời gian |
| diem_hl | MEAN.n | Quy định số item hợp lệ |
| nhom_tuoi | Recode hoặc Compute+IF | Chọn cách dễ kiểm |
| chenh_gia | Hai biến cùng đơn vị | Kiểm đơn vị |
Bài thực hành
Tạo gia_m2, tuoi_bds và điểm trung bình 4 item có missing; so phép cộng/4 với MEAN.3.
Sản phẩm phải nộp
- Ba biến dẫn xuất
- Syntax Compute
- Bảng đơn vị/công thức
- Descriptives sau Compute
- 10 case kiểm tay
Những lỗi thường gặp
- Không kiểm đơn vị
- Chia cho 0
- Dùng năm tham chiếu sai
- MEAN trên thang chưa kiểm nội dung
- Không quy định số item hợp lệ
- Không tính tay kiểm
Sổ tay thao tác nhanh
- Lưu bản trước thao tác bằng tên version rõ.
- Kiểm Type, Values, Missing, Measure của biến dùng.
- Viết câu hỏi cần trả lời trước khi mở menu.
- Thực hiện và Paste Syntax nếu quy tắc/công thức phức tạp.
- Kiểm N trước–sau và 5–10 case cụ thể.
- Đối chiếu Output với nguồn; không chỉ nhìn bảng đẹp.
- Ghi lỗi/quyết định/lý do vào biên bản QA.
- Save As bản mới, không overwrite nguồn duy nhất.
Phản biện chéo tại lớp
Một nhóm thao tác; nhóm còn lại hỏi về dữ liệu đầu vào, đơn vị quan sát, biến được dùng, thuộc tính biến, tác động của thao tác tới hàng/cột/giá trị và tình huống có thể làm kết quả sai. Người thực hiện phải giải thích được cả thao tác và ý nghĩa.
Sau phản biện, ghi ba điểm: điều làm đúng, lỗi/rủi ro phát hiện và biện pháp ngăn lỗi lặp lại.
Tình huống kiểm tra cuối bài
Giảng viên giao tệp 300–600 case có vấn đề liên quan trực tiếp đến Compute Variable: tạo đơn giá, nhóm tuổi, điểm tổng và biến dẫn xuất thế nào?. Sinh viên ghi trạng thái ban đầu, quy tắc kiểm, thao tác, Output/Syntax và bảng trước–sau. Điểm dựa cả vào lý do, không chỉ kết quả cuối.
Phiếu tự kiểm
- Tôi có giữ bản dữ liệu gốc/bản trước thao tác không?
- Tôi có hiểu mỗi dòng và mỗi biến đại diện cho gì không?
- Type, Values, Missing, Measure của biến chính có đúng không?
- Tôi có ghi điều kiện/công thức/ngưỡng thay vì sửa cảm tính không?
- N trước và sau thao tác có hợp lý không?
- Tôi có kiểm 5–10 case cụ thể không?
- Tôi có vô tình xóa/overwrite dữ liệu không?
- Output có category/missing/đơn vị bất thường không?
- Syntax/biên bản có đủ để tái hiện không?
- Tôi có phân biệt mô tả với suy luận không?
- Tôi có ghi giới hạn của thao tác không?
- Tệp sau xử lý có version rõ không?
Ghi nhớ trong 30 giây
- Compute cần công thức/đơn vị rõ
- Kiểm mẫu số
- MEAN.n kiểm số giá trị hợp lệ
- Điểm tổng cần cơ sở thang đo
- Luôn kiểm biến mới
Nguồn tham khảo
Nguồn kỹ thuật chính là IBM SPSS Statistics 31; nguồn phương pháp bổ sung dùng để giải thích cách đọc thống kê/đồ thị. Khi menu trên máy khác bài, đối chiếu đúng phiên bản SPSS đang sử dụng.
- https://www.ibm.com/docs/en/spss-statistics/31.0.0?topic=expressions-numeric-functions
- https://www.ibm.com/docs/en/spss-statistics/31.0.0?topic=command-statistical-functions-compute
- https://www.ibm.com/docs/en/spss-statistics/31.0.0?topic=variables-using-conditional-expressions
Bài tiếp theo
Select Cases và Filter: chọn đúng mẫu phân tích mà không xóa dữ liệu.
Bài luyện tập mở rộng
Luyện tập 1: Biến dẫn xuất cần công thức
Tạo một bản dữ liệu nhỏ có vấn đề liên quan đến Biến dẫn xuất cần công thức và Đơn giá cần cùng quy ước. Trước khi thao tác, viết dự đoán về N hoặc cấu trúc kết quả. Thực hiện đúng công cụ của bài, lưu Output/Syntax và kiểm lại bằng ít nhất 5 case.
Phần giải thích: trình bày 120–180 từ về vì sao compute tạo thông tin từ các biến đã có; công thức và đơn vị phải được ghi rõ. Đồng thời đối chiếu với nguyên tắc thứ hai: gia_rao/dien_tich chỉ đúng khi giá và diện tích đã chuẩn đơn vị. Nếu kết quả khác dự đoán, xác định chênh lệch do dữ liệu hay do thao tác.
Luyện tập 2: Mẫu số phải hợp lệ
Tạo một bản dữ liệu nhỏ có vấn đề liên quan đến Mẫu số phải hợp lệ và Tuổi công trình cần mốc thời gian. Trước khi thao tác, viết dự đoán về N hoặc cấu trúc kết quả. Thực hiện đúng công cụ của bài, lưu Output/Syntax và kiểm lại bằng ít nhất 5 case.
Phần giải thích: trình bày 120–180 từ về vì sao chỉ tính khi diện tích>0; không sửa 0 thành 1 để công thức chạy. Đồng thời đối chiếu với nguyên tắc thứ hai: 2026-nam_xay_dung chỉ đúng nếu năm tham chiếu là 2026; dữ liệu nhiều năm có thể cần ngày khảo sát. Nếu kết quả khác dự đoán, xác định chênh lệch do dữ liệu hay do thao tác.
Luyện tập 3: Nhóm tuổi có thể Recode rõ hơn
Tạo một bản dữ liệu nhỏ có vấn đề liên quan đến Nhóm tuổi có thể Recode rõ hơn và MEAN và missing. Trước khi thao tác, viết dự đoán về N hoặc cấu trúc kết quả. Thực hiện đúng công cụ của bài, lưu Output/Syntax và kiểm lại bằng ít nhất 5 case.
Phần giải thích: trình bày 120–180 từ về vì sao compute+if hữu ích khi điều kiện phức tạp; chia khoảng đơn giản thường nên recode. Đồng thời đối chiếu với nguyên tắc thứ hai: mean có thể dùng các giá trị hợp lệ còn lại; mean.n yêu cầu tối thiểu n giá trị hợp lệ. Nếu kết quả khác dự đoán, xác định chênh lệch do dữ liệu hay do thao tác.
Luyện tập 4: Điểm tổng phải có cơ sở thang đo
Tạo một bản dữ liệu nhỏ có vấn đề liên quan đến Điểm tổng phải có cơ sở thang đo và If Cases trong Compute. Trước khi thao tác, viết dự đoán về N hoặc cấu trúc kết quả. Thực hiện đúng công cụ của bài, lưu Output/Syntax và kiểm lại bằng ít nhất 5 case.
Phần giải thích: trình bày 120–180 từ về vì sao không cộng các item khác khái niệm chỉ vì cùng thang 1–5. Đồng thời đối chiếu với nguyên tắc thứ hai: conditional expression cho phép tính chỉ trên case hợp lệ. Nếu kết quả khác dự đoán, xác định chênh lệch do dữ liệu hay do thao tác.
Luyện tập 5: Kiểm bằng tính tay
Tạo một bản dữ liệu nhỏ có vấn đề liên quan đến Kiểm bằng tính tay và Metadata biến mới. Trước khi thao tác, viết dự đoán về N hoặc cấu trúc kết quả. Thực hiện đúng công cụ của bài, lưu Output/Syntax và kiểm lại bằng ít nhất 5 case.
Phần giải thích: trình bày 120–180 từ về vì sao chọn ít nhất 5–10 case để đối chiếu công thức. Đồng thời đối chiếu với nguyên tắc thứ hai: label, đơn vị và measure phải được cập nhật sau compute. Nếu kết quả khác dự đoán, xác định chênh lệch do dữ liệu hay do thao tác.
Luyện tập 6: Biến dẫn xuất cần công thức
Tạo một bản dữ liệu nhỏ có vấn đề liên quan đến Biến dẫn xuất cần công thức và Đơn giá cần cùng quy ước. Trước khi thao tác, viết dự đoán về N hoặc cấu trúc kết quả. Thực hiện đúng công cụ của bài, lưu Output/Syntax và kiểm lại bằng ít nhất 5 case.
Phần giải thích: trình bày 120–180 từ về vì sao compute tạo thông tin từ các biến đã có; công thức và đơn vị phải được ghi rõ. Đồng thời đối chiếu với nguyên tắc thứ hai: gia_rao/dien_tich chỉ đúng khi giá và diện tích đã chuẩn đơn vị. Nếu kết quả khác dự đoán, xác định chênh lệch do dữ liệu hay do thao tác.
Biên bản QA tối thiểu
| Mục | Trước | Quy tắc/thao tác | Sau | Xác nhận |
|---|---|---|---|---|
| Số case | Ghi N | Theo đúng mục tiêu | Ghi N sau | Hợp lý |
| Biến chính | Type/Measure | Kiểm thuộc tính | Không đổi ngoài ý muốn | Đạt/không đạt |
| Missing/category | Ghi hiện trạng | Theo quy tắc bài | Ghi sau | Không hợp thức hóa lỗi |
| Giá trị bất thường | Danh sách | Xác minh nguồn | Giữ/sửa/gắn cờ | Có lý do |
| Version | Tên file trước | Save As | Tên file sau | Không overwrite |