R 判別分析 !!!判別分析の例2 {{outline}} ---- !!データ !注意 *判別するカテゴリーはファクター型 !NICERのデータを例に *学習者データと母語話者データより、以下の言語的特徴量を調べた結果のデータ・フレーム(all_indexes.df)を例として。 {{pre str(all_indexes.df) ## 'data.frame': 452 obs. of 12 variables: ## $ ID : chr "JPN501" "JPN502" "JPN503" "JPN504" ... ## $ Topic: chr "sports" "education" "education" "sports" ... ## $ Score: chr "4" "4" "3" "4" ... ## $ Type : int 134 160 121 139 175 124 151 98 104 99 ... ## $ Token: int 638 712 402 520 840 522 724 396 526 366 ... ## $ TTR : num 0.42 0.449 0.602 0.535 0.417 ... ## $ GI : num 7.5 8.48 8.53 8.62 8.54 ... ## $ MATTR: num 0.426 0.455 0.606 0.539 0.423 ... ## $ AWL : num 4.3 4.23 4.75 4.77 4 ... ## $ ASL : num 10.63 12.28 15.46 9.63 16.8 ... ## $ NoS : int 30 29 13 27 25 20 26 20 19 14 ... ## $ Lang : Factor w/ 2 levels "1","2": 2 2 2 2 2 2 2 2 2 2 ... }} !!MASSパッケージの中のlda()を使って !6つの説明変数により話者がL1かL2かを判別するモデル {{pre library(MASS) DA.model <- lda(Lang ~ Type + Token + MATTR + AWL + ASL + NoS, data=all_indexes.df) DA.model ## Call: ## lda(Lang ~ Type + Token + MATTR + AWL + ASL + NoS, data = all_indexes.df) ## ## Prior probabilities of groups: ## 1 2 ## 0.1570796 0.8429204 ## ## Group means: ## Type Token MATTR AWL ASL NoS ## 1 387.2676 1973.0986 0.4103297 4.751333 22.59186 45.66197 ## 2 126.2073 558.2415 0.4712071 4.361718 12.87662 22.06824 ## ## Coefficients of linear discriminants: ## LD1 ## Type -0.030430371 ## Token 0.001101204 ## MATTR 2.009154987 ## AWL -0.449549288 ## ASL -0.019658983 ## NoS 0.028913641 }} !判別精度 {{pre hyou <- table(all_indexes.df$Lang, predict(DA.model)$class) hyou ## ## 1 2 ## 1 67 4 ## 2 0 381 }} !判別率:全体の数のうち、正しく判別できたものの割合 {{pre 正しく判別できたもの: 67 + 381 = 448 全体の数      : 67 + 4 + 0 + 381 = 452 correct <- (hyou[1,1]+hyou[2,2])/sum(hyou) correct ## [1] 0.9911504 }} *DA.modelの場合、99%は正しく判別できている