我正在尝试读取csv文件,然后从csv文件中的每一行创建3个矩阵,然后使用方法chisq.test(matrix)
应用卡方检验,但不知怎的,这种方法似乎失败了。
它给了我以下错误:
sum(x)中的错误:参数
的'type'(列表)无效
另一方面,如果我只是创建一个传递一些数字的矩阵,那么它可以正常工作。
我还尝试在两种类型的矩阵上运行str
。
我使用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
使用某些数字创建矩阵。 str
就是这样:
num [1:2, 1:3] 1 2 3 4 5 6
有人可以告诉我这里发生了什么吗?
答案 0 :(得分:2)
问题在于您的数据结构是一个列表数组,对于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