Mam problem z wilcox.test
w R. Mój obiekt danych to macierz, w której pierwsza kolumna zawiera nazwę, a wszystkie pozostałe kolumny zawierają pomiar (wyrażenie genu) , która jest liczbą:Test Wilcoxona w R-x musi być błędem numerycznym
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 ...
Dla wszystkich rzędach 2000 roku chcą aby sprawdzić, czy istnieje różnica pomiędzy 2 określonych częściach matrycy. Próbowałem to na 4 różne sposoby:
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
Więc jak widać, tylko wtedy, gdy używam as.numeric()
na wartościach już numerycznych dostaję wynik bez komunikatu o błędzie dla testu Wilcoxona, ale wyniki całkowicie różnią się od t.test
wyników, nawet jeśli nie powinny.
Ręczne sprawdzenie za pomocą narzędzia online pokazuje, że wyniki t.test
przy użyciu wartości as.numeric()
są nieprawidłowe.
Wszelkie sugestie dotyczące tego, jak rozwiązać ten problem i wykonać prawidłowy test Wilcoxon? Jeśli potrzebujesz więcej informacji, daj mi znać.
Nie jestem pewien, dlaczego jesteś uzyskiwanie błąd w kodzie bez 'as.numeric', ale' as.numeric (o nazwie myMatrix [i, 2: 87], o nazwie myMatrix [I, 88: 98 ]) 'ignoruje drugi argument i zwraca ten sam wynik co' as.numeric (myMatrix [i, 2: 87]) '. Wygląda na to, że faktycznie chcesz 'as.numeric (myMatrix [i, 2: 87]), jak w postaci liczbowej (myMatrix [i, 88: 98])'. – eipi10
Możesz uruchomić to: 'colnames (myMatrix) [który (unlist (lapply (1: dim (myMatrix) [2], function (x) class (myMatrix [[x]])))! =" Numeric ") ] ' Aby sprawdzić, czy wszystkie kolumny są numeryczne. – Nightwriter
Dzięki za pomoc! Podczas używania as.numeric() dla obu argumentów, wydaje się działać! Uruchamianie twojej linii Nightwriter zwraca wszystkie nazwy kolumn, nawet jeśli wartości wewnątrz są wyświetlane liczbowo (zobacz mój pierwszy przykład kodu powyżej) – stefanie