• 締切済み

相関係数 却求め方

初めてなんですけどぜひ皆様の力を貸してください。 問題が皆様にうまく伝わるかちょっと心配ですが・・・ たとえば今までは三つの数字a、b、cの相関係数がエクセルのCORRELなどの関数を使えばYになるのは分かったんですけど却に3番目の数字Cが幾つになれば相関係数がYになるかを求めたいんですがその求め方法を分かっている先生方がいらっしゃればぜひ教えで頂ければありがたいです。 ちなみに手書きではなくPCかエクセルを使っての方法であれば幸いです。 例:(1) 50,100,150の相関係数は1ですね。(CORREL関数)     50,100、?が幾つになれば相関係数が1になるんですか?   (2) 110,130,180の相関係数は0.970725ですね。(CORREL関数)    110,130、?が幾つになれば相関係数が0.970725になるんでか?という問題ですが・・・  ぜひよろしくお願い致します。

みんなの回答

  • backs
  • ベストアンサー率50% (410/818)
回答No.5

書き忘れましたが,B1とB2にどのようなデータを入力しても,いずれは相関係数が1になるので計算はやり続けますが,例えば,A1に0,A2に-8などといったデータを入力してしまうと恐ろしく時間が掛かります。もっと顕著なデータを入れれば,ほぼ無限ループ状態になるので、、、 そのようなときは[Esc]キーで中断することもできます。

  • backs
  • ベストアンサー率50% (410/818)
回答No.4

数学的に分からない場合はコンピュータに任せるのも1つの手段です。例えば,Excelのワークシート上において,A1:A3のセル範囲に1,2,3が入力されていて,B1:B3に50,100,0と入力しておきます。 [1][50][] [2][100] [3][0] そこで,「セルB3に入力されている値(=0)に1ずつ足していって,その度に相関係数を求めてセルC1に表示させる。これを相関係数が1になるまで繰り返す」というプログラムを書いてやると,以下のようになります。 Sub myprog() Dim cor As Double Range("C1").Select Do Until cor = 1 Range("B3") = Range("B3") + 1 cor = WorksheetFunction.Correl(Range("A1:A3"), Range("B1:B3")) ActiveCell = cor Loop End Sub これを試しに,ワークシートに [1][110][] [2][130] [3][0] と打ち込んで,プログラムを走らせてみてください。 どういうときにこうなるか? ⇒ 全部やってみればいいや!! ⇒ 手計算じゃ無理だからコンピュータに任せよう。 という理屈ですが、、、こんなのダメですかね(~_~)

usagi75
質問者

お礼

すごく魅力的便利だと思いますが自分はプログラム書き方をよく分からないのですみません。 貴重な時間を費してくれで大変ありがとうございます。

  • age_momo
  • ベストアンサー率52% (327/622)
回答No.3

単にExcelで条件に合う数値を求めるだけならゴールシークやソルバーを 使うことをお勧めします。ゴールシークは精度が悪いですがお手軽です。 ソルバーは精度を指定して(例えば1×10^-14)数字を探索しますから こちらの方がお勧めですが、アドインを登録して少し使い方を勉強する 必要があります。Excelの使い方のような手本書を参考にしてください。 今はゴールシークの使い方を説明しておきます。 最初にA1,A2,A3に1,2,3、B1,B2,B3に数字を入れます。 B1,B2は110,130ですが、B3にも適当に数字を入れます。(150ぐらい) B4には =CORREL(A1:A3,B1:B3) を入力します。次にツールバーの ツール⇒ゴールシーク... を選ぶとウィンドウが現れますのでそこにそれぞれ 『数値入力セル』  B4 『目標値』  0.970725 『変化させるセル』 B3 を入力してOKを押すと自動で条件に合う数字を探してくれます。 (最初にB3に入れる数字が悪い場合は見つからないことがありますので そういう時は数字を入れなおして再度、挑戦してみてください) ところで質問の条件なら相関係数が1になる数字は1個ですが 0.97になる数字は2個有りますので注意してください。(138でも 相関係数は0.970725になります。理由は相関係数の求め方を 考えれば明らかです)

usagi75
質問者

お礼

親切で分かりやすくありがとうございます。 大変役になりました。

  • kumav113
  • ベストアンサー率42% (3/7)
回答No.2

A : 50 100 150 B : 50 100 150 C : 110 130 180 とします。 AとBの相関係数は1になります。 AとCの相関係数は0.97になります。 もし、 B : 50 100 K だった場合、AとBの相関係数が1と分かっているならば、 相関係数の算出式、 (AとBの共分散)/{Aの標準偏差xBの標準偏差} に当てはめれば、K=150と出てきます。 AとCの場合も、同様にできます。

usagi75
質問者

お礼

親切でありがとうございました。

  • backs
  • ベストアンサー率50% (410/818)
回答No.1

相関係数は2変量のデータを対象とした指標ですよ。だから, 男性 = {170, 169, 183, 175} 女性 = {166, 159, 160, 162} というような2種類のデータがなければ計算できませんよね。 > 50,100,150の相関係数は1ですね。 そうなのですか? [50] [100] [150] [=correl("A1:A3")] とやっても相関係数は出ないのでは?

usagi75
質問者

補足

説明不足で大変すみません 相関係数は確かに2変量のデータを対象とした指標ですね。 ちょっとうっかりしでごめんなさい。 例A  (1) 1,2,3、     (2) 50、100、150、 ここでエクセルのCORREL関数を使用すると(1)と(2)の相関係数は1になるのは分かります。 ではA  (1) 1,2,3、      (2) 50,100、?のように変量(1)のデータをすべて1,2,3、 だと仮説した場合相関係数が1になろうとすれば3番目の数値は?という問題の求め方法なんですが・・    B  (1) 1,2,3、      (2) 100,130,180、  CORREL関数で問題Bの(1)と(2)の相関係数は0.970725になるのは分かりました。  ここで変量(1)のデータをすべて1,2,3だと仮説した場合相関係数が0.970725になろうとすれば3番目の数値は?、という問題です。 注意すべきの事は変量(1)の三つのデータはいつでも1,2,3、だという事です。変量(2)の1番目と2番目の数値も分かっていて3番目の数値の求め方法です。 ぜひ力を貸しで頂きだいです。

関連するQ&A