6  Rをつかったバイクラスタリング分析の実習

6.1 準備しましょう

6.1.1 サンプルデータを用います

  • RStudioでプロジェクトを開いているか確認してくださいね
  • exametrikaが持っているJ35S515を例に
library(exametrika)
dat <- J35S515
dat$U |> head()
     Item01 Item02 Item03 Item04 Item05 Item06 Item07 Item08 Item09 Item10
[1,]      0      0      0      0      0      0      0      1      1      0
[2,]      1      1      0      0      0      0      1      0      1      1
[3,]      1      0      0      0      0      0      1      1      0      1
[4,]      0      0      1      0      0      0      0      1      1      0
[5,]      1      0      0      0      0      0      1      0      0      0
[6,]      1      0      0      0      0      0      0      0      0      0
     Item11 Item12 Item13 Item14 Item15 Item16 Item17 Item18 Item19 Item20
[1,]      0      0      0      0      0      1      0      0      0      0
[2,]      1      1      1      1      0      0      1      0      0      0
[3,]      0      0      0      0      0      0      0      0      1      1
[4,]      0      0      0      0      0      0      0      0      0      0
[5,]      0      0      0      0      0      0      0      0      0      0
[6,]      0      0      0      0      0      0      0      0      0      0
     Item21 Item22 Item23 Item24 Item25 Item26 Item27 Item28 Item29 Item30
[1,]      0      0      0      0      0      0      0      0      0      0
[2,]      1      1      1      1      1      1      1      0      0      0
[3,]      0      0      0      0      0      0      0      0      0      0
[4,]      1      0      1      1      1      1      1      1      0      0
[5,]      0      0      0      0      0      0      0      0      0      0
[6,]      1      1      0      0      0      0      1      0      0      0
     Item31 Item32 Item33 Item34 Item35
[1,]      1      1      1      0      0
[2,]      1      1      0      0      0
[3,]      1      0      0      0      0
[4,]      1      1      0      1      0
[5,]      1      1      1      0      1
[6,]      1      1      0      0      1

6.2 バイクラスタリングの実行

  • 何やら色々出てきますので,順次解説していきます
result <- Biclustering(dat, nfld = 5, ncls = 6, method = "B")
Biclustering is chosen.

iter 1 log_lik -7966.66                                                         
iter 2 log_lik -7442.38                                                         
iter 3 log_lik -7266.35                                                         
iter 4 log_lik -7151.01                                                         
iter 5 log_lik -7023.94                                                         
iter 6 log_lik -6984.82                                                         
iter 7 log_lik -6950.27                                                         
iter 8 log_lik -6939.34                                                         
iter 9 log_lik -6930.89                                                         
iter 10 log_lik -6923.5                                                         
iter 11 log_lik -6914.56                                                        
iter 12 log_lik -6908.89                                                        
iter 13 log_lik -6906.84                                                        
iter 14 log_lik -6905.39                                                        
iter 15 log_lik -6904.24                                                        
iter 16 log_lik -6903.28                                                        
iter 17 log_lik -6902.41                                                        
iter 18 log_lik -6901.58                                                        
iter 19 log_lik -6900.74                                                        
iter 20 log_lik -6899.86                                                        
iter 21 log_lik -6898.9                                                         
iter 22 log_lik -6897.84                                                        
iter 23 log_lik -6896.66                                                        
iter 24 log_lik -6895.35                                                        
iter 25 log_lik -6893.92                                                        
iter 26 log_lik -6892.4                                                         
iter 27 log_lik -6890.85                                                        
iter 28 log_lik -6889.32                                                        
iter 29 log_lik -6887.9                                                         
iter 30 log_lik -6886.66                                                        
iter 31 log_lik -6885.67                                                        
iter 32 log_lik -6884.98                                                        
iter 33 log_lik -6884.58                                                        
result
Biclustering Analysis

Biclustering Reference Matrix Profile
       Class1 Class2 Class3 Class4 Class5 Class6
