2

私は比較的初心者のユーザーであり、klaR パッケージ内の partimat() 関数を使用して、線形判別分析の決定境界をプロットしようとしていますが、同じエラーが発生し続けます。マニュアルに従って複数の異なる方法で引数を入力しようとしましたが、次のエラーが発生し続けます。

partimat.default(x, grouping, ...) のエラー: 少なくとも 2 つのクラスが必要です

これが私が与えた入力の例です:

partimat(sources1[,c(3:19)],grouping=sources1[,2],method="lda",prec=100)

ここで、データ テーブルは "sources1" という名前で読み込まれ、列 3 から 19 には説明変数が含まれ、列 2 にはクラスが含まれます。次のように式を入力して、それを試してみました:

partimat(sources1$group~sources1$tio2+sources1$v+sources1$cr+sources1$co+sources1$ni+sources1$rb+sources1$sr+sources1$y+sources1$zr+sources1$nb+sources1$la+ sources1$gd+sources1$yb+sources1$hf+sources1$ta+sources1$th+sources1$u,data=sources1)

これらは列見出しです。

この同じデータセットで問題なく LDA を実行できたので、何が問題なのかよくわかりません。

4

1 に答える 1

4

partimat.default関数のソースコードからgetAnywhere(partimat.default)それは述べています

if (nlevels(grouping) < 2) 
    stop("at least two classes required")

したがって、グループ化列を因子変数として定義していない可能性があります。あなたがsummary(sources1[,2])何を手に入れようとすると?それが要因でない場合は、試してみてください

sources1[,2] <- as.factor(sources1[,2])

または、方法2で、引数"sources1$"でこれらの変数名を検索するデータフレームを指定するときに、数式内の各変数名を削除してみてください。dataデータフレームを効果的に2回指定していると思いますが、たとえば、

"sources1$sources1$groups"

それよりも

"sources1$groups"

それ以上のエラーメッセージや再現可能な例(つまり、投稿にデータを含める)がなければ、実際に言うのは難しいです。

HTH

于 2012-06-27T17:07:56.530 に答える