-
21-12-2019 - |
質問
私のデータセットはかなり大きいので、私は一例として10行のデータを使用しています(私はExcelでの答えを取り上げましたが、コードのヘルプが必要なのでR - でそれを複製することはできません):< / P>
constant<-c(6.10,5.12,5.04,4.97,4.89,4.89,4.87,4.87,4.88,4.99)
years.star<-c(219.87,153.69,146.19,139.35,127.27,127.27,121.91,121.91,112.28,99.98)
years.sq.star<-c(7915.41,4610.71,4239.78,3901.93,3309.27,3309.27,3047.95,3047.95,2582.58,1999.62)
ln.salary<-c(28.43,23.12,21.59,21.44,22.71,23.33,20.29,21.76,21.48,22.92)
try<-data.frame(constant,years.star,years.sq.star,ln.salary)
.
ln.salaryは依存変数です。あなたが得るべき答えは次のとおりです。
intercept- 6.474922
beta1- -0.15026
beta2- 0.002769
.
私の問題は、rでは、lm関数を使用すると、私の切身が上記の値を持っていることはわかりません。それだけで1,1,1,1,1,1,1,1,1,1の代わりに、6.10,5.12など使用しています。
SO test<-lm(ln.salary~years.star+years.sq.star,data=try,weights=constant)
はこの回答を生み出すだけでは機能しません:
intercept- 207.1706
beta1- -3.13214
beta2- 0.064416
.
本質的に、私はデータを撮り、ヘテロ過面性を調整しようとしました。最後のステップでは、私は常に星と私の変換されたX変数を持っています。最後のステップは、上記の答えを与えるために、定数とX変数にLN.Salaryを復元することです。
私はExcelでそれをすることができますが、rではなく、私はコード権を得ていないことを知っています。 Intercept(1,1,1 ...)を生成するLM関数が問題です。あなたは助けてください。
親切 d
解決
各行に「傍受」を変更したい場合は、「重さ」ではなく「オフセット」を使用する必要があります。
test<-lm(ln.salary~years.star+years.sq.star+0,data=try,offset=constant)
Call:
lm(formula = ln.salary ~ years.star + years.sq.star + 0, data = try,
offset = constant)
Coefficients:
years.star years.sq.star
0.236355 -0.003881
.
これはExcelに同意しないという事実にそれほど感銘を受けていません。そのプログラムの線形回帰プログラムは、むしろフレケイであることが知られています。一方、あなたが体重を使う必要があると確信しているのであれば、この用語の3つの異なる可能な解釈のどれを明確にするべきです。(選択:レプリケーション、サンプリング、逆分散)。「重み」のlm
解釈は、逆分散バージョンです。(それはそのヘルプページで「変動に反比例しているとして説明しています)」では、それらの「定数」-termsが分散である場合は、おそらく必要な値が必要です。
> (test<-lm(ln.salary~years.star+years.sq.star+0, data=try, weights=1/constant) )
Call:
lm(formula = ln.salary ~ years.star + years.sq.star + 0, data = try,
weights = 1/constant)
Coefficients:
years.star years.sq.star
0.309391 -0.005189
. 他のヒント
特定の定数での傍受を「修正」したい場合は、応答からその定数の値を差し引いて、傍受モデルに合わせてください。たとえば
ですtest <- lm( ln.salary - 6.474922 ~ years.star + years.sq.star + 0,
data=try, weights=constant)
.
ここでは傍受用語を減算し、次に傍受用語に合わせないように、式に+0
を追加します。そのモデルで
Call:
lm(formula = ln.salary - 6.474922 ~ years.star + years.sq.star +
0, data = try, weights = constant)
Coefficients:
years.star years.sq.star
0.197384 -0.002842
.