A 数値計算上に関係する実装上の注意

非線形最小二乗法は一般に解が一意とは限らない. Olleyらはht:=ˆϕtβKktとして計算しており, βAを除いていない. この方法では βA,ωtを識別できないからである(彼らの目的はTFPの計算なので, βK,βLさえ識別できれば問題にならない). 例えばEωt=0と分かっているならば識別できるが, 今回の仮定ではそれはわからないため, 数値計算の安定のためにβAの減算を省略している.

また, 非線形最適化は初期値を変えると結果が大きく変わることがある. 一般的な解決方法はないが, 今回は生産関数の意味から考えて 0<βKという制約を与えている. もしβKがゼロや負なら, 資本投入量を増やしてもまったく生産量が増えないか, むしろ減少することになる. これは通常ならありえないことだろう. optim()関数には lowerというオプションがあるが, ここでは計算速度を損なわないように βKのみ指数変換して計算するように修正している さらに, 初期値を1ˆβLとした. これは, βK+βL=1ならば生産関数が規模に対して収穫一定になるからである. もちろんそのようになるという仮定をしていないが, 生産関数のパラメータが極端な値にならないという前提ならば中庸な設定であり, 初期値に向いていると考えられる. この初期値に乱数でばらつきを与えて複数回の結果を確認すると, 初期値と収束した解の対応関係は図A.1のようになり, 次数qごとの誤差±σは図A.2のようになった. このように, βKは初期値によって結果にばらつきがあり, βAは初期値に完全に依存していることがわかる. そのため,今回は各次数について100回試行し, 平均値から次数を決定し, その後再びブートストラップ法で反復計算した結果を最終的な推定値として採用することにした.

解の初期値と収束先

図A.1: 解の初期値と収束先

次数ごとの初期値の違いによる誤差

図A.2: 次数ごとの初期値の違いによる誤差

また, 乱数データを生成するパラメータを変更すれば当てはまり易さも変わってくることに注意する. 例えば ptの推定にはinv,ktを使用しているが, もしこれらとxtとの相関が弱ければ, 弱相関操作変数と同様にかえってバリアンスが増加する原因になると予想できるため, 企業のデータを取れば常にOP法をそのまま適用すればいいということはありえないだろう. このような観点からも構造推定は決まったパッケージの決まった構文を実行すれば終わりというものではなく, 各段階で仮説が正しいかを検証する必要がある.