3

データセット内のすべての郵便番号に対して回帰を実行し、係数をデータ フレームに保存しようとしていますが、問題が発生しています。

以下のコードを実行すると、すべての郵便番号を含む「係数」というデータ フレームが得られますが、すべての郵便番号の切片と係数は単純回帰の結果と等しくなりますlm(Sealed$hhincome ~ Sealed$square_footage)

以下のリンクにある Ranmath の例に示されているようにコードを実行すると、すべてが期待どおりに機能します。私は何年にもわたってSTATAを使用してきたため、Rを初めて使用するので、どんな助けでも大歓迎です:)

rapplyコマンドを介して乗算回帰から回帰係数を抽出します

library(plyr)
Sealed <- read.csv("~/Desktop/SEALED.csv")

x <- function(df) {
      lm(Sealed$hhincome ~ Sealed$square_footage)
}

regressions <- dlply(Sealed, .(Sealed$zipcode), x)
coefficients <- ldply(regressions, coef)
4

3 に答える 3

3

追加の引数を関数に渡すことができる引数をdlply取るため、物事をさらに単純にすることができます。...

dlply(Sealed,.(zipcode),lm,formula=hhincome~square_footage)

の最初の 2 つの引数lmformuladataです。formulaはここで指定されているためlm、次に指定された引数 (関連する の郵便番号固有のチャンクSealed) をdata引数として取得します ...

于 2012-11-16T02:41:13.497 に答える
2

関数を適用しています:

x <- function(df) {
      lm(Sealed$hhincome ~ Sealed$square_footage)
}

データの各サブセットに適用されるため、毎回の出力が正確であることに驚かないでください

lm(Sealed$hhincome ~ Sealed$square_footage)

右?関数内で置き換えSealedてみてdfください。そうすれば、データ フレーム内の変数全体ではなく、関数に渡される個々のピース内の変数を参照できますSealed

于 2012-11-15T22:45:37.577 に答える
1

問題はplyr関数の定義ではなく、関数の定義にあります。関数を呼び出していますが、変数に対して何もしていません。

類推として、

 myFun <- function(x) {
    3 * 7
  }

    >  myFun(2)
    [1] 21
    >  myFun(578)
    [1] 21

この関数を異なる x の値で実行すると、x が何であっても 21 が得られます。つまり、関数内で x への参照はありません。私のばかげた例では、修正は明らかです。上記の関数では、混乱は理解できます。$hhincomeand$square_footageはおそらく変数として機能するはずです 。

しかし、 x の前に来るものを変化させたいとします$。@Joranが正しく指摘したように、(と同じ)と交換sealed$hhincomeすると役立ちます。df$hhincome$squ..

于 2012-11-15T23:27:44.993 に答える