No.13282 数量化I類の関数の引数について  【Minami】 2010/08/18(Wed) 16:43

こんにちは。Rの関数の数量化I類の使用法について質問です。
データフレームとしてファイルから読み出したデータがあります。
dat <- read.table("sample.dat", sep="\t", header=TRUE)

x1 x2 y
1 1 9.3
1 2 7.6
1 2 11.9
1 2 12.4
1 3 14.7
2 1 17.7
2 1 10.4
2 1 19.8
2 2 21.1
2 3 15
2 3 20.5
3 1 23.6
3 2 27.4
3 3 31.2
3 3 33.4
使用法は下記の通りです。
qt1(dat, group, func.name=c("solve"))

判別分析(線形判別関数)
disc(data, group, func.name=c("solve"))
は,
result <- disc(dat[1:9], dat[10], func.name=c("solve"))
のように引数を指定すれば使用できるのですが,

数量化I類ではエラーになります。
エラー: all(sapply(dat[, 1:ncat], is.factor)) is not TRUE

データフレームの場合の引数の指定の仕方について教えてください。お願いします。

No.13283 Re: 数量化I類の関数の引数について  【青木繁伸】 2010/08/18(Wed) 17:14

http://aoki2.si.gunma-u.ac.jp/R/qt1.html
において,引数の説明として,
dat         データ行列またはデータ・フレーム
行がケース,列が変数。すべて factor であること
と書いてあります。

エラー: all(sapply(dat[, 1:ncat], is.factor)) is not TRUE

とは,不親切なエラーメッセージですけど,dat[, 1:ncat] に is.factor 関数で,全部 factor かと聞いたところ,「いいえ,factor じゃないです」となるので,stop する訳です。
取りあえず示された,15行3列のデータフレームで動かすには,まず,1,2列目を factor にしないといけません。やり方はいろいろありますけど,簡単のために for をつかって。
> for (i in 1:2) dat[,i] <- factor(dat[,i]) # 独立変数を factor にする
> a <- qt1(dat[,1:2], dat[,3])
> summary(a)
$coefficients
カテゴリースコア
x1.1 -7.29083
x1.2 -0.54708
x1.3 9.93417
x2.1 -2.44042
x2.2 0.17708
x2.3 2.26333
定数項 18.40000

$partial
偏相関係数 t 値 P 値
x1 0.92076 8.1757 3.0081e-06
x2 0.56428 2.3677 3.5551e-02

$prediction
観察値 予測値 残差
#1 9.3 8.6687 0.63125
#2 7.6 11.2862 -3.68625
#3 11.9 11.2862 0.61375
#4 12.4 11.2862 1.11375
#5 14.7 13.3725 1.32750
#6 17.7 15.4125 2.28750
#7 10.4 15.4125 -5.01250
#8 19.8 15.4125 4.38750
#9 21.1 18.0300 3.07000
#10 15.0 20.1163 -5.11625
#11 20.5 20.1163 0.38375
#12 23.6 25.8938 -2.29375
#13 27.4 28.5113 -1.11125
#14 31.2 30.5975 0.60250
#15 33.4 30.5975 2.80250

attr(,"class")
[1] "qt1"
そういうことでよろしく。

No.13284 Re: 数量化I類の関数の引数について  【Minami】 2010/08/18(Wed) 17:26

早速のお返事ありがとうございます。
少し分かりました。ゆっくり考えてみます。
ありがとうございました。

● 「統計学関連なんでもあり」の過去ログ--- 043 の目次へジャンプ
● 「統計学関連なんでもあり」の目次へジャンプ
● 直前のページへ戻る