{plm}パッケージのpgmmという関数でパネルデータの分析をしようとしたら、
system is computationally singular
のエラーで推定できない。
plmパッケージに例題として入っているデータとモデルではふつうに推定できたので、たぶん分析しようとしているモデルが不適切なのだろうと思い、変数やモデルの構成をいろいろ変えてみたけど、解決せず。
一般的には"system is computationally singular"というエラーは、変数間の相関が高くて多重共線性が発生している場合や、見た目上は相関が高くなくても変数の行列に一次独立でないものが混じっている(他の複数の変数の線形和で表現できるとか)場合や、サンプルサイズより変数の数が多い場合に発生する。
ところが、変数をいろいろチェックしたけど、どうもそういう問題ではなさそうに思えてきた。そもそも、学生のPCでは動いたらしいコードが自分のPCで動かないのも変なので(上記エラーはたまに、環境によって出たり出なかったりするけど)、{plm}パッケージ自体をアプデ・再インストールしようとしたところ、今度はコンパイルのところでエラーがでて、その一部を挙げると
clang: error: unsupported option '-fopenmp'
となってて進めなくなった。
これはググるといろんなところで報告されているエラーで、とりあえずこのページに書かれてあるとおりに、X-codeのxommand line toolsとclangとgfortranのアップデートをしろと言われる。
R Compiler Tools for Rcpp on macOS before R 4.0.0 | The Coatless Professor
しかしこれをやってみたところ、こんどはRcppのエラーが発生して、たとえばその一部をみると
error: no member named 'fabsf' in the global namespace
というようなことが書かれている。
このページにかかれている症状と似ている。
Odd header error due to no member named 'fabs' in the global namespace · Issue #40 · rmacoslib/r-macos-rtools · GitHub
たぶんパスの問題で、いろいろ調べてみたのだが自分の知識では解決方法がよく分からず、半日ぐらい悩んでいた。
で、結局、Rのバージョンを3.6から4.22にアップデートしたら、全て解決しました(笑)