Tôi gặp sự cố với wilcox.test
trong R. Đối tượng dữ liệu của tôi là ma trận trong đó cột đầu tiên chứa tên và tất cả các cột khác chứa phép đo biểu thức gen , là số:Kiểm tra Wilcoxon trong R - x phải là lỗi số
str(myMatrix)
'data.frame': 2000 obs. of 143 variables:
$ precursor : chr "name1" "name2" "name3" "name4" ...
$ sample1: num 1.46e-03 2.64e+02 1.46e-03 1.46e-03 1.46e-03 ...
$ sample2: num 1.46e-03 1.91e+02 1.46e-03 1.46e-03 1.46e-03 ...
$ sample3: num 1.46e-03 3.01e+02 1.46e-03 1.46e-03 4.96 ...
Đối với tất cả 2000 hàng tôi muốn kiểm tra xem có sự khác biệt giữa 2 phần nhất định của ma trận hay không. Tôi cố gắng này trong 4 cách khác nhau:
wilcox.test(as.numeric(myMatrix[i,2:87],myMatrix[i,88:98]))$p.value
#[1] 1.549484e-16
wilcox.test(myMatrix[i,2:87],myMatrix[i,88:98])$p.value
#Error in wilcox.test.default(myMatrix[i, 2:87], myMatrix[i, 88:98]) :
#'x' must be numeric
t.test(as.numeric(myMatrix[i,2:87],myMatrix[i,88:98]))$p.value
#[1] 0.2973957
t.test(myMatrix[i,2:87],myMatrix[i,88:98])$p.value
#[1] 0.3098505
Như bạn có thể thấy, chỉ khi tôi sử dụng as.numeric()
trên các giá trị đã được số tôi nhận được một kết quả mà không có một thông báo lỗi cho kỳ thi này Wilcoxon, nhưng kết quả hoàn toàn khác nhau từ t.test
kết quả ngay cả khi họ không nên.
Xác minh thủ công bằng cách sử dụng công cụ trực tuyến cho thấy rằng kết quả t.test
sử dụng giá trị as.numeric()
sai.
Bất kỳ đề xuất nào về cách tôi có thể giải quyết vấn đề này và thực hiện kiểm tra Wilcoxon chính xác? Nếu bạn cần thêm thông tin, hãy cho tôi biết.
Tôi không chắc tại sao bạn gặp lỗi trong mã mà không có 'as.numeric', nhưng' as.numeric (myMatrix [i, 2: 87], myMatrix [i, 88: 98 ]) 'bỏ qua đối số thứ hai và trả về kết quả tương tự như' as.numeric (myMatrix [i, 2: 87]) '. Có vẻ như bạn thực sự muốn 'as.numeric (myMatrix [i, 2: 87]), as.numeric (myMatrix [i, 88: 98])'. – eipi10
Bạn có thể chạy điều này: 'colnames (myMatrix) [mà (unlist (lapply (1: dim (myMatrix) [2], hàm (x) class (myMatrix [[x]])))! =" Số ") ] ' Để kiểm tra xem tất cả các cols đều là số. – Nightwriter
Cảm ơn sự giúp đỡ của bạn! Khi sử dụng as.numeric() cho cả hai đối số, nó có vẻ hoạt động! Chạy dòng của bạn Nightwriter trả về tất cả các tên cột, ngay cả khi các giá trị bên trong được hiển thị bằng số (xem ví dụ mã đầu tiên của tôi ở trên) – stefanie