6

Rには加重最小二乗関数がありますか?具体的には、切片と傾きを計算するものを探しています。

データセット

  1. 1 3 5 7 9 11 14 17 19 25 29
  2. 17 31 19 27 31 62 58 35 29 21 18
  3. 102153 104123 96564 125565 132255 115454 114555 132255 129564 126455 124578

従属変数はデータセット3であり、データセット1と2は独立変数です。

4

3 に答える 3

12

はい、もちろん、基本的な線形モデル フィッティング関数のweights=オプションがあります。lm()簡単な例:

R> df <- data.frame(x=1:10)
R> lm(x ~ 1, data=df)            ## i.e. the same as mean(df$x)

Call:
lm(formula = x ~ 1, data = df)

Coefficients:
(Intercept)  
        5.5  

R> lm(x ~ 1, data=df, weights=seq(0.1, 1.0, by=0.1))

Call:
lm(formula = x ~ 1, data = df, weights = seq(0.1, 1, by = 0.1))

Coefficients:
(Intercept)  
          7  

R> 

したがって、後の観察をより重視することで、1 から 10 までのシーケンスの平均は 5.5 から 7 に移動します。

于 2011-06-16T16:57:09.347 に答える
5

まず、データセットを作成します。それらを単一のdata.frameに入れていますが、これは厳密には必要ありません。

dat <- data.frame(x1 = c(1,3,5,7,9,11,14,17,19,25, 29)
                  , x2 = c(17, 31, 19, 27, 31, 62, 58, 35, 29, 21, 18)
                  , y  = c(102153, 104123, 96564, 125565, 132255, 115454
                           , 114555, 132255, 129564, 126455, 124578)
                  )

次に、モデルを推定します。

> lm(y ~ x1 + x2, data = dat)

Call:
lm(formula = y ~ x1 + x2, data = dat)

Coefficients:
(Intercept)           x1           x2  
  104246.37       906.91        85.76

第三に、@Dirkの提案に従って必要に応じて重みを追加します。

4番目で最も重要なこと-Rでの回帰に関するチュートリアルを1つか2つ読んでください。Googleはこれをトップヒットとして取り上げています:http ://www.jeremymiles.co.uk/regressionbook/extras/appendix2/R/

于 2011-06-16T17:32:50.383 に答える
0

これについての別の見方です。最初に重みマトリックスを作成できます。例えば:

samplevar = var(ydata)

M = diag(40,1/samplevar)

この時点で、M は 40x40 の対角行列です。M に diag を適用すると、ベクトルに変換できます。

M_vector = diag(M)

次に、これを使用しますlm

   lm ( YXDATAFRAME, weights=M_vector)
于 2014-03-19T17:09:30.877 に答える