используя chisq.test в R (тесты хи-квадрат)

Я пытаюсь прочитать CSV-файл, а затем создать 3 матрицы из каждой строки из CSV-файла, а затем применить критерий хи-квадрата с использованием метода chisq.test(matrix), но почему-то эти методы не работают.

Это дает мне следующую ошибку:

Ошибка в сумме (x): недопустимый «тип» (список) аргумента

С другой стороны, если я просто создаю матрицу, передающую некоторые числа, она работает нормально. Я также пробовал запускать str на двух типах матриц.

  1. Который я создаю, используя строку из CSV-файла. str на что дает:

    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
    
  2. Матрица, созданная с использованием некоторых чисел. str на что дает:

    num [1:2, 1:3] 1 2 3 4 5 6
    

Может кто-нибудь, пожалуйста, скажите мне, что здесь происходит?


person dhaval2025    schedule 09.03.2011    source источник
comment
Вы передаете в chisq.test список, а не матрицу. Давайте посмотрим ваш код или даже лучше. Небольшой воспроизводимый пример.   -  person Roman Luštrik    schedule 09.03.2011
comment
Предлагаемая литература: cran.r-project.org/doc/manuals /R-lang.html#Объекты   -  person nico    schedule 09.03.2011


Ответы (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
person Andrie    schedule 09.03.2011