Analysis)は企業や団体の生産性・効率性を測るのに使用される分析方法である。入力(input)と出力(output)について、クロスセクション(一時点で複数の企業等のデータ)、時系列(一つの企業等のデータで複数時点)、パネルデータ(複数時点で複数の企業等のデータ)などを所与として、最も効率的な入力と出力の関係を推定・計算し、さらに各企業や時点での生産がその効率的な生産関係に比べてどの程度非効率かを計算する。日本語での文献は知らなかったのだけれど、割と企業などでも一般的に使われている手法らしい。学術論文でも使われてはいるが、経済学の最新の論文とかではなくもっと応用分野で使われている印象。技術として実務で使われている印象がある。DEADEAは線形計画法の応用であり、データを所与としてフロンティアを推定し、それぞれのデータポイントの効率性をフロンティアとの距離の割合で計算する。効率性の測り方にはいくつかあるが、主なものとして入力型と出力型がある。(Input-orientedとOutput-oriented)例えば出力型で例えると、企業Aは10人の人員で10個のコーヒーを作ったとする。企業Bは同じ人員で8個のコーヒーを作ったとする。すると、同じ投入量で産出量が違い、企業Aの産出量がデータ(この場合n=2)の中で最大なので、企業Aの効率性指標は1であり「効率的」、企業Bは0.8で非効率、または投入量を増やさずに算出を増やす余地があると考える。(人員以外の入力はこの例では無視しているが、実際の推定ではもちろん考慮する。)数学的な説明はここでは省略するが、「包絡分析」でググると解説記事(刀根,1996)やその他の説明記事がヒットする。(2011)がよい本だと思う。後者はここで説明するBenchmarkingパッケージのもとになっている本でRでの説明がなされている。関数BenchmarkingパッケージはCRANからインストールできる。例となっているデータを見てみよう。統計的分析するわけではないので観察数は少ない。matrix(c(75,100,300,400,25,50,400),ncol=1)Benchmarkingに入っている関数で入力と出力の関係をプロットしてみる。以下ではフロンティアを描くためにdea.plot.frontier関数を使っているが、等産出量曲線を描くdea.plot.isoquant(x1,x2,....)や2財(出力)の間の生産可能フロンティアを描くdea.plot.transform(y1,y2,....)も用意されている。X軸が入力、Y軸が出力である。外側に位置するデータ点を結ぶように線が引かれているが、これが日本でいうと包絡、英語で言うEnvelopeであり、生産フロンティアとなる。データ点2や6はフロンティアの内側にあり、これらの点は非効率ということになるが、他の点も定義によっては非効率になりうる。この包絡線は仮定する技術によっても異なる。デフォルトでは規模によって収穫可変となっており、もっともタイトに包絡線を描くが、例えば規模に対して収穫逓減を仮定すると下図のようになる。技術の仮定を変更するにはRTSという引数を変更する。"irs2"収穫逓増だが凸性を仮定しない、などが指定できる。問題はどれぐらい非効率か?ということだが、上述のように効率性の定義によって異なる。入力型だと、出力を固定して、入力がいかに低いか?となり、投入量の比として計算されるが、出力型だと入力を所与として出力の量の比になる。Benchmarkingパッケージのdea関数でどちらも推定することができる。dea関数の中でORIENTATIONという引数を"in"にすれば入力型、"out"にすれば出力型である。0.8333333上の結果は収穫逓減を仮定して入力型で推定した結果である。点1は0.75と出ているが、これは点1におけるY(出力)の量(=75)を算出するには、推定されたフロンティアによれば必要最低限な量は75で実際に点1で投入されている量は100なので75/100の0.75が効率性指標となる。これが1に近ければ近いほど効率的であり、入力型の場合は非効率であれば「入力を使いすぎ」という解釈の仕方ができる。1.000000すると点1は1.333333となっている。1.3333となっている。どれぐらい「出力しなさすぎ」なのかという指標であり、数字が大きければ大きいほど非効率、1に近いほど効率的である。観察数が少なければ一つ一つ見ることも可能だが、多くのデータを持っていて要約をみたい場合はsummary関数が使える。どの範囲にいくつ観察点が含まれているかという要約になる。F==1の効率的な点は3つあり、全体の43%。Fが2以上の比較的非効率な点は2つあるという感じです。当然ですが、複数の入力・出力がある場合がほとんどですが、それも対応しています。引数に入れるxやyをベクトルから行列にするだけです。cbind(x,x2)ただし、図を描くときはそのまま入れるとなぜか各行を合計した値を使ってしまうので、描きたい変数の列を指定する必要があります。その大きな特徴は確率的ノイズを考慮に入れる生産関数の関数形を特定化するところにあります。(2005)によれば、DEAに比べて確率的なモデルにすることで不要なノイズをフロンティア推定に含めない点と統計的な仮説検定ができる点を利点として挙げていますが、一方で非効率性の確率分布や関数形の特定化が必要なところが弱点としています。こちらも詳細な説明はほぼ省きますが簡単にいうとという生産関数を仮定します。投入量の関数のところはが「関数の特定化」が必要なところで、コブ=ダグラス型だったり、トランスログ関数だったりするのが一般的です。技術的非効率性というところがキーで、この部分に0以上の値を取る確率分布を仮定します。この部分が非効率性として推定されます。部分は一般的な回帰分析と同じように撹乱項です。sfa関数Benchmarkパッケージではsfa関数が用意されています。入力を右辺の説明変数として行列で与え、出力をベクトルで与えます。今気づいたけど、これは行列でxを与えなくてはいけないのでトランスログなどの関数形にする場合は自分で行列を作ってやらないといけないみたいですね。ここではx1とx2をそのままナイーブに与えています。uの分布として0以上正の数をとる半正規分布を仮定しています。sfa(x,y)summary()関数で回帰分析と同じように結果を見れます。違うのは、sigma2vでノイズの分散を、sigma2uで効率性の項の半正規分布の分散を表示しています。ラムダ(lambda)は効率性項の分散とノイズの分散の比、のはずなんですが、なぜか数字が合いません。この結果、推定された係数のうち、uとeをのぞいてフィットした関数がSFAで推定されたフロンティアということになります。"red")図のように、赤線がフロンティアですが、いくつかの観察点はフロンティアの外に出ています。これはノイズの結果がフロンティアの外に出ているということで、システマティックな結果ではないという解釈になります。DEAだとこういった結果もすべてフロンティアの内側に入れてしまうので、DEAの方がフロンティアが外側に位置することになり、結果的に非効率性も大きく計算されがちです。まとめ効率性の分析において使われる2つの推定方法、DEAとSFAを簡単にRで行いました。新しいパッケージはこのBenchmarkなのですが、DEAに寄っていてSFAの方はDEAの結果と比較するために簡単に付属している、という印象です。SFAによる分析のためのRパッケージはCoelliが開発したFRONTIERというFortranによるプログラムをRに移植したfrontierパッケージのほうが秀でている気がしますので、別記事で(時間があれば/必要に応じて)書こうと思います。DEAについてももう少し深めて書く時間が取れれば書き足す予定です。BenchmarkingTweet広告を非表示にする関連記事2020-01-20【R】estimatr::lm_robustで回帰分析のテーブル表をhuxregで出す。固定効果付き...以前、RでStata的な回帰分析を手軽にやるにはestimatr::lm_robu...2019-11-30Stargazerの回帰分析表の備考欄を左に寄せたいちょっとつまづいたので備忘録。【今日の英語勉強】イランとの対立はサイバースペースへ?【R】estimatr::lm_robustで回帰分析のテーブル表をhuxregで出す。月別アーカイブはてなブログをはじめよう!keita43aさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。