3

宿題のために、順方向ステップワイズ回帰を実行する関数を作成しました。従属変数、潜在的な独立変数のリスト、およびこれらの変数が見つかったデータ フレームの 3 つの引数を取ります。現在、独立変数のリストを含む、データ フレームを除くすべての入力は文字列です。

多くの組み込み関数や有名なパッケージの関数では、文字列ではない変数の入力が可能です。どの方法がベストプラクティスで、その理由は? 非文字列がベスト プラクティスである場合、引数の 1 つがデータ フレーム内の変数のリストであり、単一の変数ではないことを考慮して、これをどのように実装できますか?

4

1 に答える 1

4

個人的には、必要なことが達成されれば、文字列を使用しても問題はないと思います。必要に応じて、独立変数と従属変数を指定するために、文字列ではなく式を入力として受け取るように関数を書き直すことができます。この場合、関数呼び出しは次のようになります。

fitmodel(x ~ y + z,data)

これではなく:

fitmodel("x",list("y","z"),data)

数式を使用すると、回帰で使用する変数の単純な代数的組み合わせを指定できますx ~ y + log(z)。この方法を使用すると、数式で指定されたデータ フレームを呼び出して構築し、model.frameこの新しいデータ フレームを使用してアルゴリズムを実行できます。例えば:

> df<-data.frame(x=1:10,y=10:1,z=sqrt(1:10))
> model.frame(x ~ y + z,df)
    x  y        z
1   1 10 1.000000
2   2  9 1.414214
3   3  8 1.732051
4   4  7 2.000000
5   5  6 2.236068
6   6  5 2.449490
7   7  4 2.645751
8   8  3 2.828427
9   9  2 3.000000
10 10  1 3.162278
> model.frame(x ~ y + z + I(x^2) + log(z) + I(x*y),df)
    x  y        z I(x^2)    log(z) I(x * y)
1   1 10 1.000000      1 0.0000000       10
2   2  9 1.414214      4 0.3465736       18
3   3  8 1.732051      9 0.5493061       24
4   4  7 2.000000     16 0.6931472       28
5   5  6 2.236068     25 0.8047190       30
6   6  5 2.449490     36 0.8958797       30
7   7  4 2.645751     49 0.9729551       28
8   8  3 2.828427     64 1.0397208       24
9   9  2 3.000000     81 1.0986123       18
10 10  1 3.162278    100 1.1512925       10
> 
于 2013-09-30T18:02:04.640 に答える