Rでは、関数の観測ではなく、特定の変数に重みを設定するにはどうすればよいですか?lm()
コンテクストは以下の通り。携帯電話など、特定の製品の個人ランキング システムを構築しようとしています。従属変数として価格に基づいて線形モデルを構築し、独立変数として画面サイズ、メモリ、OS などの他の機能を構築できます。次に、それを使用して電話の実際のコストを (宣言された価格とは対照的に) 予測し、最適な価格/良さの係数を見つけることができます。これは私がすでに行ったことです。
ここで、私にとってのみ重要ないくつかの機能を「強調」したいと思います。たとえば、大容量のメモリを備えた電話が必要な場合があるため、メモリ変数に対して線形モデルが最適化されるように、より高い重みを付けたいと考えています。
lm()
Rの関数にはweights
パラメーターがありますが、これらは変数ではなく観測の重みです(これが間違っている場合は修正してください)。また、式をいじってみましたが、インタープリター エラーしか発生しませんでした。に変数の重みを組み込む方法はありlm()
ますか?
もちろん、lm()
機能だけが選択肢ではありません。他の同様のソリューション (例: ) でそれを行う方法を知っている場合glm()
、これもかなり問題ありません。
アップデート。いくつかのコメントの後、私は問題について考えていた方法が間違っていることを理解しました. への呼び出しによって取得された線形モデルは、lm()
トレーニングの例に最適な係数を提供します。変数の重みを変更する方法はありません (必要もありません)。混乱して申し訳ありません。私が実際に探しているのは、既存の線形モデルの係数を変更して、一部のパラメーターを他のパラメーターよりも重要にする方法です。前の例を続けて、次の価格の式があるとします。
price = 300 + 30 * memory + 56 * screen_size + 12 * os_android + 9 * os_win8
この式は、価格と電話パラメータ間の依存関係について可能な限り最良の線形モデルを表しています。ただし、memory
変数の前にある番号 30 を手動で 60 に変更したいので、次のようになります。
price = 300 + 60 * memory + 56 * screen_size + 12 * os_android + 9 * os_win8
もちろん、この式は、価格と電話パラメーター間の最適な関係を反映していません。また、従属変数は実際の価格を示すのではなく、メモリが平均的な人よりも 2 倍重要であることを考慮して (最初の式の係数に基づいて)、実際の価格を示しません。しかし、この良さの値 (より正確には、分数の値goodness/price
) はまさに私が必要としているものです。
これがすべて理にかなっていることを願っています。ここで、1 つの (おそらく非常に単純な) 質問があります。で取得した既存の線形モデルに手動で係数を設定するにはどうすればよいlm()
ですか? つまり、次のようなものを探しています。
coef(model)[2] <- 60
もちろん、このコードは機能しませんが、アイデアは得られるはずです。注:データフレームの列の値を2倍にすることは明らかに可能memory
ですが、データではなくモデルに影響を与える、よりエレガントなソリューションを探しています。