2016-09-09 19 views
0

私はMANOVAを実行しようとしています。 7従属変数と6グループを表すカテゴリ独立変数があります。summary.manovaのエラー - 残差に順位不備がある

データはこちらから入手できます:テキストの上http://pastebin.com/fqXNjWtr

[ダウンロード]をクリックします。私は(私がダウンロードしたファイルの名前はあなたのための同じであるべきだと思う。私は、Macintoshオペレーティングシステムを使用しています)このようなRでファイルを読んでいます:

> df <- read.csv("~/downloads/fqXNjWtr.txt", stringsAsFactors = F) 
> str(df) 

'data.frame': 244 obs. of 8 variables: 
$ var1    : num 0.3 0 0.312 0 0.643 ... 
$ var2    : num 0 0.125 0 0.375 0.0714 ... 
$ var3    : num 0 0.0625 0.0625 0 0.0714 ... 
$ var4    : num 0.2 0.3125 0.0625 0.0625 0 ... 
$ var5    : num 0.1 0.25 0.438 0.188 0 ... 
$ var6    : num 0.2 0.0625 0.125 0.0625 0.0714 ... 
$ var7    : num 0.2 0.188 0 0.312 0.143 ... 
$ cluster_assignment: int 1 4 2 6 1 4 3 3 4 6 ... 

私は、従属変数を作成しています、 DV

> df$DV <- as.matrix(df[, 1:7]) 

私はその後、MANOVAております:

> mv_out <- manova(DV ~ cluster_assignment, data = df) 
Call: 
    manova(DV ~ cluster_assignment, data = df) 

Terms: 
       cluster_assignment Residuals 
resp 1     5.160838 6.738524 
resp 2     3.384101 3.622020 
resp 3     0.000200 3.365565 
resp 4     0.065469 2.743549 
resp 5     0.889180 8.019733 
resp 6     0.442187 5.884827 
resp 7     3.133188 7.736993 
Deg. of Freedom     1  242 

Residual standard errors: 0.1668686 0.1223398 0.1179292 0.1064752 0.1820423 0.1559406 0.1788045 
Estimated effects may be unbalanced 

私はその後、summary()機能をしようとすると、私はこれを取得しますエラー:いくつかの他のpostsに基づいて

> summary(mv_out) 
Error in summary.manova(mv_out) : residuals have rank 6 < 7 

、これは十分な変数の数与えられた観測値、または予測因子のいくつかはmulticollinearであってもよいことがないことを示唆しているようです。しかし、これはこのデータのケースではないようです。

> cor(df[, 1:7) 

      var1   var2  var3   var4  var5  var6  var7 
var1 1.00000000 -0.417605243 -0.05274197 -0.118358341 -0.25617705 0.06089533 -0.4360312 
var2 -0.41760524 1.000000000 -0.07181878 0.008873035 -0.29523300 -0.33954011 0.1958746 
var3 -0.05274197 -0.071818782 1.00000000 0.131137673 -0.11624079 -0.14408909 -0.2951076 
var4 -0.11835834 0.008873035 0.13113767 1.000000000 -0.14361455 -0.24308229 -0.1491373 
var5 -0.25617705 -0.295233000 -0.11624079 -0.143614554 1.00000000 -0.03180183 -0.2383027 
var6 0.06089533 -0.339540114 -0.14408909 -0.243082287 -0.03180183 1.00000000 -0.3215075 
var7 -0.43603124 0.195874568 -0.29510761 -0.149137349 -0.23830275 -0.32150753 1.0000000 

私は何が起こっているのか疑問に思います。

+1

あなたが提供したデータは、現実的な再現可能な例に簡単に変換できません。ヘルプを求める場合は、提供することを検討してください。 –

+0

私はどの部分がうまくいかないのか尋ねてもよいですか? –

+0

データを共有するにはどうすればよいですか? –

答えて

2

'tol'パラメータを?summary.manovaに設定すると、このエラーを解決できます。 ds $ DVは、rowSumsが1であるため、デフォルトのtol = 1e-7でランク不足のテストに失敗します。これは、意図した結果を生成しない可能性があります。

summary(mv_out,tol=0) 
         Df Pillai approx F num Df den Df Pr(>F) 
df$cluster_assignment 1 1.2106 -193.79  7 236  
Residuals    242  
+0

「?summary.manova」によると、「残差があるかどうかを判断する際の許容差ランク不足]を減らすことができますが、そうすることでかなり不正確な結果が得られ、高い相関を取り除くために応答を変換する方が通常は良いでしょう。この場合、どのようなタイプの変換が適切でしょうか?なぜrowSums = 1ですか?ありがとう。 –

+1

申し訳ありませんが、私はそれをより良く説明できました。 rowSums = 1は、df $ DVの列がリニアに独立していないことを意味します。これはmanovaの前提です。一方の列は常に他方の列に依存します。小さな丸め誤差を除いて、たとえばdf $ var7 = 1-rowSums(df $ DV [、1:6])です。見積もりは、あなたの現在のコードを使って 'print(mv_out)'から安定しているはずです。 F統計量を向上させるために、任意の6つの従属変数で 'summary.manova'でテストを実行することができます。 – danielson

関連する問題