8 46 39 今回はExcelを使わずに、C#内でR2を計算する方法を検討してみました。, 要は、①回帰式を求める → ②回帰式を使って予測値を計算 → ソルバーは目隠しをして「こっちの方が高いぞ?こっちはもっと高いぞ?」と山に登って行くようなイメージだからです(今回は最小値ですが), そのため初期値の位置が違うと、本来の頂上よりも低い場所なのに「ここが一番高い気がするよ!」と答えを返してくる場合があります。 excel 最小二乗法 r2. cだけちょっと違うんですが(何でかよく分かってない)、ほとんど同じ答えが出てきました。, R^2の値が三次関数の方が直線よりも1に近いので、こちらの方がフィットはしているみたいです。, と、計算しておいて何なんですが、実は多項式ならExcelは自動で線を引いてくれる機能があります。 30 58 66 14 69 70 元生物系リケジョ、現在一児の母の主婦 21 29 37 まず、グラフ(散布図)を作ってしまいましょう。 (途中のプロセスは省略) グラフ要素の追加から近似曲線→その他の近似曲線オプション を選びます。. 今回は下記サイトを参考にして検討しました。 bellcurve.jp 要は、①回帰式を求める → ②回帰式を使って予測値を計算 → ③残差変動(実測値と予測値の差)を計算 という流れになります。 残差変動の二乗和を、全変動(実測値と平均との差)の二乗和で割り、 それを1から引いたものを決定係数R2としています。 ^yiは回帰式より求めた予測値、¯yは実測値の平均値、 予測値が実測値に近くなるほどR2は1に近づく、という訳です。 … 他人が作ったExcelの表ほど見づらい物はないのは事実ですが申し訳ありません、お付き合いください。, 「制約のない変数を非負数にする」のチェックボックスを外すのを忘れないようにしてください。, これは、変数などがマイナスにならないようにするための制約条件のようなものですが、今回求める「関数の変数」はマイナスになることがしばしばあります。, 散布図のプロットからExcelに勝手に計算してもらった近似線の値とR2乗値と比較してみて、さて、どうでしょうか? 最小二乗法の理論(1) ... Excel 15M' i¾ffi 10 tJ]fia Steetl g 538461 5.38 - 17 124 Steet2 Steeta . こんな風に、線から離れている距離をそれぞれ計ってみて、その合計の数値が小さければ小さいほどど真ん中をいい感じにとおっているよね?!, ・・・・ってやりたかったんですが、それぞれの点がプラス方向とマイナス方向に点在していて距離を合計したらプラスマイナス相殺しちゃうぞ・・・・で、困ったので『距離の二乗』を合計することにしたと。, 数学センスのある人はここで「ソルバーで最小値を求めるんだな!」って気が付くんですが 私はまーーーーったく気づきませんでした。, そう、最小二乗法では最小になる値を逐一計算しなければならない・・・!(そうとも限らないんですがそういうことにしておいてください), 「こっちの値はどうかな」「その値はどうかな?」「係数のそっちとこっちの組み合わせは?」, ということで、Excelに頼んでマシンパワーに任せてとにかく数字を当てはめていって、差の二乗の和が一番小さくなる近似線の係数(一次関数なら傾きaと切片b)を計算して出してもらおう!ってわけなんです。, 出席番号 “数学A するとこのようなウィンドウがポップするので R2は0.9947となり、こちらもほぼ同じ結果が得られました。, 最小二乗法を使って回帰式を求めることで、Excelで求めていたのと同じ結果を 3 89 93 予測値が実測値に近くなるほどR2は1に近づく、という訳です。, 以前のネタで決定係数には何種類か定義が有り、 それを1から引いたものを決定係数R2としています。, は回帰式より求めた予測値、は実測値の平均値、 5 68 46 点数” “数Ⅰ 色々ソフトを作ってみたり、 最小二乗法を使っているそうなので、それなりに近い式が得られることを期待。, ここで得た式(→回帰式)が、より近似出来ているほど予測値は実測値に近づき、 本当に助かりました、参考にさせて頂いたサイトの皆さんに感謝致します!, 家業のラーメン屋を手伝い中、 11 81 70 4 54 67 | ExcelのLINEST関数と全く同じ結果が得られました!, 近似式 で、aは-0.1429、bは10.457、cは0、 22 48 61 そこで利用するのが最小二乗法です。 ~ちなみに~ ※切片は考えなくてよいのか!?と疑問に思った方。平均を引いた前処理がここで活きています。平均を引くというのは要は次のような処理になっています。 ※架空のクラスのテストの点数です, 数学は得手不得手があるので、Aが苦手だとⅠも苦手なことが多いんですよねぇ(遠い目), ★計算がそのままできるExcelのシートのダウンロードする ブログを報告する. 16 65 58 こんな曲線を描くプロットにもぴったり当てはめることができます(正規分布・以外にもパラメータは二種類)。, ※ただし理論的な根拠なしに多項式や他の当てはめるのはあまり好ましくないので、あくまでも何か理由があっての場合に推奨, こうやってただの多項式ではない式を当てはめて試すことができるので、ソルバーで何をやっているのか理屈を知っておくといつか役に立つことも・・・・?あるかもしれないしないかもしれないしそれは分かりません(笑), 小難しいけど応用が利くソルバーでの最小二乗法ですが、実は注意しなければならないことがいくつかあります。, もし適用したいデータが膨大・数式が複雑・パラメータがたくさんだったりする場合には特に気を付けた方がいい事です。, ソルバーは最初はあてずっぽうに数字を当てはめて「これかな?こっちかな?」ってやっていくイメージなのです。, しかし徐々に正解の数値が絞れてくると「じゃああと0.001上げよう、もう0.001上げたらどうなる?」というように、小刻みに足を動かす感じになって計算が終わりそうなポイントを探します。, そしてその変化の差がある一定割合以下になると「ほぼ終わった」ということで計算終了でパラメータを返してきます(イメージ), そのため実は数式が複雑だったりパラメータが多かったりすると、変化の割合なのでまだ小さくなる余地があるのに止まってしまうことがあります。, そのため複雑であればあるほど、一回ではなく二回、三回とソルバーを使う方が、より正確な数値を引き出すことができます。, これはデータの側の問題なのですが、外れ値が入ったままだとやはり精度は落ちます。 23 39 42 1 78 69 結果として決定係数R2も1に近づくので、実はここが一番のポイント!, というわけで、あとはプログラムするだけです、サンプルソフトを作成しました、 24 60 74 28 65 59 25 48 50 ③残差変動(実測値と予測値の差)を計算 という流れになります。, 残差変動の二乗和を、全変動(実測値と平均との差)の二乗和で割り、 そのため、明らかに何かおかしいデータをシートに入力した段階で見つけてしまった場合、それが意味を持つデータでなければ取り除いて計算することも一つ視野に入れてみる方がいいかもしれません。, ソルバーは途中で止まってしまうことがあると言いましたが、実は困ったことに間違いを算出することもあります。, どうしてそんなことが生じるかというと 13 23 39 こんなイメージ・・・・もう少し傾きが大きくてもいいかな~?って感じですよね。, 私はフリーハンドで書いてみましたが、この線をもっと理論的に、「何でここに線引いたの?」って聞かれたらちゃんと理由を応えられるような線を書きたい!, そして近似線が「どうしてここの線が点たちからみて丁度いい感じのところを通っているのか?」というのの理由を表わすのが最小二乗法です(正確には違うけどイメージではそんな感じ), じゃあ最小二乗法ってどうやって線の位置を決めているのか?というと 直線近似の場合は、「線形近似」を選びます。 この時は、C#からExcelを起動→LINEST関数を呼んで計算する方法でしたが、 ※良識の範囲内でご利用ください。再配布などはお控えください。, ただ、くれぐれも数学苦手マンが作っているので、間違いがあるかもしれません。その点は大目に見てください(変なところがあったら教えていただければ幸いです), まずはExcelに入力していきます Excelのグラフの機能やデータ分析を使えばだれでも簡単に最小二乗法での近似線をかくことは一応できます。, というか、専門的な知識が無くてもかけるようにと準備されているのがグラフの「近似線の追加」や「データ分析」です。, 逆に言えば、やり方さえ分かれば自分で近似線の係数を計算して自分で線を引くことができます。, そんな面倒なこと、どうして自分で計算すんの?文明の利器頼ろうよ!!って声が聞こえてきそうなんですが・・・。, どんな応用が利くのかは・・・・とりあえず見て行ってください。 点数” 15 45 45 ソルバーとは何か?簡単ザックリ説明ソルバーについて, ソルバーが何なのかを知らずにエクセルで最小二乗法を計算しようとしている人はあまりいないとは思いますが・・・・一応お約束なんで言わせといてください。, ソルバーとはMicrosoft OfficeのExcelについている最適化分析ツールです。, 最適化分析ってなんぞ?⇒状況を希望の状態に近づけるためのパラメータを推定するものです。, ソルバーはExcelに標準装備されていて、Excelさえ持っていれば無償で使うことができますが、アドインソフトのため通常状態ではOFFになっています。, ファイル>オプション>アドイン>一番下のプルダウンを『Excelアドイン』にして設定をクリック 27 64 53 当たってますね!, ということで、入力がまず大変ですが、入力できればソルバー自体は簡単に動かすことができます。, 初っ端にも言いましたが、確かにこの程度の計算、大学生の課題でもなければExcelに計算してもらう方が圧倒的に楽で早くて正確です。, しかし基本系である近似線の推定が出来るといい事・・・・それは他の関数を使うこともできるというわけです。, 先ほどの散布図のプロットですが・・・ 論文書いたり研究していたりしていました, 残暑が終わるか終わらないかぐらいになると、高校の文化祭があちらこちらで開催されるようになります。中学生にとっては自分が行きたい学校を見学するいい機会ですよね。でも高校の文化祭ってどんな格好をしていったらいいのか、持ち物は?上履きが必要なのかよくわからん!という人も多いかと思います。元高校の先生に、文化祭をしている高校側の視点で中学生の服装や持ち物について聞いてみました。, 珪藻土のバスマットの吸水が悪くなってきたので削ろうと思ったら付属の紙やすりが無くなってた!番手は何番のを買ってくればいいの?番号が違うと何か不都合がある?100均で売っている安い紙やすりでやっても大丈夫なの?実際に2年使った珪藻土マットを色々な紙やすりで手入れして比べてみました。, 平等院鳳凰堂でインスタ映えする写真が撮りたい!桜や紅葉と鳳凰堂が一緒に入った写真はどこからどの角度でとっているものなの?藤のシーズンに写真を撮りに行ってみました!, 大学の時に買ったPCがそろそろガタが来て、社会人になったんだからパソコン買い換えようか・・・なんて思っているけど本当に今後パソコンって必要なの?と首をかしげる。家では圧倒的にスマホやiPhoneをいじっている時間が長いし、コスパやランニングコスト的にもパソコンは今後必要なのか不要なのか考える時期に入ってきているのかもしれません。ノートPC、ミニデスクトップ、モバイルPC、スマホ、タブレット、それぞれを買ってみて使ってきた実体験から、パソコンの必要性について考えていきます。, 生後二か月から予防注射を受けることができますが、二か月って言ったらまだ首も座っていないような状態です。普通のお出かけだって気を使うのに、さらに病院って、かなりしんどいです。だから持ち物は万端にしておきたいし、あらかじめ出来る準備があればやっておきたい、当日どんな感じなのかも知っておきたいですよね。予防注射の時の持ち物や服装、前日までに出来る準備と当日病院内での流れを予習出来るようにまとめました。, 結婚式の電報ってお祝いごとなだけあって、送るのにも細心の注意が必要です。なるべく早くに送りたいものの早ければ早い方がいいわけでもないだろうし、いったいいつまでに送れば間に合うのか、早いとすればいつから送るのが可能なのか、よくわかりませんよね。結婚式の祝電は一体どれぐらいまでに頼むのがベストなのか、考察していきます。, ファイル>オプション>アドイン>一番下のプルダウンを『Excelアドイン』にして設定をクリック, この線をもっと理論的に、「何でここに線引いたの?」って聞かれたらちゃんと理由を応えられるような線を書きたい!, 線から離れている距離をそれぞれ計ってみて、その合計の数値が小さければ小さいほどど真ん中をいい感じにとおっているよね?!, 小さい数字から順番に並んでいるダミーのXの列を作ってあげることで、計算して出てきた推定のYも綺麗に順序良く並んでいる列を作成. 7 8 16 先ほどとほとんど同じですが、パラメータが増えた分だけ範囲指定が変わるので注意してください。, これがExcelに勝手に計算してもらったのと比較してみると・・・ 得られそうなことが判りました、Excelが無い環境でも計算出来るので便利。, ExcelのLINEST関数等は、今回と同じような計算を内部でやっているんでしょうね。, 余談ですが今回もインターネットの便利さを痛感、色々有用な情報が開示されてて、 26 62 79 画面のXとYにデータを貼り付けて、”X/Yデータ取得”ボタンを押すと計算します。, 近似式 で、aは9.6、bが1、R2は0.9944となり、 2 32 43 Excelの標準機能で勝手に計算してくれるけど、ソルバーを使って根本を理解しておくと応用が利くのが最小二乗法。多項式、決定係数まで全部自分で入力してソルバーに推定してもらう方法をサンプルファイル付きでザックリ解説します。 20 41 48 Excelがどの方法か判らないと書きましたが、上式が最も一般的な定義らしいです。, y=ax+b(直線)の場合、およびy=ax2+bx+c(2次曲線)の場合の計算式を使います。, 正直、詳しい仕組みは理解出来ていませんが、Excelの線形近似/多項式近似でも、 FAカメラ触ったりの”麺ジニア”。, mengineerさんは、はてなブログを使っています。あなたもはてなブログをはじめてみませんか?, Powered by Hatena Blog データタブの一番右端にソルバーが出てきて使えるようになります(分析ツールもソルバーの下に出てくる), なお、Excel2010では開発タブが出ている場合には開発タブに歯車が二つついた『Excelアドイン』というアイコンが出現しているので、いきなりチェックボックスのウィンドウを出すこともできるそうです(私がいじっているのは2007なので見た目や色が少し違う可能性がありますが大体同じところにあるはずです), ということで、最小二乗法をソルバーにお願いしていきたいと思います・・・・が、その前にその仕組みをある程度は理解しておかないと、数式何書いてるのか分からなくなるので・・・(もちろんコピペで出来るようにファイルは用意する予定ではいますが), そのため、まずはこれからソルバーに何をお願いするのかをザックリと見ていきたいと思います。, 数学苦手マンが自分でも分かるように理解するために見つけた道筋なので、細かいところでの間違いはあるかもしれませんが、大筋とイメージで立ち向かうのでよろしくお願いします。, 最小二乗法を使うのは近似線を書くときが多いかなと思うのですが、それは理系の偏見でしょうか。, 今回は分かりやすさ優先で行きたいので、近似線を書くことを目的とした最小二乗法の利用ということで行きますのでよろしくお願いします。, まず例としてですが、こんなグラフがあったとします。 複雑な数式やパラメータが増えるほどにこれが生じやすくなるので、収束した数値を控えて置いた後、再度違う初期値から推定を行って比較してみるとより正確な数値を引き出すことができます。, サンプルのExcelファイルの三枚目のシートにありますが、実は多項式の場合にはダミーのXを使わないと綺麗に線を書くことができません。(二枚目はプロットに対して近似線を入れている実はちょっとダメなグラフ) 12 68 50 excelには、最小二乗法による直線フィッティング用にlinestという関数が用意されています。 一般的な使い方は =linest(計算に使うyの範囲、計算に使うxの範囲、y切片を0にするかしないか) 17 62 64 ソルバーにチェックボックスを入れてOKをクリック, ちなみに今回はソルバーに計算をやってもらいますが、『分析ツール』にチェックボックスを入れてOKを押すと一緒に使えるようになります 多項式近似で次数を増やしていくだけの簡単な作業・・・・, ですが、ソルバーは関数の変数が増えても200までなら受け付けつけてくれる上に、関数の形に制限は基本的にありません(ただし物凄く時間はかかりますが), 関数の形に制限はないってなんだ?と思われるかもしれませんが例えば 18 93 98 これは一番最初のデータの入力ところでちらりとふれた「お互いのデータが不連続」ということに由来しています(入力の出席番号の列のところの説明), このデータは出席番号順に並んでいるのであって、点数順に並んでいるわけではありません。, そのためバラバラな実測のXを推定した式に代入すると、バラバラな値の推定のYが計算で出てきます。, このバラバラを順番につなぎ合わせてしまうと、右のグラフのような線がジグザグで「どこら辺が三次関数?」って感じになってしまうわけです。, そこで小さい数字から順番に並んでいるダミーのXの列を作ってあげることで、計算して出てきた推定のYも綺麗に順序良く並んでいる列を作成、これを参照することできれいな線を表示するようにしているのが左のグラフです。, もちろんダミーX以外に利用できるデータがシート内に存在すればそれを使ってしまって問題はありません。, あるいは推定を行う前に、実測Xを順番に並び替えてしまうことも方法の一つ・・・ではありますが、数式がすでに入っていると崩壊することもあるので、あくまでも並び替えはデータ入力時に行っておいた方が無難です。, 学生以来数年ぶりに計算してみましたが、意外とセルの参照間違いや、XとYがひっくり返っていたりして上手くグラフが書けなかったりと苦労をしました。, 何か上手くいかない、数字は出たけどグラフが書けないとか、上手く推定できずに全部0になってしまうとか、そう言う事態に陥った時は一端ブレイク。, 根を詰めれば詰めるほど、Excelの計算ミスは見つからなくなるので、少し甘いものでも食べて落ち着いてから見直ししてみてください。, 次回のコメントで使用するためブラウザーに自分の名前、メールアドレス、サイトを保存する。, このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください。, もとこです 6 72 76 19 72 59 10 93 94 ▼PICK UP!▼ この点たちを代表する線を書きたい・・・・と言うと難しい表現なので噛み砕くと「この点たちから一番近い感じが表せそうな線」を書くとしたらどのあたりに線を引きますか? MS aaa - Microsoft % 1975 Excel 15M' i¾ffi 10 tJ]fia Steetl teet2 1185 Steeta '"J"TJ aaa - Microsoft Excel '"J"TJ 9 56 49 若干こんな感じに、湾曲した線の方がいい感じにフィットする感ありません?ない?ごめんなさいあるってことにしてください。, ということで、今度は同じデータで三次関数のパラメータの推定と、その当てはまり具合R^2を出してみたいと思います(サンプルのExcelファイルをダウンロードしてくれた方は二枚目のシートです), これをソルバーにお願いする時には 29 80 87