Field1 0.6236 0.8636 0.8718  0.898  0.952  1.000
Field2 0.0627 0.3332 0.4255  0.919  0.990  1.000
Field3 0.2008 0.5431 0.2281  0.475  0.706  1.000
Field4 0.0495 0.2455 0.0782  0.233  0.648  0.983
Field5 0.0225 0.0545 0.0284  0.043  0.160  0.983

Field Reference Profile Indices
       Alpha     A Beta     B Gamma       C
Field1     1 0.240    1 0.624   0.0  0.0000
Field2     3 0.493    3 0.426   0.0  0.0000
Field3     1 0.342    4 0.475   0.2 -0.3149
Field4     4 0.415    5 0.648   0.2 -0.1673
Field5     5 0.823    5 0.160   0.2 -0.0261

                              Class 1 Class 2 Class 3 Class 4 Class 5 Class 6
Test Reference Profile          4.431  11.894   8.598  16.002  23.326  34.713
Latent Class Ditribution      157.000  64.000  82.000 106.000  89.000  17.000
Class Membership Distribution 146.105  73.232  85.753 106.414  86.529  16.968

Field Membership Profile
         CRR   LFE Field1 Field2 Field3 Field4 Field5
Item01 0.850 1.000  1.000  0.000  0.000  0.000  0.000
Item31 0.812 1.000  1.000  0.000  0.000  0.000  0.000
Item32 0.808 1.000  1.000  0.000  0.000  0.000  0.000
Item21 0.616 2.000  0.000  1.000  0.000  0.000  0.000
Item23 0.600 2.000  0.000  1.000  0.000  0.000  0.000
Item22 0.586 2.000  0.000  1.000  0.000  0.000  0.000
Item24 0.567 2.000  0.000  1.000  0.000  0.000  0.000
Item25 0.491 2.000  0.000  1.000  0.000  0.000  0.000
Item11 0.476 2.000  0.000  1.000  0.000  0.000  0.000
Item26 0.452 2.000  0.000  1.000  0.000  0.000  0.000
Item27 0.414 2.000  0.000  1.000  0.000  0.000  0.000
Item07 0.573 3.000  0.000  0.000  1.000  0.000  0.000
Item03 0.458 3.000  0.000  0.000  1.000  0.000  0.000
Item33 0.437 3.000  0.000  0.000  1.000  0.000  0.000
Item02 0.392 3.000  0.000  0.000  1.000  0.000  0.000
Item09 0.390 3.000  0.000  0.000  1.000  0.000  0.000
Item10 0.353 3.000  0.000  0.000  1.000  0.000  0.000
Item08 0.350 3.000  0.000  0.000  1.000  0.000  0.000
Item12 0.340 4.000  0.000  0.000  0.000  1.000  0.000
Item04 0.303 4.000  0.000  0.000  0.000  1.000  0.000
Item17 0.276 4.000  0.000  0.000  0.000  1.000  0.000
Item05 0.250 4.000  0.000  0.000  0.000  1.000  0.000
Item13 0.237 4.000  0.000  0.000  0.000  1.000  0.000
Item34 0.229 4.000  0.000  0.000  0.000  1.000  0.000
Item29 0.227 4.000  0.000  0.000  0.000  1.000  0.000
Item28 0.221 4.000  0.000  0.000  0.000  1.000  0.000
Item06 0.216 4.000  0.000  0.000  0.000  1.000  0.000
Item16 0.216 4.000  0.000  0.000  0.000  1.000  0.000
Item35 0.155 5.000  0.000  0.000  0.000  0.000  1.000
Item14 0.126 5.000  0.000  0.000  0.000  0.000  1.000
Item15 0.087 5.000  0.000  0.000  0.000  0.000  1.000
Item30 0.085 5.000  0.000  0.000  0.000  0.000  1.000
Item20 0.054 5.000  0.000  0.000  0.000  0.000  1.000
Item19 0.052 5.000  0.000  0.000  0.000  0.000  1.000
Item18 0.049 5.000  0.000  0.000  0.000  0.000  1.000
Latent Field Distribution
           Field 1 Field 2 Field 3 Field 4 Field 5
N of Items       3       8       7      10       7

Model Fit Indices
Number of Latent Class : 6
Number of Latent Field: 5
Number of EM cycle: 33 
                   value
