3

行数が等しくない2つのデータフレームがあります。しかし、両方のデータ フレームのデータを平滑化し、それらを一緒にプロットする必要があります。各データフレームを lowess/loess で平滑化できます。ただし、両方のデータフレームの線を一緒にプロットしようとすると、通常、「行数が等しくありません」というエラーが発生します。を使用してこれを回避する方法を見つけましたspline。以下が有効かどうか知りたいです。

tmp1 <- spline( lowess( df1[,1], df[,2] ), n = 20 )
tmp2 <- spline( lowess( df2[,1], df2[,2] ), n = 20 )

plot( tmp1[,1], tmp1[,2], type="l" )
lines( tmp2[,1], tmp2[,2], col="red" )

lowessデータポイントの数を制限したいので、オブジェクトのスプラインをその表現でプロットすることが「統計的に」有効かどうかを知りたいです。lowessこれは、異なるシリーズへのオンに含まれるポイント数が異なる場合に特に当てはまりますか?

4

1 に答える 1

1

splinesあなた (および私) が行と列としてアドレス指定できるオブジェクトを返さないことを覚えていれば、うまくいったでしょう。ベクトルの 2 つの要素のリストを返します。したがって、2 番目の "df" のスペルを修正し、"[[" を使用する必要があります。

# test data
df1 <- data.frame(x=rnorm(100), y=rpois(100, lambda=.5))
df2 <- data.frame(x=rnorm(200), y=rpois(200, lambda=.5))

tmp1 <- spline( lowess( df1[,1], df1[,2] ), n = 20 )
tmp2 <- spline( lowess( df2[,1], df2[,2] ), n = 20 )

plot( tmp1[[1]], tmp1[[2]], type="l" )
lines( tmp2[[1]], tmp2[[2]], col="red" )

ポイントのいずれかを表示するには ylim を展開する必要があるため、この例は始めるのに適していない可能性があります。

 plot( tmp1[[1]], tmp1[[2]], type="l", ylim=c(0,4) )
 lines( tmp2[[1]], tmp2[[2]], col="red" )
 points(jitter(df2[[1]]), df2[[2]],  cex=0.3, col="blue")
 points(jitter( df1[[1]]), df1[[2]], cex=0.3, col="red")
于 2011-10-28T21:18:01.037 に答える