6

この黄土適合の結果を でどのようloessに再現できlowessますか?

黄土コード:

> data = data.frame(x=c(1,0.5,3,4,5,5.5,6,7), y=c(10, 25, 38, 44.5, 500, 550, 600, 705))
> fit = loess("y ~ x", data=data)
> new_y = predict(fit, data$x)
> new_y
[1]   6.251022  28.272100  -2.840750 150.006042 481.927307 563.161187 640.825415 693.166150

lowess コード:

> new_fit = lowess(data, f=0.8)
> new_fit
$x
[1] 0.5 1.0 3.0 4.0 5.0 5.5 6.0 7.0

$y
[1]  -4.330119  38.931265 255.000000 400.000000 500.000000 550.241949 601.519903 704.247275

結果は大きく異なります。yの指定された値の新しい適合値を取得しようとしていますxloess与える

[1]   6.251022  28.272100  -2.840750 150.006042 481.927307 563.161187 640.825415 693.166150

lowess与えながら:

[1]  -4.330119  38.931265 255.000000 400.000000 500.000000 550.241949 601.519903 704.247275

fit とvalues の場合と同様に、新しい値lowessに対して非常によく似た結果が得られるように、呼び出しを書き直すにはどうすればよいですか? ありがとう。ypredictloessx

4

3 に答える 3

4

なぜこれが必要なのですか?

一般の場合は仕方ないと思います。ほぼ同じ結果が得られる特定のケースを次に示しますが、最後の値は何らかの理由でまだ異なります。

fit1 <- loess(y~x,data=data,span=0.8,degree=1)
predict(fit1)
#[1]  19.08622  12.55692  37.93642 188.35019 401.53528 506.87040 591.41854 740.71060

fit2 <- lowess(data$x,data$y,f=0.8,iter=0)
fit2

# $x
# [1] 0.5 1.0 3.0 4.0 5.0 5.5 6.0 7.0
# 
# $y
# [1]  12.55692  19.08622  37.93642 188.35019 401.53528 506.87040 591.41854 741.12187
#Note that lowess reorders by x.
于 2013-06-30T15:29:22.347 に答える
1
data = data.frame(x=c(1,0.5,3,4,5,5.5,6,7), y=c(10, 25, 38, 44.5, 500, 550, 600, 705))
 fit = loess("y ~ x", data=data)
 new_y = predict(fit, data$x)
 plot( data$x , new_y)
lines(lowess(data, f=0.8)$x, lowess(data, f=0.8)$y)
# Obviously lowess with f=0.8 is giving different smoothing

低い f 値と比較する

lines(lowess(data, f=0.8)$x, lowess(data, f=0.5)$y, col="red") 

ここに画像の説明を入力

于 2013-06-30T23:03:18.630 に答える