model_log_like -6884.582
bench_log_like -5891.314
null_log_like  -9862.114
model_Chi_sq    1986.535
null_Chi_sq     7941.601
model_df        1160.000
null_df         1155.000
NFI                0.750
RFI                0.751
IFI                0.878
TLI                0.879
CFI                0.878
RMSEA              0.037
AIC             -333.465
CAIC           -6416.699
BIC            -5256.699

6.2.1 アレイプロット

  • うまく分類できたかどうかをアレイプロットで確認できます。
plot(result, type = "Array")

6.2.2 受験生とクラスの関係

6.2.2.1 クラスメンバーシップとプロファイル

クラスの分布をプロットします。

内部では,各受験者がどのクラスに所属するかの確率を推定しています。この確率をクラス・メンバーシップ・プロファイルといいます。数値で出力することも,プロットすることも可能です。

## 丸めて出力
round(result$ClassMembership, 6) |> head()
             Class1   Class2   Class3   Class4   Class5 Class6
Student001 0.936080 0.048748 0.015172 0.000000 0.000000      0
Student002 0.000000 0.000247 0.000035 0.786721 0.212997      0
Student003 0.935542 0.048932 0.015526 0.000000 0.000000      0
Student004 0.000002 0.107544 0.153249 0.739188 0.000016      0
Student005 0.943018 0.015802 0.041179 0.000000 0.000000      0
Student006 0.020760 0.005789 0.973443 0.000008 0.000000      0
## 図で出力
plot(result, type = "CMP", students = 1:6, nr = 2, nc = 3)

6.2.2.2 推定された所属クラス

この所属確率が最も高いものが,推定される所属クラスとなります。

result$ClassEstimated |> head()
[1] 1 4 1 4 1 3

6.2.2.3 潜在クラス分布

メンバーシップは所属確率で,それをクラスごとに集計して分布を見るのがClass Membership Distributionです。

推定される所属クラス(推定値)で集計して分布を見るのがLatent Class Distributionです。

プロットのtype="LCD"で両者が同時にプロットされます。

  • 棒グラフで表現されているのがLatent Class Distributionです。
  • 折れ線グラフで表現されているのがClass Membership Distributionです。
plot(result, type = "LCD")

6.2.3 項目とフィールドの関係

内部では,各項目がどのフィールドに所属するかの確率を推定しています。この確率をフィールドメンバーシッププロファイルといい,FieldMembershipという名前で保存されています。

round(result$FieldMembership, 5)
       Field1 Field2  Field3  Field4 Field5
Item01      1      0 0.00000 0.00000      0
Item02      0      0 1.00000 0.00000      0
Item03      0      0 1.00000 0.00000      0
Item04      0      0 0.00000 1.00000      0
Item05      0      0 0.00000 1.00000      0
Item06      0      0 0.00000 1.00000      0
Item07      0      0 1.00000 0.00000      0
Item08      0      0 1.00000 0.00000      0
Item09      0      0 1.00000 0.00000      0
Item10      0      0 1.00000 0.00000      0
Item11      0      1 0.00000 0.00000      0
Item12      0      0 0.00012 0.99988      0
Item13      0      0 0.00000 1.00000      0
Item14      0      0 0.00000 0.00000      1
Item15      0      0 0.00000 0.00000      1
Item16      0      0 0.00000 1.00000      0
Item17      0      0 0.00000 1.00000      0
Item18      0      0 0.00000 0.00000      1
Item19      0      0 0.00000 0.00000      1
Item20      0      0 0.00000 0.00000      1
Item21      0      1 0.00000 0.00000      0
Item22      0      1 0.00000 0.00000      0
Item23      0      1 0.00000 0.00000      0
Item24      0      1 0.00000 0.00000      0
Item25      0      1 0.00000 0.00000      0
Item26      0      1 0.00000 0.00000      0
Item27      0      1 0.00000 0.00000      0
Item28      0      0 0.00000 1.00000      0
Item29      0      0 0.00000 1.00000      0
Item30      0      0 0.00000 0.00000      1
Item31      1      0 0.00000 0.00000      0
Item32      1      0 0.00000 0.00000      0
Item33      0      0 1.00000 0.00000      0
Item34      0      0 0.00000 1.00000      0
Item35      0      0 0.00000 0.00000      1

