3

私は R を初めて使用し、1 つのファイル内のデータの複数のサブセット (「ケース」) に対して線形回帰を実行しようとしています。50 の異なるケースがあるので、50 の異なる回帰を実行する必要はありません...これを自動化してください。私はこの方法を見つけて実験しましたddplyが、これは何らかの理由で、各ケースで同じ係数を返します。私が使用しているコードは次のとおりです。

ddply(MyData, "Case", function(x) coefficients(lm(Y~X1+X2+X3, MyData)))

私が得た結果も、各「ケース」の同じ係数です。回帰がケースごとに1回実行され、ケースごとに一意の係数が得られるようにコードを改善する方法についてのアイデアはありますか?

4

3 に答える 3

7

ddply(入力 data.frame の分割から) data.frames を関数に渡します。おそらくこれが必要です:

ddply(MyData, "Case", function(df) coefficients(lm(Y~X1+X2+X3, data=df)))

(再現可能な例を提供していないため、テストされていません。)

lm各グループの入力 data.frame 全体を渡しました。

于 2013-08-02T20:25:07.293 に答える
6

基本関数のみを使用して行うこともできます。

# load data
data(warpbreaks)

# fit linear model to each subset
fits <- by(warpbreaks, warpbreaks[,"tension"],
           function(x) lm(breaks ~ wool, data = x))

# Combine coefficients from each model
do.call("rbind", lapply(fits, coef))
于 2013-08-02T20:31:34.537 に答える