2017-10-26 6 views
-1

私は従属変数を並べ替えることでデータを減らしたいと思っています。例えば。 A + B + C -> D私は情報を失うことなくDを出すことができます。Rのデータに依存関係を見つけるにはどうすればよいですか? (A + B + C - > D)

d <- data.frame(A = c(1, 2, 3, 4, 5), 
       B = c(2, 4, 6, 4, 2), 
       C = c(3, 4, 2, 1, 0), 
       D = c(6, 10, 11, 9, 9)) 

データの精度が悪い可能性があるため、Dの最終値が正しくありません。

これらの依存関係をRでどのように識別でき、どのようにして相関の精度に影響を与えることができますか? (例えば、80または90パーセントのカットオフを使用する)

findCorrelationはペアワイズ相関のみを考慮します。複数の相関のための関数はありますか?

+1

私はあなたの質問を理解していません。複数の相関が意味するものを明確にすることはできますか(ペアごとの相関 'cor(d)'とは対照的に)? –

+0

A + B + C→Dの相関か、相関と呼ばれない相関か? – Dan

+0

したがって、 'A'、' B'、 'C'と' D'の線形結合(* any *?)の相関係数を計算しますか?'cor(d $ A + d $ B + d $ C、d $ D)'のようなもの? –

答えて

1

データに依存関係を見つけたい場合は、findCorrelationと「複数の相関のための関数がありますか?」と尋ねてください。我々は

...あなたのための適切な手法を明確にする必要があることを答えるために、あなたは、部分的な相関関係をしたいですか:第三またはそれ以上の他の変数をコントロールしながら、

部分的な相関関係は二つの変数の相関であります

または準部分相関?

半部分相関は、2番目の変数からのみ削除された3番目以上の他の変数からの2つの変数の相関です。

定義から{ppcor}Decent YouTube videoスピーカーは回帰の詳細と少しの混乱/混乱の関係があります。

Fer Arceの提案に...それは正しいことです。回帰はこれらの方法にかなり関連していますが、予測子が相関すると(マルチ共線性と呼ばれる)、issuesが発生します(gungの回答を参照)。あなたは、予測子をPCAを介して直交(無相関)にすることができますが、係数を非常に難しく解釈するようにします。

実装:

library(ppcor) 
d <- data.frame(A = c(1, 2, 3, 4, 5), 
       B = c(2, 4, 6, 4, 2), 
       C = c(3, 4, 2, 1, 0), 
       D = c(6, 10, 11, 9, 9)) 
# partial correlations 
pcor(d, method = "pearson") 
# semi-partial correlations 
spcor(d, method = "pearson") 
1

あなたはLM

summary(lm(D ~ A + B + C, data =d)) 

に合わせしかし、私はあなたが正確に何を求めているかわからない場合は、「相関」を得ることができます。つまり、これであなたはR^2を得ることができます。あなたが探しているのはそうだと思いますか?

+0

私は自分のデータに依存関係を見つけたいと思っています。だから私はすべてのデータを見なければなりません。あなたはD〜A + B + Cをどのように知っていますか?それは小さいデータで見ることができますが、大きなデータレイクではありません。 – Dan

+0

A、B、C、Dは例です...実際のデータには200列あります...そこには、 ... – Dan

+0

あなたの記事であなたが言及した構造なので、私はそれを知っています。実際には、複数のR-二乗は0.95に似ており、調整されたものは少し低く0.8です。 –

0

質問は、より大きなデータセットの依存関係をどのように検出できるかについてです。 これは、たとえばsummary(lm(D ~ A + B + C, data =d))などの他の回答で提案されているように、すべての可能性を手動でチェックすることで可能です。しかし、これは多くの手作業を意味します。

いくつかの可能性があります。たとえば、RReliefFまたはSpearman Correlationのような1つのフィルタメソッドに対して。彼らは相関を見て、 データセットとの距離を測定する。

相関行列が、私は特に見つける片道役に立つと完全に合法的ではあるが可能性2は、すべての

+0

フィーチャ抽出では、Dに関する予測はできません。PCAを入力フィーチャセットで使用して直交セットを抽出することはできますが、それでも同様の問題が残っています。 スピアマン相関はピアソン相関の特殊なケースであり、まさに「相関」と言うときに人々が意味するものではありません。非適合の相関は、通常ピアソン相関である。 – russellpierce

1

(...任意の相関関係を排除するという意味)の独立したcompontentsを見つけようと、Feature Extraction方法のリカPCAを使用してLDAICAされます分散インフレ率を見ることが有用である。 VIFを記述するWikipediaのarticleはかなり良いです。

私はVIFを使用するように、いくつかの理由:

  1. 代わりの変数は、他の共変量と他の人が代わりに掛けるよりも多くの同一直線上にあるどのしようとすると、相関行列の行または列を見て、神単独では、モデル内の他のすべてのモデルとの関係を表す単一の数値が得られます。
  2. VIFを段階的に使用すると、ほとんどの場合、予測領域内の共線性がなくなります。
  3. carパッケージのvif()関数を使用するか、計算する独自の関数を作成することで、簡単に取得できます。

VIFは、あなたのモデルのすべての共変量/予測子を、あなたが順番に含めた各予測子に対して回帰することによって、本質的に機能します。 1/(1-R^2)の値を取り、R^2の値を取得します。これはあなたに番号vif >= 1を与えます。選択した共変量モデルで説明されている応答スペースの変動量としてR^2と考える場合、共変動変数のいずれかがたとえば0.80R^2になると、vif5になります。

あなたはあなたの快適度の閾値を選択します。ウィキペディアの記事では、vif10は、プレディクタが行くべきであることを示しています。私は5が良い閾値であると教えられました。多くの場合、vif2未満にすることは、私の最終的なモデルに大きな影響を与えないで、すべての予測変数に対して簡単になることがわかりましたadjusted-R^2

私は予測因子を意味する、5のさえvifように感じるが0.80R^2とそのコンパニオン予測因子によってモデル化することができるが、限界情報の寄与を予測因子はそれだけの価値は非常に低くはないことを意味しています。私は、私のメインモデルに大きな影響を与えないで(> 0.1の削減をR^2)与えられたモデルに対して私のvifsのすべてを最小化する戦略をとっています。このような影響があると、vifが私よりも高い場合でも、プレディクタはまだ多くの情報を保持しているということがわかります。

他のアプローチがあります。エイリアスとマトリックスでガイドされた変数の選択方法についても、Lawson's paperを調べることができます。私が上で議論したものよりも実装するのは難しいが、特に巧妙だと感じています。

関連する問題