6.2.4 クラスとフィールドの関係

6.2.4.1 クラス参照ベクトル

フィールドにおけるクラスごと正答率をプロットすることができます。クラス参照ベクトルClass Reference Vectorと呼ばれます。

plot(result, type = "CRV")

これは数値で確認することもできます。

result$FRP
           Class1     Class2     Class3     Class4    Class5    Class6
Field1 0.62358989 0.86362311 0.87179729 0.89818946 0.9515799 1.0000000
Field2 0.06270755 0.33323234 0.42554990 0.91879529 0.9904507 1.0000000
Field3 0.20081642 0.54305218 0.22811379 0.47498694 0.7061406 1.0000000
Field4 0.04954076 0.24549999 0.07824042 0.23310794 0.6482247 0.9828854
Field5 0.02254831 0.05446897 0.02836654 0.04301178 0.1603798 0.9834310

6.2.4.2 フィールド参照プロファイル

フィールドの特徴に注目し,クラスごと正答率をプロットすることができます。この図をフィールド参照プロファイルField Reference Profileといいます。

plot(result, type = "FRP", nr = 2, nc = 3)

6.2.5 テストとクラスの関係

6.2.5.1 テスト参照プロファイル

テスト得点とクラスの分布を同時にプロットするものをテスト参照プロファイルTest Reference Profileといいます。

  • 棒グラフで表現されているのがLatent Class Distributionです。
  • 折れ線グラフで表現されているのがTest Reference Profileで,クラスごとの期待得点です。
plot(result, type = "TRP")

6.3 ランクラスタリングの実行

  • 推定方法をRに変えると,潜在クラスが潜在ランクになります
    • アルゴリズムとしては,LRAの時と同じ順序性を保ったフィルタ行列を通しているだけです
result.R <- Biclustering(dat, nfld = 5, ncls = 6, method = "R")
Ranklustering is chosen.

iter 1 log_lik -8097.56                                                         
iter 2 log_lik -7669.21                                                         
iter 3 log_lik -7586.72                                                         
iter 4 log_lik -7568.24                                                         
iter 5 log_lik -7561.02                                                         
iter 6 log_lik -7557.34                                                         
iter 7 log_lik -7557.36                                                         

Strongly ordinal alignment condition was satisfied.
result.R
Ranklustering Analysis

Ranklustering Reference Matrix Profile
        Rank1  Rank2  Rank3 Rank4 Rank5 Rank6
Field1 0.6495 0.7920 0.8809 0.914 0.938 0.970
Field2 0.0936 0.2775 0.6175 0.904 0.984 0.998
Field3 0.2247 0.3208 0.4403 0.616 0.751 0.899
Field4 0.1039 0.1860 0.2810 0.361 0.603 0.841
Field5 0.0329 0.0547 0.0934 0.130 0.262 0.598

Field Reference Profile Indices
       Alpha     A Beta     B Gamma C
Field1     1 0.142    1 0.650     0 0
Field2     2 0.340    3 0.617     0 0
Field3     3 0.176    3 0.440     0 0
Field4     4 0.242    5 0.603     0 0
Field5     5 0.336    6 0.598     0 0

                              Rank 1 Rank 2 Rank 3 Rank 4 Rank 5 Rank 6
Test Reference Profile         4.834  7.932 12.376 16.345 21.272 28.239
Latent Rank Ditribution      143.000 88.000 77.000 90.000 76.000 41.000
Rank Membership Distribution 133.892 96.100 83.688 84.373 73.955 42.992

Field Membership Profile
         CRR   LFE Field1 Field2 Field3 Field4 Field5
