Использование chisq.test в R (тесты хи-квадрат)
Я пытаюсь прочитать файл CSV, а затем создать 3 матрицы из каждой строки из файла CSV и затем применить критерий хи-квадрат, используя метод chisq.test(матрица), но каким-то образом этот метод, кажется, не удается.
Это дает мне следующую ошибку:
Ошибка в sum(x): неверный тип (список) аргумента
С другой стороны, если я просто создаю матрицу, пропуская несколько чисел, она работает нормально. Я также попытался запустить str на двух типах матриц.
Это я создаю, используя строку из файла CSV. на что дает:
List of 12 $ : int 3 $ : int 7 $ : int 3 $ : int 1 $ : int 7 $ : int 3 $ : int 1 $ : int 1 $ : int 1 $ : int 0 $ : int 2 $ : int 0 - attr(*, "dim")= int [1:2] 4 3
Матрица создана с использованием некоторых чисел. на что дает:
num [1:2, 1:3] 1 2 3 4 5 6
Может кто-нибудь, пожалуйста, скажите мне, что здесь происходит? Благодарю.
1 ответ
Проблема заключается в том, что ваша структура данных представляет собой массив списков, а для chisq.test() вам нужен массив числовых значений.
Одним из решений является приведение ваших данных в числовое значение с помощью as.numeric(). Я продемонстрирую это ниже. Другим решением было бы преобразовать результаты вашего read.csv() в числовые значения перед созданием массива.
# Recreate data
x <- structure(array(list(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12)), dim=c(3,4))
str(x)
List of 12
$ : num 1
$ : num 2
$ : num 3
$ : num 4
$ : num 5
$ : num 6
$ : num 7
$ : num 8
$ : num 9
$ : num 10
$ : num 11
$ : num 12
- attr(*, "dim")= int [1:2] 3 4
# Convert to numeric array
x <- array(as.numeric(x), dim=dim(x))
str(x)
num [1:3, 1:4] 1 2 3 4 5 6 7 8 9 10 ...
chisq.test(x)
Pearson's Chi-squared test
data: x
X-squared = 0.6156, df = 6, p-value = 0.9961
Warning message:
In chisq.test(x) : Chi-squared approximation may be incorrect