Rに100個のパラメータを持つモデルで線形回帰を作成するRの簡単な方法はありますか?10個の値を持つベクトルYと10個の列と100個の行を持つデータフレームXがあるとしましょうY = X[[1]] + X[[2]] + ... + X[[100]]
。R構文で似たようなものを書くにはどうすればよいですか?
Rに100個のパラメータを持つモデルで線形回帰を作成するRの簡単な方法はありますか?10個の値を持つベクトルYと10個の列と100個の行を持つデータフレームXがあるとしましょうY = X[[1]] + X[[2]] + ... + X[[100]]
。R構文で似たようなものを書くにはどうすればよいですか?
回答:
関数formula
とpaste
関数を組み合わせて使用することもできます。
設定データ:予測変数x1
to x100
とその従属変数を含むdata.frame y
があるが、迷惑変数もあると想像してくださいasdfasdf
。また、予測変数は、data.frame内ですべて連続しないように順序付けられています。
Data <- data.frame(matrix(rnorm(102 * 200), ncol=102))
names(Data) <- c(paste("x", 1:50, sep=""),
"asdfasdf", "y", paste("x", 51:100, sep=""))
また、予測変数の名前を含む文字列があると想像してください。この場合、これはpaste
関数を使用して簡単に作成できますが、他の状況では、grep
この文字列を取得するために他のアプローチが使用される場合があります。
PredictorVariables <- paste("x", 1:100, sep="")
アプローチの適用:次に、次のように式を作成できます。
Formula <- formula(paste("y ~ ",
paste(PredictorVariables, collapse=" + ")))
lm(Formula, Data)
collapse
引数の挿入+
予測変数間のformula
文字列をlm
関数に適したクラス式のオブジェクトに変換します。より一般的には、変数名のベクトルとして予測変数を提供する場合、非常に定期的に次の関数を使用します。
regression <- function(dv, ivs, data) {
# run a linear model with text arguments for dv and ivs
iv_string <- paste(ivs, collapse=" + ")
regression_formula <- as.formula(paste(dv, iv_string, sep=" ~ "))
lm(regression_formula, data)
}
例えば、
regression("y", PredictorVariables, Data)
do.call
lm