Item01 0.850 1.000  1.000  0.000  0.000  0.000  0.000
Item31 0.812 1.000  1.000  0.000  0.000  0.000  0.000
Item32 0.808 1.000  1.000  0.000  0.000  0.000  0.000
Item21 0.616 2.000  0.000  1.000  0.000  0.000  0.000
Item23 0.600 2.000  0.000  1.000  0.000  0.000  0.000
Item22 0.586 2.000  0.000  1.000  0.000  0.000  0.000
Item24 0.567 2.000  0.000  1.000  0.000  0.000  0.000
Item25 0.491 2.000  0.000  1.000  0.000  0.000  0.000
Item11 0.476 2.000  0.000  1.000  0.000  0.000  0.000
Item26 0.452 2.000  0.000  1.000  0.000  0.000  0.000
Item07 0.573 3.000  0.000  0.000  1.000  0.000  0.000
Item03 0.458 3.000  0.000  0.000  1.000  0.000  0.000
Item33 0.437 3.000  0.000  0.000  1.000  0.000  0.000
Item27 0.414 3.000  0.000  0.000  0.999  0.001  0.000
Item02 0.392 4.000  0.000  0.000  0.005  0.995  0.000
Item09 0.390 4.000  0.000  0.000  0.024  0.976  0.000
Item10 0.353 4.000  0.000  0.000  0.000  1.000  0.000
Item08 0.350 4.000  0.000  0.000  0.000  1.000  0.000
Item12 0.340 4.000  0.000  0.000  0.000  1.000  0.000
Item04 0.303 4.000  0.000  0.000  0.000  1.000  0.000
Item17 0.276 4.000  0.000  0.000  0.000  1.000  0.000
Item05 0.250 4.000  0.000  0.000  0.000  1.000  0.000
Item13 0.237 4.000  0.000  0.000  0.000  0.997  0.003
Item34 0.229 5.000  0.000  0.000  0.000  0.094  0.906
Item29 0.227 5.000  0.000  0.000  0.000  0.273  0.727
Item28 0.221 5.000  0.000  0.000  0.000  0.017  0.983
Item06 0.216 5.000  0.000  0.000  0.000  0.000  1.000
Item16 0.216 5.000  0.000  0.000  0.000  0.000  1.000
Item35 0.155 5.000  0.000  0.000  0.000  0.000  1.000
Item14 0.126 5.000  0.000  0.000  0.000  0.000  1.000
Item15 0.087 5.000  0.000  0.000  0.000  0.000  1.000
Item30 0.085 5.000  0.000  0.000  0.000  0.000  1.000
Item20 0.054 5.000  0.000  0.000  0.000  0.000  1.000
Item19 0.052 5.000  0.000  0.000  0.000  0.000  1.000
Item18 0.049 5.000  0.000  0.000  0.000  0.000  1.000
Latent Field Distribution
           Field 1 Field 2 Field 3 Field 4 Field 5
N of Items       3       7       4       9      12

Model Fit Indices
Number of Latent Rank : 6
Number of Latent Field: 5
Number of EM cycle: 7 
                   value
model_log_like -7273.063
bench_log_like -5891.314
null_log_like  -9862.114
model_Chi_sq    2763.498
null_Chi_sq     7941.601
model_df        1166.164
null_df         1155.000
NFI                0.652
RFI                0.655
IFI                0.764
TLI                0.767
CFI                0.765
RMSEA              0.052
AIC              431.170
CAIC           -5684.386
BIC            -4518.223
Strongly Ordinal Alignment Condition is Satisfied.
Weakly Ordinal Alignment Condition is Satisfied.

6.3.1 アレイプロット

  • うまく分類できたかどうかをアレイプロットで確認できます。
plot(result.R, type = "Array")

6.3.2 受験生とランクの関係

6.3.2.1 ランクメンバーシップとプロファイル

ランクの分布をプロットします。

内部では,各受験者がどのランクに所属するかの確率を推定しています。この確率をランク・メンバーシップ・プロファイルといいます。数値で出力することも,プロットすることも可能です。

## 丸めて出力
round(result.R$ClassMembership, 6) |> head()
              Rank1    Rank2    Rank3    Rank4    Rank5    Rank6
Student001 0.730627 0.267616 0.001756 0.000000 0.000000 0.000000
Student002 0.000000 0.000002 0.007688 0.320350 0.671693 0.000266
Student003 0.613298 0.382232 0.004470 0.000000 0.000000 0.000000
Student004 0.000041 0.029656 0.756517 0.213429 0.000357 0.000000
Student005 0.758238 0.240019 0.001743 0.000000 0.000000 0.000000
Student006 0.256715 0.690129 0.053139 0.000018 0.000000 0.000000
## 図で出力
plot(result.R, type = "CMP", students = 1:6, nr = 2, nc = 3)

