分析化学の検量線の重み係数を使用して線形回帰を実行したいと考えています。x 値は濃度であり、誤差がないと仮定されます。y 値は機器の応答であり、変動は濃度に比例すると想定されます。したがって、線形回帰には 1/x の重み係数を使用したいと思います。データ セットは、それぞれに対して 1 回の測定値を持つ単純な 10 個の濃度です。Rでこれを行う簡単な方法はありますか? .
14176 次
1 に答える
2
答えはCross Validatedのやや古い質問にあります。関数 (線形回帰を適用する通常のlm()方法を表す) には、重みを指定するオプションがあります。リンクの回答に示されているように、weights引数に式を使用できます。あなたの場合、数式はおそらく の形式になり1/data$concentrationます。
hrbrmstr で示唆されているように、Cross Validated からの mpiktas の実際の回答を追加しています。
lm の R ヘルプ ページがあなたの質問にかなりよく答えていると思います。重みの唯一の要件は、指定されたベクトルがデータと同じ長さでなければならないということです。データ セット内の変数の名前のみを指定することもできます。残りは R が処理し、NA の管理などを行います。重み引数で式を使用することもできます。次に例を示します。
x <-c(rnorm(10),NA) df <- data.frame(y=1+2*x+rnorm(11)/2,x=x,wght1=1:11) ##Fancy weights as numeric vector summary(lm(y~x,data=df,weights=(df$wght1)^(3/4))) #Fancy weights as formula on column of the data set summary(lm(y~x,data=df,weights=I(wght1^(3/4)))) #Mundane weights as the column of the data set summary(lm(y~x,data=df,weights=wght1)重みは正でなければならないことに注意してください。そうでない場合、R はエラーを生成します。
于 2015-11-11T11:02:12.457 に答える