問題タブ [microsoft-r]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
r - Revolution R で実行するたびに lme() の結果が異なる (MKL のせい?)
更新 (2014 年 8 月):私はこの問題の真相にたどり着くことはなく、Revolution のフォーラムで何のフィードバックも得られませんでした。ただし、この問題は、Revolution R 7.2 (R 3.0.3、これもアカデミック バージョン) で修正されたようです。lme() テストを数百回以下で実行しましたが、予想どおり、すべて同じ結果が得られました。[更新の終了]
Revolution R 7.0 (R 3.0.2) のアカデミック バージョンを新しい PC にインストールしたところ、以下のコードで奇妙な結果が得られました。コードが実行されるたびに、異なる結果が得られます。CRAN-R では、結果は常に同じです (そうあるべきだと思います)。test.data.table()
コード スニペットは、バージョン 1.8.10 のテスト 527 からのもので、エラーを指摘しました。
以下のようなものが得られますが、毎回異なります。
「楽しい」ことは、nlme
パッケージ(そのlme()
一部)自体が同一であることです。念のため、アンインストールして再インストールしました(パッケージの nlme_3.1-113.zip ファイルはビットごとに同一です)。
ボンネットの下に行くにはまだ十分に知りません。ポインタやアイデアをいただければ幸いです。Revolutions のフォーラムにも投稿しましたが、ここよりもはるかに人口が少ないようです...
これは、64 ビットの Windows 8.1、64 ビットの R も同様であり、重要であれば Intel i7-4770 CPU です。Revolution R の現在のバージョン (R 3.0.2) と以前のバージョン (2.15.3) の両方で、予期しない (私にとって) 動作が発生します。CRAN-R 3.0.1 と 3.0.2 は同じ結果を生成します。
Revolution R の sessionInfo() 出力:
更新 1: Revolution R が Intel MKL BLAS ライブラリを使用しているという事実まで、問題を追跡しました (以下の回答とコメントからのいくつかのポインタに従います)。CRAN が提供する BLAS ライブラリに切り替えると、問題は解決します。(注: 私は R を自分でコンパイルするのに十分な知識がないので、OpenBLAS やその他の代替手段をテストしていません。Revolution R では、2 つの dll の名前を変更するだけです。)
他の人もMKL で一貫性のない結果を得ているようです。違いはマシンの許容範囲内です。つまりall.equal()
、TRUEidentical()
と FALSE があります。私の場合のさまざまな結果は、意味のあるほど大きいようです。
この問題を Revolution R のフォーラムに投稿しました。応答があればここで更新します。この時点で、私の質問は「いつMKL BLASを使用し、いつCRAN-R BLASを使用するか」に変更する必要があると思います。これは速度(*)の問題ではなく、一貫した正しい結果の問題です。R の出力を既知の正しい出力と照合するための標準的なテスト スイート (ここでの用語がわからない場合) を探すために、もう少し時間を費やします。これは私が気に入っている点の 1 つでdata.table
、エンド ユーザーに表示される独自のテストがあります。すべての (またはほとんどの) パッケージを網羅する単一のテストではなく、少なくとも基本機能をカバーするものを期待するべきではないことは承知しています。
(*) 速度は具体的なワークフローに依存します。この特定のケースでは、CRAN BLAS は MKL よりも高速です (どちらもシングルスレッドで実行されます)。他の作業では、レボリューション R が大幅に高速化されているので、調べています。
r - RevoScaleR 関数で transformEnvir を使用した後、環境が期待どおりに動作しない
rxXdfToDataFrame を使用して xdf ファイルを読み取り、rowSelection の式で変数を使用する関数があります。を渡さないtransformEnvir=environment()
と、変数が見つかりません。私の問題は、 で関数を呼び出した後transformEnvir
、 に確実にアクセスできないように見えることです.GlobalEnv
。数値をハードコーディングするとrowSelection
、使用する必要がなくなりtransformEnvir
、すべてが正しく機能します。環境を設定しようとしましたが、正しく行っていたかどうかさえわかりません。
次のコードは私の問題を再現します:
発生するエラー:
ただし、代わりにsetDT()
,data.table::setDT()
を使用すると、関数が実行されます。
編集:設定せずに試してみたところtransformEnvir
、すべてが正常に機能したことを忘れていました。また、混乱を避けるために、tables() が setDT() に変更されました。
r - ヨセミテとRROにpngをインストールする
パッケージpngをmacbookpro 2014とヨセミテにインストールしようとしています。
私はRROを使用しています(ただし、Rでも同様の問題があると思います)。
これは、RRO コンソールで確認できるものです。
一方、(自作を使用して)libpngをインストールしました。応答のある端末でlibpng-configと入力できます
選択肢がなくなってきた…
r - rxImport の区切り文字を設定する
現在、rxImport を使用しようとしています。
ただし、ファイルの区切り記号を「|」に設定する必要があります。
Rで読み込まれる標準ファイル:
区切り文字を設定できます。rxImportでこれを行うにはどうすればよいですか?
r - R における大きな固定効果の二項回帰
3 つの固定効果変数を持つ 480.000 エントリの比較的大きなデータ フレームでロジスティック回帰を実行する必要があります。固定効果変数 A には 3233 レベル、変数 B には 2326 レベル、変数 C には 811 レベルがあります。全体として、6370 の固定効果があります。データは横断的です。glm
回帰行列がメモリに対して大きすぎるため、通常の関数を使用してこの回帰を実行できない場合(メッセージ " Error: cannot allocate vector of size 22.9 Gb
" が表示されます)。Macbook Air (OS X 10.9.5 8GB RAM) でこのリグレッションを実行する別の方法を探しています。16GB RAM のサーバーにもアクセスできます。
私はいくつかの異なる方法で問題を解決しようとしましたが、これまでのところ満足のいく結果にはなりませんでした:
lfe/felm :lfe
パッケージのフェルム回帰関数を使用して、回帰を実行する前に固定効果を減算します。これは完全に機能し、わずか数分で上記の回帰を通常の線形モデルとして実行できました。ただし、lfe
ロジスティック回帰と glms はサポートしていません。したがって、フェルムはさまざまなモデルに適合するモデルについてのアイデアを得るのに最適でしたが、最終的なロジスティック回帰モデルでは機能しません。
biglm/bigglmbigglm
:関数をより管理しやすいチャンクに分割するために使用することを考えました。ただし、いくつかのソース (例: link1、link2、link3) それが機能するためには、因子レベルがチャンク全体で一貫している必要があることに言及してください。つまり、各チャンクには、各因子変数の各因子が少なくとも 1 つ含まれている必要があります。因子 A と B には 1 回しか現れないレベルが含まれているため、セットを一貫したレベルで異なるチャンクに分割することはできません。固定効果 A の 10 個の因子と B の 8 個の因子を削除すると (小さな変更)、残りは 4 レベル以上の因子のみになり、データを 4 つのチャンクに分割することで、より管理しやすくなります。ただし、480.000 エントリが 4 つのチャンクにソートされ、3 つの因子のそれぞれの各因子レベルが少なくとも 1 回出現するように、df をソートする方法を理解する必要があります。
GlmmGS/glmgs : 同名のパッケージ内の関数は、「Gauss-Seidel」アルゴリズムを使用したロジスティック回帰glmmgs
のパッケージのような固定効果減算を実行します。lfe
残念ながら、パッケージは開発されていません。R に比較的慣れておらず、統計に関する深い経験がないため、出力を理解できず、通常の「効果の大きさ」、「モデルの適合性」、「 glm 回帰サマリーが提供する有意間隔」指標。
パッケージの作者にメッセージを送りました。彼らは親切に次のように答えました。
このパッケージは、glm オブジェクトと同じ形式の出力を提供しません。ただし、現在の出力が与えられると、ほとんどの適合統計 (推定値の標準誤差、適合度) を簡単に計算できます (CRAN バージョンでは、現在の出力は係数の推定値のベクトルであり、関連するベクトル標準誤差の; 共分散成分についても同じですが、ランダム効果なしでモデルを適合させる場合は、それらについて心配する必要はありません)。標準誤差の計算に使用される共分散行列は、Gauss-Seidel アルゴリズムに関連付けられた精度行列の対角ブロックの逆数であるため、同時尤度の標準誤差を過小評価する傾向があることに注意してください。私はもはやパッケージを保守していません。特定の詳細に入る時間がありません。 マニュアルで参照されている紙、他のすべてはペンと紙であなたが解決する必要があります:)。
統計の教育を受けていない人がそれを理解できるように「ほとんどの適合統計を簡単に計算する」方法を誰かが説明できる場合 (不可能かもしれません)、またはこれがどのように行われるかの例を示す R コードを提供することができれば、私はとても感謝しております!
Revolution Analytics : Mac で Windows 7 をシミュレートする仮想マシンに Revolution Analytics Enterprise をインストールしました。プログラムには、RxLogit
大規模なロジスティック回帰用に最適化されたという関数があります。RxLogit
私が得る関数を使用するthe error (Failed to allocate 326554568 bytes. Error in rxCall("RxLogit", params) : bad allocation)
と、その関数もメモリの問題に遭遇しすぎているようです。ただし、このソフトウェアを使用すると、分散コンピューティング クラスターで回帰を実行できます。したがって、大量のメモリを備えたクラスターでコンピューティング時間を購入することで、「問題を殺す」ことができました。しかし、革命分析プログラムは、私が知らない数式や方法を提供するのではないかと思いlfe
ますbigglm
.
MatrixModels/glm4 : ある人は、計算を高速化するために、属性を持つパッケージのglm4
関数を使用することを提案しました。すべての固定効果で回帰を実行すると、 「エラーが発生します。固定効果変数 B または A と C のみで実行すると、計算が機能し、オブジェクトが返されます。出力を標準的な方法ではうまくいかないように見えるので、私にとっては理にかなっているフォームです。MatrixModels
sparse = TRUE
glm4
"Error in Cholesky(crossprod(from), LDL = FALSE) : internal_chm_factor: Cholesky factorization failed
"glpModel"
glmmGS
summary()
上記の問題のいずれか、またはメモリの制約がある R で複数の大きな固定効果を使用してロジスティック回帰を実行するためのまったく異なるアプローチについてアドバイスをいただければ幸いです。
r - チェックポイント パッケージなしで RRO を使用することは可能ですか?
Revolution R Open (RRO) はcheckpoint
、パッケージ参照の再現性を向上させるためにパッケージと共に配布されます。ただし、一部のユーザーは、再現性を気にせず、RRO が提供するパフォーマンスの向上を本当に気にかけている場合があります。
checkpoint
パッケージとその機能なしで RRO を使用することは可能ですか?