6.3.2.2 推定された所属ランク

この所属確率が最も高いものが,推定される所属ランクとなります。

result.R$ClassEstimated |> head()
[1] 1 5 1 3 1 2

6.3.2.3 潜在ランク分布

メンバーシップは所属確率で,それをランクごとに集計して分布を見るのがRank Membership Distributionです。

推定される所属クラス(推定値)で集計して分布を見るのがLatent Rank Distributionです。

プロットのtype="LRD"で両者が同時にプロットされます。

  • 棒グラフで表現されているのがLatent Rank Distributionです。
  • 折れ線グラフで表現されているのがRank Membership Distributionです。
plot(result.R, type = "LRD")

6.3.3 項目とフィールドの関係

内部では,各項目がどのフィールドに所属するかの確率を推定しています。この確率をフィールドメンバーシッププロファイルといい,FieldMembershipという名前で保存されています。

round(result.R$FieldMembership, 5)
       Field1 Field2  Field3  Field4  Field5
Item01      1      0 0.00000 0.00000 0.00000
Item02      0      0 0.00450 0.99550 0.00000
Item03      0      0 1.00000 0.00000 0.00000
Item04      0      0 0.00000 1.00000 0.00000
Item05      0      0 0.00000 1.00000 0.00000
Item06      0      0 0.00000 0.00027 0.99973
Item07      0      0 1.00000 0.00000 0.00000
Item08      0      0 0.00000 1.00000 0.00000
Item09      0      0 0.02413 0.97587 0.00000
Item10      0      0 0.00000 1.00000 0.00000
Item11      0      1 0.00000 0.00000 0.00000
Item12      0      0 0.00000 1.00000 0.00000
Item13      0      0 0.00000 0.99741 0.00259
Item14      0      0 0.00000 0.00000 1.00000
Item15      0      0 0.00000 0.00000 1.00000
Item16      0      0 0.00000 0.00012 0.99988
Item17      0      0 0.00000 1.00000 0.00000
Item18      0      0 0.00000 0.00000 1.00000
Item19      0      0 0.00000 0.00000 1.00000
Item20      0      0 0.00000 0.00000 1.00000
Item21      0      1 0.00000 0.00000 0.00000
Item22      0      1 0.00000 0.00000 0.00000
Item23      0      1 0.00000 0.00000 0.00000
Item24      0      1 0.00000 0.00000 0.00000
Item25      0      1 0.00000 0.00000 0.00000
Item26      0      1 0.00000 0.00000 0.00000
Item27      0      0 0.99948 0.00052 0.00000
Item28      0      0 0.00000 0.01708 0.98292
Item29      0      0 0.00000 0.27290 0.72710
Item30      0      0 0.00000 0.00000 1.00000
Item31      1      0 0.00000 0.00000 0.00000
Item32      1      0 0.00000 0.00000 0.00000
Item33      0      0 1.00000 0.00000 0.00000
Item34      0      0 0.00000 0.09368 0.90632
Item35      0      0 0.00000 0.00000 1.00000

6.3.4 ランクとフィールドの関係

6.3.4.1 ランク参照ベクトル

フィールドにおけるランクごと正答率をプロットすることができます。ランク参照ベクトルRank Reference Vectorと呼ばれます。

plot(result.R, type = "RRV")

これは数値で確認することもできます。

result.R$FRP
            Rank1      Rank2      Rank3     Rank4     Rank5     Rank6
Field1 0.64951141 0.79197342 0.88093148 0.9140316 0.9381373 0.9701273
Field2 0.09362918 0.27752126 0.61746787 0.9036746 0.9835653 0.9979939
Field3 0.22472428 0.32079306 0.44027355 0.6163989 0.7507110 0.8988009
Field4 0.10394873 0.18598451 0.28100007 0.3614656 0.6030432 0.8411943
Field5 0.03293073 0.05469207 0.09344104 0.1298351 0.2618470 0.5980969

