4

たとえば、次の2つの変数の散布図があります。

x<-c(0.108,0.111,0.113,0.116,0.118,0.121,0.123,0.126,0.128,0.131,0.133,0.136)

y<-c(-6.908,-6.620,-5.681,-5.165,-4.690,-4.646,-3.979,-3.755,-3.564,-3.558,-3.272,-3.073)

そして、これら 2 つの変数の関係によりよく適合する関数を見つけたいと思います。

linear正確には、 、、 の 3 つのモデルのフィッティングを比較したいと思いexponentialますlogarithmic

各関数を自分の値に当てはめ、それぞれのケースで尤度を計算し、AIC 値を比較することを考えていました。

しかし、どこから、どのように始めればよいのか、よくわかりません。これに関する可能な限りの助けをいただければ幸いです。

事前にどうもありがとうございました。

ティナ。

4

3 に答える 3

7

私は次のような説明的なプロットから始めます:

x<-c(0.108,0.111,0.113,0.116,0.118,0.121,0.123,0.126,0.128,0.131,0.133,0.136)
y<-c(-6.908,-6.620,-5.681,-5.165,-4.690,-4.646,-3.979,-3.755,-3.564,-3.558,-3.272,-3.073)
dat <- data.frame(y=y,x=x)
library(latticeExtra)
library(grid)
xyplot(y ~ x,data=dat,par.settings = ggplot2like(),
       panel = function(x,y,...){
         panel.xyplot(x,y,...)
       })+
  layer(panel.smoother(y ~ x, method = "lm"), style =1)+  ## linear
  layer(panel.smoother(y ~ poly(x, 3), method = "lm"), style = 2)+  ## cubic
  layer(panel.smoother(y ~ x, span = 0.9),style=3)  + ### loeess
  layer(panel.smoother(y ~ log(x), method = "lm"), style = 4)  ## log

ここに画像の説明を入力

立方体モデルが必要なようです。

 summary(lm(y~poly(x,3),data=dat))

Residual standard error: 0.1966 on 8 degrees of freedom
Multiple R-squared: 0.9831, Adjusted R-squared: 0.9767 
F-statistic: 154.8 on 3 and 8 DF,  p-value: 2.013e-07 
于 2013-02-23T18:26:26.423 に答える
5

ここでは、5 つのモデルを比較する例を示します。最初の 2 つのモデルの形式により、lm適切な開始値を取得するために使用できます。( の異なる変換を使用するモデルyは比較すべきではないため、比較モデルとして と を使用するlm1のではlm2なく、開始値としてのみ使用する必要があることに注意してください。) ここnlsで、最初の 2 つのそれぞれに対して を実行します。これら 2 つのモデルの後、さまざまな次数の多項式を で試しxます。幸いなことに、一貫した定義lmを使用して(ただし、他の R モデル フィッティング関数が一貫した定義を持っているとは限りません) 、多項式にそのまま使用できます。最後に、最初の 2 つのモデルのデータと近似をプロットします。 nlsAICAIClm

AIC が低いほど良いので、nls1その後lm3.2nls2.

lm1 <- lm(1/y ~ x)
nls1 <- nls(y ~ 1/(a + b*x), start = setNames(coef(lm1), c("a", "b")))
AIC(nls1) # -2.390924

lm2 <- lm(1/y ~ log(x))
nls2 <- nls(y ~ 1/(a + b*log(x)), start = setNames(coef(lm2), c("a", "b")))
AIC(nls2) # -1.29101

lm3.1 <- lm(y ~ x) 
AIC(lm3.1) # 13.43161

lm3.2 <- lm(y ~ poly(x, 2))
AIC(lm3.2) # -1.525982

lm3.3 <- lm(y ~ poly(x, 3))
AIC(lm3.3) # 0.1498972

plot(y ~ x)

lines(fitted(nls1) ~ x, lty = 1) # solid line
lines(fitted(nls2) ~ x, lty = 2) # dashed line

ここに画像の説明を入力

さらにいくつかのモデルを追加し、その後それらを修正して表記を変更しました。また、Ben Bolker のコメントをフォローアップするために、AIC上記AICcのすべてを AICcmodavg パッケージから置き換えることができます。

于 2013-02-23T20:04:44.073 に答える
0

Box と Cox による変換に関する古典的な論文を読むことから始めることができます。変換を比較する方法と、潜在的な変換のセットまたはファミリ内で意味のある変換を見つける方法について説明します。対数変換と線形モデルは、Box-Cox ファミリーの特殊なケースです。

そして@agstudyが言ったように、常にデータもプロットしてください。

于 2013-02-23T18:50:08.647 に答える