2013-06-04 5 views
5

私はこのプログラム使用 - R

dens <- read.table('DensPiu.csv', header = FALSE) 
fl <- read.table('FluxPiu.csv', header = FALSE) 
mydata <- data.frame(c(dens),c(fl)) 

dat = subset(mydata, dens>=3.15) 
colnames(dat) <- c("x", "y") 
attach(dat) 

にいると私はDATに含まれるデータの最小二乗回帰をしたい、この関数はフォームを持っている

y ~ a + b*x 

回帰直線が特定の点P(x0、y0)(これは原点ではありません)を通過するようにします。

私はこの

x0 <- 3.15 

y0 <-283.56 

regression <- lm(y ~ I(x-x0)-1, offset=y0) 

ようにそれをやろうとしている

(私はデータ= DATが、この場合には必要ではないと思われる)が、私はこのエラーを持っている:

Error in model.frame.default(formula = y ~ I(x - x0) - 1, : variable 
lengths differ (found for '(offset)'). 

私はドン」理由を知りません。私はオフセット値を正しく定義していないと思いますが、インターネット上で例を見つけることはできませんでした。

誰でも私の説明ができますオフセットはどうですか?

+0

あなたは、データと、再現性の例をしてください提供することはできますか? – joran

+2

この質問と以前の質問との違いは何ですか? – agstudy

+0

今、私は_offset_に入るオブジェクトを定義するように求めています。私の以前の質問は、回帰を特定のポイントに渡す方法についてでした。 – amcabassi

答えて

9

オフセットの用語は、の変数xyなど)で、数値定数ではありません。したがって、適切な値でデータセット内に列を作成する必要があります。実際に

dat$o <- 283.56 
lm(y ~ I(x - x0) - 1, data=dat, offset=o) 
+0

あなたの答えをありがとう。私はポイントP(x0、y0)をデータベースに追加しました。これは_dat_の161要素です。私は 'x0 < - 3.15 y0 < - dat [161,2] 回帰< - lm(y〜I(x-x0)-1、オフセット= y0)' とこの 'y0 < - dat [161、] 回帰< - lm(y〜I(x)-1、オフセット= y0) 'しかし、どれも動作しません。私は間違って何をしていますか?私は明確にするために、コードの最初の部分を質問に追加しました。 – amcabassi

+2

あなたはまだ与えられた値で単一の定数を作成しています。オフセットとして_vector_の値を渡す必要があります。これを行う最も簡単な方法は、データセットに新しい列を作成することです。私は 'dat [161、2]'はあなたのy0が想定されるものだと仮定しますか?これを行う: 'dat $ o < - dat [161,2]; lm(y〜I(x-x0)-1、offset = o、data = dat) ' –

+0

完璧、ありがとう!私は列の代わりに行を作成していたので、これはうまくいきませんでした!お待ち頂きまして、ありがとうございます。 – amcabassi

2

、ここでの本当の問題は、(データがベクトルとして構成されている場合、または長さ)は、長さが行の数と同じであるベクターでoffsetを指定する必要があることは、あなたのデータ。予想通り、次のコードは、あなたの仕事を行います。

regression <- lm(y ~ I(x-x0)-1, offset = rep(y0, length(y)) 

ここで興味がある人のための良い説明です: http://rfunction.com/archives/223

関連する問題