6.3.4.2 フィールド参照プロファイル

フィールドの特徴に注目し,ランクごと正答率をプロットすることができます。この図をフィールド参照プロファイルField Reference Profileといいます。

plot(result.R, type = "FRP", nr = 2, nc = 3)

6.3.5 テストとランクの関係

6.3.5.1 テスト参照プロファイル

テスト得点とランクの分布を同時にプロットするものをテスト参照プロファイルTest Reference Profileといいます。

  • 棒グラフで表現されているのがLatent Rank Distributionです。
  • 折れ線グラフで表現されているのがTest Reference Profileで,ランクごとの期待得点です。
plot(result.R, type = "TRP")

6.4 Confirmatory Analysis

  • どの項目がどのフィールドに入るかを確認的に決めることができます。
    • confオプションに項目とフィールドの対応を記したベクトル,あるいは行列をあたえると,強制的にその割り振りで推定します。
    • 項目がテストの領域などに対応している仮説がある場合に便利です。
result.R.conf <- Biclustering(dat,
  nfld = 5, ncls = 6, method = "R",
  conf = c(
    1, 1, 1, 1, 1, 1, 1,
    2, 2, 2, 2, 2, 2, 2,
    3, 3, 3, 3, 3, 3, 3,
    4, 4, 4, 4, 4, 4, 4,
    5, 5, 5, 5, 5, 5, 5
  )
)
Ranklustering is chosen.
Confirmatory Clustering is chosen.

iter 1 log_lik -9468.24                                                         
iter 2 log_lik -9272.71                                                         
iter 3 log_lik -9258.44                                                         
iter 4 log_lik -9250.23                                                         
iter 5 log_lik -9244.67                                                         
iter 6 log_lik -9242.74                                                         
iter 7 log_lik -9243.17                                                         

Strongly ordinal alignment condition was satisfied.
plot(result.R.conf, type = "RRV")

plot(result.R.conf, type = "TRP")

6.5 Exploratory Analysis

  • 最適なフィールド数,クラス数がわからない場合は探索的なアプローチも可能です
    • 計算自体はそこまで遅くないので,適合度指標などを参考にグリッドサーチ(総当たり!)も悪くないアプローチです
    • IRMはノンパラメトリックな手法で潜在的なクラスを自動探索しますが,時間がかかります。
result.IRM <- IRM(dat, gamma_c = 1, gamma_f = 1, verbose = TRUE)
Warning in IRM(dat, gamma_c = 1, gamma_f = 1, verbose = TRUE): 'IRM' は廃止予定です
'Biclustering_IRM' を代わりに使って下さい
help("Deprecated") を見て下さい
iter 1: match=0 nfld=15 ncls=30
iter 2: match=0 nfld=12 ncls=27
iter 3: match=1 nfld=12 ncls=24
iter 4: match=2 nfld=12 ncls=23
iter 5: match=3 nfld=12 ncls=23
iter 6: match=0 nfld=12 ncls=23
iter 7: match=1 nfld=12 ncls=23
iter 8: match=2 nfld=12 ncls=23
iter 9: match=3 nfld=12 ncls=21
iter 10: match=4 nfld=12 ncls=21
iter 11: match=5 nfld=12 ncls=21
Adjusting classes: BIC=-99592.5 ncls=21 (min size < 20)
Adjusting classes: BIC=-99980.4 ncls=20 (min size < 20)
Adjusting classes: BIC=-99959.7 ncls=19 (min size < 20)
Adjusting classes: BIC=-99988.3 ncls=18 (min size < 20)
Adjusting classes: BIC=-100001.3 ncls=17 (min size < 20)
result.IRM
Bicluster Reference Matrix
        Class1 Class2  Class3 Class4 Class5 Class6 Class7 Class8 Class9 Class10
