編集
だから、それは私の呼びかけの中でlibrary(reshape)
、因子のラベル付けを壊しているようです. これは最小の例には含まれていませんでしたが、現在追加されています。例を作成する必要はありませんが、問題を再現するために必要です。データを形にするためにライブラリが必要ですfactanal()
。reshape のどの部分が壊れているのか、それを修正する方法はありますか?
元の質問
データに対して因子分析を実行しており、結果の出力方法に断続的な問題が発生しています。
次のようなデータセットを作成するとします。
library(reshape)
mock <- data.frame(
sample_name1 = sample(1:100),
sample_name2 = sample(1:100),
sample_name3 = sample(1:100),
s_amplename_4 = sample(1:100),
samplename5 = sample(1:100),
sa_mplen_a_me_6 = sample(1:100),
samplename7 = sample(1:100),
samplename8 = sample(1:100)
)
因子分析を実行します
factanal(mock, factors = 2)
行のラベルとしてアイテム名を使用して、出力を非常にきれいに印刷します。たとえば、次のようになります。
# Snip snip
Loadings:
Factor1 Factor2
sample_name1 -0.126 -0.105
sample_name2 -0.414
sample_name3 0.665
s_amplename_4 -0.314
samplename5 0.850
sa_mplen_a_me_6 -0.117
samplename7 0.442
samplename8 -0.139
この種の出力はまさに私が探しているものです。ただし、自分のデータに対して同じタイプの分析を実行すると (ここで長くなってしまい申し訳ありません)、次のようになります。
miniset <- structure(list(`clarity1` = c(2, 2, 2, 3, 4.5, 1.5, 1.5, 3.5,
2, 6, 2.5, 4, 1, 1.5, 6, 2, 5.5, 2, 2, 3, 1.5, 5, 3.5, 2, 1.5,
2.5, 3, 3, 2, 1),
`clarity2` = c(1.5, 2, 2, 2, 3.5, 5, 3, 5,
2, 4, 2, 2.5, 1, 1.5, 2, 4, 5, 2, 2, 3.5, 6, 1, 2, 1.5, 1, 2,
2, 3, 6.5, 1),
`clarity3` = c(3, 3.5, 2, 3.5, 5.5, 4, 6, 5.5,
2, 3, 3, 3.5, 1, 2.5, 2, 5, 5, 5, 2, 6.5, 5.5, 5, 5.5, 6, 3,
2, 2, 5, 4.5, 5.5),
`detail1` = c(3, 4, 2, 6, 5, 6.5, 5.5,
4, 3, 6, 2.5, 4, 1, 4, 2, 4.5, 7, 6.5, 2, 6.5, 6, 2, 6, 5, 2.5,
5.5, 4, 5.5, 6, 1.5),
`detail2` = c(3.5, 4, 4, 6.5, 4.5, 6,
4, 4.5, 2, 6, 2.5, 5, 2, 4, 3, 6, 7, 7, 2, 6.5, 6, 3, 6, 6, 2.5,
6, 3, 5, 6.5, 2.5),
`detail3` = c(2.5, 4, 2, 6, 5, 6, 6, 4,
2, 6, 2, 5, 2, 3, 3, 5, 6.5, 6, 2, 6.5, 7, 7, 5.5, 5, 3.5, 2,
3, 5, 6, 2),
`complete1` = c(2, 2.5, 2, 3, 3.5, 5.5, 2.5, 2.5,
2, 3, 3, 3.5, 2, 4, 3, 3, 7, 4, 2, 3, 6, 3, 5.5, 2, 3, 2, 2,
3, 6, 3),
`complete2` = c(3, 4.5, 2, 3, 4.5, 6, 6, 4.5, 3,
3, 3.5, 4, 2, 5, 3, 4, 7, 4, 2, 6, 7, 5, 5, 6, 3, 3, 5, 5, 6,
2),
`complete3` = c(3, 4.5, 2, 2.5, 4.5, 6.5, 5, 5, 2, 6.5,
3.5, 3.5, 1, 3, 3, 2.5, 7, 4, 2, 6, 1.5, 7, 5.5, 6.5, 3.5, 5.5,
3, 3, 2.5, 1),
`truthful1` = c(2.5, 2, 2, 3, 3.5, 2, 2, 2.5,
2, 3, 3, 2.5, 2, 3, 2, 2, 3.5, 3, 2, 3.5, 1.5, 1, 3.5, 2.5, 3,
2, 2, 3, 1.5, 1.5),
`truthful2` = c(2.5, 1.5, 2, 2, 3, 1.5,
2, 1, 1, 5.5, 3, 3.5, 1, 4.5, 2, 2, 5, 2, 2, 1.5, 4.5, 1, 3.5,
2, 3.5, 2.5, 2, 2, 4.5, 1),
`truthful3` = c(2, 1.5, 2, 3.5,
2.5, 2, 2, 2.5, 2, 2, 3.5, 2.5, 1, 1.5, 3, 2, 5, 3, 3, 2, 3.5,
1, 2, 1, 3.5, 2, 2, 2.5, 4.5, 1),
`relevant1` = c(1.5, 1.5,
2, 5, 2.5, 1.5, 2, 3.5, 2, 4.5, 2.5, 3.5, 1, 3.5, 3, 1.5, 5.5,
3.5, 2, 2, 6, 3, 3.5, 3, 1.5, 2, 3, 3, 6, 1),
`relevant2` = c(1.5,
3, 2, 2, 3.5, 1.5, 2.5, 5.5, 1, 2, 3.5, 2, 1, 1.5, 2, 4, 5.5,
2, 3, 5.5, 5.5, 1, 4, 5, 1.5, 2, 3, 2.5, 3, 1),
`relevant3` = c(1.5,
2, 2, 3, 2, 1, 2, 2, 1, 2, 1.5, 2.5, 1, 1.5, 2, 1.5, 5.5, 5,
2, 1, 7, 1, 1, 2, 1, 2, 3, 3, 2.5, 1)),
.Names = c("clarity1",
"clarity2", "clarity3", "detail1", "detail2", "detail3",
"complete1", "complete2", "complete3", "truthful1", "truthful2",
"truthful3", "relevant1", "relevant2", "relevant3"),
row.names = c(NA, 30L), class = c("cast_df", "data.frame"))
factanal(miniset, factors = 3)
結果はあまりきれいではありません。たとえば、次のようになります。
Loadings:
Factor1 Factor2 Factor3
[1,] 0.222 0.664
[2,] 0.559 0.524
[3,] 0.824
[4,] 0.740 0.361 0.282
[5,] 0.698 0.374 0.251
[6,] 0.783 0.278 0.265
[7,] 0.498 0.598 0.140
[8,] 0.796 0.227 0.204
[9,] 0.490 -0.240 0.835
[10,] 0.147 0.156 0.348
[11,] 0.697 0.324
[12,] 0.756
[13,] 0.319 0.811 0.204
[14,] 0.567 0.252 0.108
[15,] 0.320 0.690
そのため、ローディングのラベルとして適切なアイテム名を使用するのではなく、インデックスを取得するようになりました。それは私にとっては問題ありませんが、明日は R にあまり詳しくない教授と一緒に仕事をすることになり、おそらくラベルの欠如に不満を感じるでしょう。では、2 番目のケースではラベルはどうなるでしょうか。そして、どうすればそれらを取り戻すことができますか?