
Ma trận suy biến singular matrix phải làm sao trong SmartPLS
Hiện tượng bạn đang gặp
Bạn mở SmartPLS, bấm chạy PLS Algorithm hoặc Bootstrapping, nhưng phần mềm dừng lại với thông báo singular matrix, matrix is singular, algorithm could not be completed hoặc một lỗi liên quan đến ma trận không khả nghịch. Một số phiên bản chỉ hiện thông báo ngắn trong khu vực Results, không nói rõ biến nào gây lỗi. Khi đó, việc chạy lại nhiều lần gần như không giúp ích nếu dữ liệu và mô hình vẫn giữ nguyên.
Trong PLS-SEM, lỗi này thường xuất hiện khi SmartPLS không thể thực hiện phép tính ma trận vì một hoặc vài cột dữ liệu có quan hệ tuyến tính hoàn hảo hoặc gần hoàn hảo. Ví dụ, hai biến quan sát có cùng toàn bộ câu trả lời, một biến được nhập ngược nhưng chưa reverse code, hoặc một biến có cùng một giá trị cho tất cả người trả lời. Lỗi cũng có thể đến từ mô hình nối sai giữa construct và indicator.
Bạn nên phân biệt lỗi singular matrix với lỗi bootstrapping failed. Singular matrix thường xảy ra ngay ở bước ước lượng ban đầu, còn bootstrapping có thể chạy được PLS Algorithm nhưng thất bại khi lấy mẫu lặp. Nếu vấn đề nằm ở bootstrapping, bạn có thể xem thêm hướng dẫn bootstrapping bị lỗi phải làm sao. Trang chủ đề SmartPLS cũng hữu ích nếu bạn cần kiểm tra lại toàn bộ quy trình từ measurement model đến structural model.
Nguyên nhân thường gặp
Đừng bắt đầu bằng việc xóa ngẫu nhiên các biến quan sát. Trước tiên, hãy xác định lỗi nằm ở file dữ liệu, ở cách mã hóa hay ở mô hình. Bảng dưới đây giúp bạn khoanh vùng nhanh hơn.
| Dấu hiệu trong file hoặc SmartPLS | Nguyên nhân có thể xảy ra | Cách kiểm tra thực tế |
|---|---|---|
| Hai cột có toàn bộ giá trị giống nhau | Hai biến quan sát bị sao chép hoặc đặt cùng mã trong bảng hỏi | So sánh từng cặp cột trong Excel hoặc SPSS, dùng chức năng Compare hoặc kiểm tra công thức |
| Một cột chỉ có một giá trị | Biến không có phương sai, thường do nhập sai mã hoặc câu hỏi bị bỏ qua | Trong SPSS xem Frequencies, trong Excel kiểm tra số giá trị khác nhau |
| Một biến là tổng hoặc trung bình của các biến khác | Biến tổng bị đưa vào cùng construct với các indicator thành phần | Xem tên cột và danh sách biến trước khi import vào SmartPLS |
| Các giá trị thiếu được ghi bằng 0, 99 hoặc 999 | Mã missing bị hiểu là một câu trả lời hợp lệ | Đối chiếu bảng mã, kiểm tra Frequencies và khai báo missing trước khi xuất CSV |
| Dữ liệu dạng chữ hoặc có dấu phẩy thập phân | SmartPLS đọc sai kiểu dữ liệu hoặc tạo cột không hợp lệ | Mở CSV bằng trình soạn thảo văn bản, kiểm tra delimiter và kiểu số |
| Mô hình có vòng lặp hoặc mũi tên nối sai | Structural model không xác định hoặc đường dẫn được vẽ nhầm | Kiểm tra từng construct, hướng mũi tên và các quan hệ giả thuyết |
| Lỗi chỉ xuất hiện sau khi thêm một construct | Construct mới có indicator trùng, hằng số hoặc dữ liệu không tương thích | Chạy mô hình sau từng lần thêm construct để tìm phần gây lỗi |
| Dữ liệu có hai cột gần như giống nhau | Đa cộng tuyến rất cao, dù chưa chắc là trùng tuyệt đối | Kiểm tra VIF và tương quan giữa các biến trong SPSS |
Một trường hợp dễ bỏ sót là tên biến. SmartPLS thường đọc hàng đầu tiên của file CSV làm tên indicator. Nếu tên bị trùng, có khoảng trắng bất thường hoặc file bị lưu lại với delimiter khác, kết quả import có thể không giống bảng dữ liệu bạn nhìn thấy trong Excel. Hãy mở trực tiếp file CSV bằng Notepad hoặc một trình soạn thảo văn bản để xem dấu phân cách giữa các cột.
Cách xử lý theo thứ tự ưu tiên
Hãy xử lý từ bước ít ảnh hưởng đến dữ liệu gốc nhất. Sau mỗi thay đổi, lưu một bản mới và chạy lại PLS Algorithm. Cách này giúp bạn biết chính xác thay đổi nào đã giải quyết lỗi.
Tạo một bản sao dữ liệu và mô hình
Lưu file CSV ban đầu thành một bản chỉ đọc, sau đó tạo bản làm việc mới. Trong SmartPLS, bạn cũng nên sao chép project hoặc lưu phiên bản trước khi sửa. Nếu xóa biến ngay trên file gốc, bạn sẽ khó giải trình vì sao số indicator và mẫu phân tích thay đổi.
Ghi lại số dòng, số cột, tên các construct, số indicator của từng construct và số quan sát hợp lệ. Đây là thông tin cần đối chiếu sau mỗi lần import. Nếu đang dùng file .sav, hãy xuất một bản .csv sạch chỉ gồm các biến dùng trong mô hình, không đưa mã người trả lời, thời gian trả lời hay cột ghi chú vào nếu chúng không phải biến phân tích.
Kiểm tra biến hằng số và biến bị nhập sai
Mở dữ liệu trong SPSS và chọn Analyze > Descriptive Statistics > Frequencies. Đưa toàn bộ indicator vào ô Variables, sau đó xem mỗi biến có bao nhiêu giá trị khác nhau. Một indicator Likert mà tất cả người trả lời đều có cùng một giá trị sẽ không cung cấp thông tin biến thiên cho mô hình.
Nếu một cột chỉ có giá trị 3, bạn chưa nên kết luận rằng người trả lời đồng thuận tuyệt đối. Có thể bạn đã kéo nhầm công thức trong Excel, dán cùng một cột vào nhiều vị trí hoặc mã hóa câu hỏi sai. So sánh dữ liệu với file thu thập ban đầu. Nếu lỗi thuộc về nhập liệu, sửa từ nguồn và ghi rõ bản dữ liệu đã thay thế.
Tìm các cột trùng hoặc quan hệ tuyến tính hoàn hảo
Trong SPSS, chọn Analyze > Correlate > Bivariate, đưa các indicator nghi ngờ vào phân tích và xem ma trận tương quan. Tương quan bằng 1 hoặc -1 giữa hai biến là dấu hiệu rất mạnh cho thấy chúng trùng hoàn toàn hoặc một biến là bản đảo dấu của biến kia. Bạn cũng có thể kiểm tra bằng Excel với công thức so sánh từng dòng giữa hai cột.
Nếu hai indicator thật sự có cùng nội dung do nhập trùng, giữ lại biến đúng với bảng hỏi và loại bản sao. Nếu hai biến có nội dung khác nhau nhưng người trả lời lại cho cùng một mẫu điểm, hãy kiểm tra cách thu thập và mã hóa trước khi xóa. Việc loại biến chỉ vì tương quan cao cần được giải thích theo nội dung thang đo, không chỉ dựa vào việc làm cho phần mềm chạy được.
Xử lý reverse-coded item đúng cách
Một câu hỏi phủ định cần được reverse code trước khi đánh giá thang đo. Với thang Likert 1 đến 5, giá trị mới thường được tính bằng 6 - giá trị cũ. Với thang 1 đến 7, công thức tương ứng là 8 - giá trị cũ. Bạn phải dùng đúng cận dưới và cận trên của bảng hỏi thực tế.
Tạo cột mới, chẳng hạn SAT3_R, thay vì ghi đè lên cột gốc. Sau đó kiểm tra Frequencies của cả cột cũ và cột mới. Nếu reverse code làm xuất hiện giá trị ngoài khoảng cho phép, công thức hoặc mã missing đang có vấn đề. Đừng đảo ngược một biến chỉ vì outer loading thấp. Hãy dựa vào wording của biến trong bảng hỏi.
Kiểm tra mã missing và kiểu dữ liệu
Trong SPSS, xem Variable View để kiểm tra Type, Decimals và Missing. Một ô trống, chữ NA, dấu chấm, số 99 và số 0 có thể được xử lý khác nhau. Nếu bảng hỏi dùng 99 cho câu không trả lời nhưng bạn đưa 99 vào SmartPLS như một điểm Likert, trung bình và tương quan sẽ bị méo.
Khi xuất CSV, chỉ giữ các hàng đáp viên hợp lệ và các cột indicator cần thiết. Tên cột nên ngắn, duy nhất, không chứa dấu tiếng Việt hoặc ký tự đặc biệt. Sau khi import lại, mở Data View trong SmartPLS và kiểm tra vài dòng đầu, vài dòng giữa và vài dòng cuối. Đừng chỉ nhìn số lượng cột ở màn hình import.
Kiểm tra lại measurement model
Mở mô hình trong SmartPLS và xác nhận mỗi indicator được nối với đúng construct. Một indicator không được kéo nhầm vào hai construct nếu bạn đang xây dựng reflective measurement model thông thường. Kiểm tra cả các construct không có indicator, indicator bị bỏ quên và mũi tên structural model bị vẽ ngược.
Nếu bạn vừa thêm một construct, hãy chạy PLS Algorithm trước khi thêm các đường dẫn mới. Nếu chạy được, thêm structural paths từng nhóm. Đây là cách tách lỗi dữ liệu khỏi lỗi cấu trúc. Với PLS-SEM, quy trình đánh giá measurement model trước rồi mới đánh giá structural model phù hợp với logic hai bước được trình bày bởi (Anderson và Gerbing, 1988).
Chạy lại và đọc các chỉ số liên quan
Sau khi sửa, chạy Calculate > PLS-SEM Algorithm. Nếu chạy thành công, kiểm tra Outer Loadings, Construct Reliability and Validity, Discriminant Validity và Collinearity Statistics. Outer loading từ 0.7 trở lên thường được sử dụng trong PLS-SEM (Chin, 1998), nhưng một loading thấp không tự động chứng minh rằng biến là nguyên nhân của singular matrix.
Với measurement model, CR từ 0.7 và AVE từ 0.5 trở lên là các mốc thường được báo cáo (Fornell và Larcker, 1981). HTMT dưới 0.85, hoặc dưới 0.90 với các construct gần nhau về khái niệm, là ngưỡng được đề xuất bởi (Henseler và cộng sự, 2015). Nếu sau khi hết lỗi singular matrix bạn gặp AVE thấp, hãy xem hướng dẫn AVE nhỏ hơn 0 5 phải làm sao, vì đó là vấn đề đánh giá thang đo khác với lỗi ma trận suy biến.
Bảng dưới đây là số liệu minh họa, không phải kết quả từ nghiên cứu của bạn. Các cột được đặt theo nhóm chỉ số thường thấy trong output SmartPLS để bạn biết cần nhìn vào đâu sau khi chạy lại.
| Construct | Indicator | Outer loading | Mean | STDEV | VIF | Trạng thái minh họa |
|---|---|---|---|---|---|---|
| PU | PU1 | 0.812 | 3.84 | 0.76 | 1.86 | Có thể giữ để đánh giá tiếp |
| PU | PU2 | 0.774 | 3.71 | 0.81 | 1.79 | Có thể giữ để đánh giá tiếp |
| PU | PU3 | 0.693 | 3.65 | 0.88 | 2.11 | Xem nội dung và độ tin cậy trước khi loại |
| SAT | SAT1 | 0.841 | 3.92 | 0.70 | 2.04 | Có thể giữ để đánh giá tiếp |
| SAT | SAT2 | 0.829 | 3.88 | 0.73 | 2.04 | Có thể giữ để đánh giá tiếp |
VIF dưới 5 là mốc thường được dùng để xem xét đa cộng tuyến trong báo cáo PLS-SEM (Hair và cộng sự, 2019). Bảng minh họa chỉ cho thấy hình dạng thông tin cần đọc. Bạn không được chép các con số này vào chương 4 hoặc dùng chúng để kết luận cho mẫu của mình.
Tách mô hình để xác định điểm gây lỗi
Nếu các bước trên chưa giải quyết được, tạo một bản mô hình tối giản với một construct và hai hoặc ba indicator. Chạy thử, sau đó thêm từng construct. Khi lỗi quay lại, construct hoặc nhóm dữ liệu vừa thêm là nơi cần kiểm tra.
Cách này chậm hơn việc xóa hàng loạt biến, nhưng có giá trị chẩn đoán rõ ràng. Bạn có thể lập bảng theo dõi gồm tên construct, indicator, số lần chạy và kết quả. Nếu lỗi chỉ xảy ra khi thêm structural path, kiểm tra hướng mũi tên và các đường dẫn vòng lại chính construct đó.
Khi nào phải quay lại thu thêm dữ liệu
Singular matrix phần lớn là lỗi dữ liệu hoặc mô hình, nên thu thêm mẫu không phải giải pháp đầu tiên. Nếu một cột bị hằng số vì bạn nhập nhầm, thêm 100 đáp viên vào cùng một cột lỗi vẫn không làm ma trận khả nghịch. Bạn cần sửa quy trình nhập hoặc loại bản ghi không hợp lệ trước.
Việc thu thêm dữ liệu đáng cân nhắc khi mẫu hiện tại có quá ít biến thiên vì nhóm người trả lời thực sự chọn cùng một mức, nhiều hàng bị thiếu, hoặc một nhóm đối tượng chưa xuất hiện trong mẫu. Khi đó, hãy xem lại tiêu chí sàng lọc và cách phân phối bảng hỏi. Cỡ mẫu và số indicator cần được thiết kế từ đầu, thay vì chờ lỗi rồi bổ sung vài dòng cho đủ số.
Nếu mô hình gặp vấn đề phân biệt giữa các construct, tăng mẫu có thể giúp ước lượng ổn định hơn nhưng không sửa được hai khái niệm có nội dung trùng nhau. Chẳng hạn HTMT cao cần được xem lại định nghĩa construct, wording của indicator và mô hình lý thuyết. Bạn có thể tham khảo giá trị phân biệt không đạt phải làm sao và HTMT lớn hơn 0 9 phải làm sao để xử lý đúng vấn đề sau khi mô hình đã chạy.
Không nên tạo dữ liệu giả, nhân bản dòng hoặc sửa điểm của đáp viên để né lỗi. Những thao tác đó làm thay đổi phân phối dữ liệu và có thể bị hỏi lại khi hội đồng yêu cầu đối chiếu bảng hỏi, file dữ liệu và output.
Cách giải trình với giảng viên hướng dẫn
Bạn nên gửi một ghi chú ngắn gồm bốn phần: thông báo lỗi, kiểm tra đã thực hiện, thay đổi đã áp dụng và kết quả sau khi chạy lại. Đính kèm tên phiên bản dữ liệu, số quan sát, danh sách indicator bị kiểm tra và ảnh chụp màn hình nếu cần. Cách trình bày này cho thấy bạn sửa theo nguyên nhân, không xóa biến theo cảm tính.
Cách viết vào luận văn: “Trong quá trình kiểm tra dữ liệu, mô hình ban đầu phát sinh lỗi singular matrix do [mô tả nguyên nhân đã xác minh]. Nhóm nghiên cứu đã [cách xử lý], sau đó chạy lại PLS-SEM Algorithm trên bộ dữ liệu gồm [số quan sát] quan sát hợp lệ. Kết quả cho thấy mô hình [đã chạy ổn định/chưa đạt yêu cầu], vì vậy các phân tích tiếp theo được thực hiện trên phiên bản dữ liệu [tên phiên bản].”
Chỉ điền phần trong ngoặc vuông bằng thông tin có thật. Nếu bạn loại một indicator, ghi rõ mã biến, lý do và ảnh hưởng đến số lượng indicator của construct. Nếu xử lý missing hoặc loại đáp viên, nêu tiêu chí loại trước khi báo cáo số mẫu cuối cùng.
Cách phòng từ bước thiết kế
Ngay khi thiết kế bảng hỏi, đặt mã indicator duy nhất và tạo một data dictionary gồm tên biến, nội dung, chiều đo, khoảng giá trị và ghi chú reverse code. Ví dụ, PU1 đến PU4 chỉ dùng cho construct Perceived Usefulness, còn SAT1 đến SAT3 dùng cho Satisfaction. Không dùng lại một mã cho hai câu hỏi khác nhau.
Trước khi thu chính thức, nhập thử một số dòng vào file mẫu và chạy qua toàn bộ quy trình import. Kiểm tra xem câu phủ định có được đánh dấu, lựa chọn trả lời có nằm đúng khoảng và mã không trả lời có được tách khỏi điểm Likert hay không. Một bảng hỏi có nhiều lựa chọn nhưng file xuất chỉ có một mã duy nhất cho mọi người là dấu hiệu cần dừng lại kiểm tra.
Khi thu dữ liệu, giữ nguyên file gốc và tạo nhật ký làm sạch. Mỗi lần sửa cần có ngày, tên cột, lý do, thao tác và số dòng bị ảnh hưởng. Sau đó mới tạo file phân tích. Quy trình này giúp bạn quay lại phiên bản trước nếu SmartPLS báo lỗi mới sau khi chỉnh sửa.
Trong mô hình, kiểm tra measurement model trước khi vẽ quá nhiều structural paths. Đặt tên construct rõ ràng, tránh copy một indicator sang nhiều nhóm chỉ để hoàn thiện sơ đồ. Nếu đang dùng SmartPLS 4, hãy ghi lại phiên bản phần mềm và tùy chọn phân tích, vì menu và cách hiển thị có thể khác với tài liệu hướng dẫn SmartPLS 3.
Lỗi thường gặp khi sửa
Lỗi đầu tiên là xóa ngay indicator có outer loading thấp. Singular matrix thường xuất hiện trước khi SmartPLS tính đầy đủ outer loading, nên bạn có thể đang loại nhầm biến. Hãy kiểm tra trùng cột, biến hằng số và missing trước.
Lỗi thứ hai là thay toàn bộ missing bằng giá trị trung bình mà không ghi chú. Cách này có thể che mất vấn đề thu thập dữ liệu và tạo quan hệ nhân tạo giữa các cột. Nếu cần xử lý missing, hãy nêu quy tắc, tỷ lệ bản ghi bị ảnh hưởng và lý do chọn quy tắc đó.
Lỗi thứ ba là chuyển CSV qua nhiều phần mềm. Excel có thể tự đổi mã số, định dạng ngày hoặc dấu thập phân. Sau mỗi lần lưu, kiểm tra lại file bằng trình soạn thảo văn bản và import một bản thử trước khi thay file chính.
Lỗi thứ tư là nhầm singular matrix với CR quá cao hoặc AVE thấp. Khi mô hình đã chạy, CR lớn hơn 0.95 có thể gợi ý các indicator quá giống nhau và cần được đánh giá về nội dung, nhưng đó là bước chẩn đoán thang đo khác. Xem thêm CR lớn hơn 0 95 phải làm sao thay vì tiếp tục sửa file theo thông báo singular matrix.
Câu hỏi thường gặp
Singular matrix trong SmartPLS là gì
Đó là tình trạng ma trận dùng trong phép tính không khả nghịch, thường vì có cột trùng nhau, biến không có phương sai hoặc quan hệ tuyến tính hoàn hảo giữa các biến. Thông báo này không tự cho biết chính xác indicator nào gây lỗi, nên bạn cần kiểm tra dữ liệu và tách mô hình từng bước.
Xóa biến nào để hết lỗi singular matrix
Bạn chưa nên xóa biến theo thứ tự xuất hiện trong bảng hoặc xóa biến có mã cuối cùng. Hãy tìm cột trùng, cột hằng số, biến tổng bị đưa vào cùng nhóm và mã missing sai trước. Chỉ xóa indicator khi có lý do về dữ liệu hoặc nội dung thang đo, đồng thời ghi lại quyết định.
Đổi sang SmartPLS 4 có hết lỗi không
Đổi phiên bản có thể loại trừ một vấn đề tương thích, nhưng không sửa được dữ liệu trùng hoặc biến hằng số. Hãy lưu project, xuất lại CSV sạch và kiểm tra cấu trúc mô hình trước khi kết luận lỗi nằm ở phiên bản phần mềm.
Có cần thu thêm mẫu khi gặp lỗi này không
Thường chưa cần. Nếu nguyên nhân là nhập sai, missing hoặc construct nối sai, bạn phải sửa nguyên nhân đó trước. Thu thêm mẫu chỉ hợp lý khi dữ liệu thật sự thiếu biến thiên, thiếu nhóm đối tượng hoặc số bản ghi hợp lệ chưa đáp ứng thiết kế nghiên cứu.
Có thể bỏ qua lỗi để chạy Bootstrapping không
Không. Bootstrapping dựa trên mô hình đã ước lượng được, nên nếu PLS Algorithm chưa chạy ổn định thì kết quả bootstrapping không có nền tảng để diễn giải. Trước hết hãy làm cho measurement model và structural model chạy được, sau đó mới đặt số bootstrap subsamples và đọc confidence interval.
Sau khi mở lại file, bạn hãy tạo bản sao, kiểm tra cột hằng số và cột trùng trong SPSS, rồi chạy mô hình tối giản trước khi sửa thêm. Nếu muốn kiểm tra dữ liệu .sav hoặc .csv và chạy lại phân tích trên chính file của bạn, bạn có thể dùng M4 phân tích của DoThesis.