0

編集

だから、それは私の呼びかけの中で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 番目のケースではラベルはどうなるでしょうか。そして、どうすればそれらを取り戻すことができますか?

4

1 に答える 1

4

問題は、それminisetが であり、cast_dffactanal呼び出すことas.matrix(x)です。このas.matrix.cast_dfメソッドはrrownamesand rcolnames(すべてのreshape関数) を使用して「特別な次元名」を抽出します。

minisetこれらは(したがって、NULL行名は失われます)。あなたがどのように構築したかを知らなければ、miniset 私はここでこれ以上助けることはできません. (オブジェクトを作成したので、ある時点でreshape構築に慣れている必要があります。minisetcast_df

良いニュースはそれです

factanal(as.data.frame(miniset))

あなたが望むように動作します

于 2013-08-07T04:51:39.923 に答える