1

私は csv ファイルを読み取ろうとしており、csv ファイルの各行から 3 つの行列を作成し、メソッドを使用してカイ 2 乗検定を適用しようとしていますchisq.test(matrix)が、どういうわけかこのメソッドは失敗するようです。

次のエラーが表示されます。

sum(x) のエラー: 引数の無効な 'type' (リスト)

一方、単純にいくつかの数値を渡す行列を作成すると、うまく機能します。strまた、2 種類のマトリックスで実行してみました。

  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
    

誰かがここで何が起こっているのか教えてもらえますか?

4

1 に答える 1

2

問題は、データ構造がリストの配列であり、chisq.test() には数値の配列が必要なことです。

1 つの解決策は、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
于 2011-03-09T08:11:03.627 に答える