4

私は最近 R に切り替えましたが、気に入っています。しかし、私が最も見逃していることの 1 つは、特定の変数を事前設定されたレベル (平均、90 パーセンタイルなど) で保持する予測モデル応答を生成できることです。これは、交互作用項、変換された変数などの効果を識別しようとするときに非常に便利です。

コマンドを使用して、Stata でこれを簡単に実行できますadjust。私はRでそれを行う方法を理解しようと試みましたが、Rという名前の言語(統計Rもあります)を使用して「調整」などの用語を検索することの大きな落とし穴の1つは、私ができることです調整された R 二乗でのみヒットを見つけるようです。それはイライラする以上です。

それで、本当に簡単な質問をする危険を冒して、誰もこれを行う方法を知っていますか? 私は予測マージンを調べましたが、それは少なくとも関連するタイプの方法のように思えますが、その実装には通常、何らかの方法で説明変数を標準化することが含まれます。

4

3 に答える 3

3

http://www.stata.com/support/faqs/stat/adjust.htmlは次のように述べています。

実際、調整は実際には予測のフロントエンドにすぎません

そして、予測用の新しいデータセットを作成することで機能します。

Rには、予測の仮定を変更するために使用されるpredict引数newdataがありますが、Stata ほど簡単ではないかもしれませんadjusttransform次の例を参照してください。

# create model
mtcars.lm <- lm(hp~disp*cyl,mtcars)

# default fit predictions

predict(mtcars.lm)
          Mazda RX4       Mazda RX4 Wag          Datsun 710      Hornet 4 Drive 
          128.60896           128.60896            80.25811           128.88296 
  Hornet Sportabout             Valiant          Duster 360           Merc 240D 
          208.48842           128.79069           208.48842            75.58796 
           Merc 230            Merc 280           Merc 280C          Merc 450SE 
           76.29995           128.63021           128.63021           197.85671 
         Merc 450SL         Merc 450SLC  Cadillac Fleetwood Lincoln Continental 
          197.85671           197.85671           222.63037           221.11516 
  Chrysler Imperial            Fiat 128         Honda Civic      Toyota Corolla 
          218.58981            83.79391            84.15593            84.71104 
      Toyota Corona    Dodge Challenger         AMC Javelin          Camaro Z28 
           78.79793           203.18519           201.41745           207.22575 
   Pontiac Firebird           Fiat X1-9       Porsche 914-2        Lotus Europa 
          213.53912            83.75770            78.77380            81.81483 
     Ford Pantera L        Ferrari Dino       Maserati Bora          Volvo 142E 
          207.35202           128.56702           201.03865            78.68933 


# predict assuming all cars have 8 cylinders

predict(mtcars.lm,newdata=transform(mtcars,cyl=8))
          Mazda RX4       Mazda RX4 Wag          Datsun 710      Hornet 4 Drive 
           183.2349            183.2349            176.6690            195.6091 
  Hornet Sportabout             Valiant          Duster 360           Merc 240D 
           208.4884            191.4423            208.4884            181.5556 
           Merc 230            Merc 280           Merc 280C          Merc 450SE 
           180.8106            184.1946            184.1946            197.8567 
         Merc 450SL         Merc 450SLC  Cadillac Fleetwood Lincoln Continental 
           197.8567            197.8567            222.6304            221.1152 
  Chrysler Imperial            Fiat 128         Honda Civic      Toyota Corolla 
           218.5898            172.9694            172.5906            172.0098 
      Toyota Corona    Dodge Challenger         AMC Javelin          Camaro Z28 
           178.1969            203.1852            201.4174            207.2257 
   Pontiac Firebird           Fiat X1-9       Porsche 914-2        Lotus Europa 
           213.5391            173.0073            178.2221            175.0402 
     Ford Pantera L        Ferrari Dino       Maserati Bora          Volvo 142E 
           207.3520            181.3409            201.0386            178.3105

R 関連のトピックを検索するには、次のリンクが役立つ場合があります。「R」マテリアルを検索するには?

于 2011-12-15T11:44:54.387 に答える
1

あなたが説明している種類のタスクは、rms/Hmisc パッケージ コンボにカプセル化されています。datadistFrank Harrell は著者であり、彼の他の関数 (通常の R 回帰および分析操作の拡張バージョン) がさまざまな出力テーブルを作成するときに使用するa というデータ記述オブジェクトを作成します。あなたは「Hmisc-wheel」を再発明しているように見えるので、これについて言及します。expand.gridもちろん、と のnewdata=引数を組み合わせて独自のバージョンを作成することpredictもできますが、必要ない場合もあります。R/S の世界に対する Frank の他の重要な貢献は、非常によく考えられた "Regression Modeling Strategies" テキストであり、高品質のデータ分析を実行する上での彼の仕事と他の人の仕事の多くを要約しています。

于 2011-12-15T16:22:06.030 に答える
0

モデルの予測を行うには、predict関数を使用します。たとえば、、?predict.lmおよびを参照してくださいexample(predict.lm)

上記の.lmビットは、S3クラスシステムの例です。この場合、それは「predictクラスのオブジェクトで関数を呼び出す」ことを意味しますlm。つまり、線形回帰の結果です。predict一般的なモデルのほとんどは、 (適切な場合は)独自のバージョンを使用して動作しますが、すべてのモデルがそれをサポートすることが保証されているわけではありません。

于 2011-12-15T09:29:26.337 に答える