« [Excel]数値が入力されているセルの個数を数える | トップページ | [R]非線形最小二乗法を簡単に行う »

2015年10月 7日 (水)

[R]重み付き最小二乗法による回帰モデルを作成する(2変量、従属変数にのみ誤差あり)

いわゆる y = f(x) のような方程式で、従属変数(この場合は変数y)にのみ誤差がある場合の、重み付き最小二乗法を、lm関数で行う方法。

lm関数にweightsオプションを付けて実行すればよい。以下、例。

以下、計算例のためのデータ。左から順に、独立変数(x)、従属変数(y)、重み(w)。

1  1 4.00
2  4 1.00
3  9 4.00
5 25 0.01

これらのデータが含まれているファイルをxyw.txtと保存しておく。以下が実行例。図が表示される。

> dtf <- read.table("xyw.txt")
> x <- as.numeric(dtf$V1)
> y <- as.numeric(dtf$V2)
> w <- as.numeric(dtf$V3)
> r <- lm(y ~ x)
> rw <- lm(y ~ x, weights = w)
> plot(x, y)
> abline(r, col = "blue")
> abline(rw, col = "red")

Figure_xyw
白丸が元データ。青直線が重みを考慮しないときの回帰直線。赤直線が重みを考慮したときの回帰直線。データを見ての通り、4番目の組(x = 5)は重みを小さくしているので、重みを考慮させると、残り3点で決められたような回帰モデルになっているのがわかる。

なお、lm関数により作成された回帰モデルの詳細はsummary関数で確認することができる。

> summary(rw)

Call:
lm(formula = y ~ x, weights = w)

Weighted Residuals:
      1       2       3       4
0.2645 -0.8978  0.1443  0.8012
Coefficients:
            Estimate Std. Error t value Pr(>|t|)   
(Intercept)  -3.1623     0.6834  -4.627   0.0437 *
x             4.0300     0.3084  13.068   0.0058 **
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 0.8771 on 2 degrees of freedom
Multiple R-squared:  0.9884,    Adjusted R-squared:  0.9826
F-statistic: 170.8 on 1 and 2 DF,  p-value: 0.005805

« [Excel]数値が入力されているセルの個数を数える | トップページ | [R]非線形最小二乗法を簡単に行う »

R(数値計算)」カテゴリの記事

コメント

コメントを書く

コメントは記事投稿者が公開するまで表示されません。

(ウェブ上には掲載しません)

« [Excel]数値が入力されているセルの個数を数える | トップページ | [R]非線形最小二乗法を簡単に行う »

無料ブログはココログ

■■

■■■