Field1       0 0.5000 0.61988 0.9722 0.8384 0.7619 0.9231 0.9697 0.8116  0.9259
Field2       0 0.0303 0.00000 0.0417 0.8485 0.8333 0.7500 0.7045 0.6957  0.9306
Field3       0 0.0379 0.43860 0.0729 0.2273 0.9048 0.1731 0.9091 0.2174  1.0000
Field4       0 0.0152 0.10526 0.0903 0.1717 0.4127 0.0000 0.1364 0.0580  0.8796
Field5       0 0.0871 0.00877 0.1302 0.1061 0.0833 0.5865 0.3068 0.8587  0.3958
Field6       0 0.2636 0.26316 0.2375 0.4000 0.0762 0.5692 0.3364 0.4261  0.5056
Field7       0 0.0947 0.07895 0.0469 0.0379 0.0714 0.3750 0.2045 0.1413  0.1389
Field8       0 0.0000 0.00877 0.0208 0.0000 0.0000 0.0000 0.1136 0.9348  0.0000
Field9       0 0.0379 0.00877 0.0000 0.0455 0.0000 0.0000 0.1818 0.0652  0.0000
Field10      0 0.0152 0.20175 0.1875 0.2879 0.1429 0.0962 0.1136 0.2174  0.1806
Field11      0 0.0152 0.01170 0.0000 0.0000 0.0000 0.0641 0.0152 0.0000  0.0648
Field12      0 0.0455 0.00000 0.0208 0.0808 0.0000 0.0000 0.0000 0.0000  0.0000
        Class11 Class12 Class13 Class14 Class15 Class16
Field1   0.8667  0.8571   0.949   0.971   0.963       1
Field2   0.9500  0.8857   1.000   1.000   1.000       1
Field3   1.0000  0.9286   0.985   1.000   0.989       1
Field4   0.9889  0.8000   0.960   0.971   0.993       1
Field5   0.2667  0.8929   0.492   1.000   0.944       1
Field6   0.4000  0.4800   0.594   0.557   0.702       1
Field7   0.1750  0.2500   0.848   0.413   0.728       1
Field8   0.0000  0.9429   0.000   0.130   0.967       1
Field9   0.7833  0.0571   0.621   0.500   0.733       1
Field10  0.1167  0.1714   0.227   0.174   0.278       1
Field11  0.0556  0.0762   0.253   0.174   0.304       1
Field12  0.0000  0.0000   0.000   0.217   0.000       1
                         class 1 class 2 class 3 class 4 class 5 class 6
Test Reference Profile         0   4.015   5.193   5.792   8.667   8.286
Latent class Ditribution       2  66.000  57.000  48.000  33.000  21.000
                         class 7 class 8 class 9 class 10 class 11 class 12
Test Reference Profile    11.692  11.136      13     14.5     15.2   18.143
Latent class Ditribution  26.000  22.000      23     36.0     30.0   35.000
                         class 13 class 14 class 15 class 16
Test Reference Profile     20.485   21.043   24.911       35
Latent class Ditribution   33.000   23.000   45.000       15
Latent Field Distribution
           Field 1 Field 2 Field 3 Field 4 Field 5 Field 6 Field 7 Field 8
N of Items       3       2       2       3       4       5       4       2
           Field 9 Field 10 Field 11 Field 12
N of Items       2        2        3        3

Model Fit Indices
Number of Latent Class : 16
Number of Latent Field: 12
Number of EM cycle: 6 
                   value
model_log_like -5664.270
bench_log_like -5891.314
null_log_like  -9862.114
model_Chi_sq    -454.089
null_Chi_sq     7941.601
model_df         998.000
null_df         1155.000
NFI                1.000
RFI                1.000
IFI                1.000
TLI                1.000
CFI                1.000
RMSEA              0.000
AIC            -2450.089
CAIC           -7683.768
BIC            -6685.768

6.6 多値への展開

  • 多値モデル(名義尺度)への展開も可能です。近日中に実装する予定です
    • Biclustering for Polydata
  • 多値モデル(順序尺度)への展開も可能なはずです。出来次第,実装する予定です

6.6.1 これができると何が嬉しいか

  • 表面上の類似性に基づく分類なので,データ生成メカニズムを仮定しません
    • 個人間比較を必要としないので,社会的態度のような仮定を満たさない心理的データの分析ができます
    • スコアではなく反応パターンで項目や受検者を分類します;生態学的妥当性の高い心理尺度の作成,利用ができます。