Сглаживание данных с неодинаковым количеством наблюдений для построения? - PullRequest
3 голосов
/ 28 октября 2011

У меня два фрейма данных с неодинаковым количеством строк.Но мне нужно сгладить данные в обоих фреймах данных и построить их вместе.Я могу сгладить каждый фрейм данных с 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 на разных сериях содержит неодинаковое количество точек?

1 Ответ

1 голос
/ 29 октября 2011

Это сработало бы, если бы вы (и я) помнили, что splines не возвращает объект, который может быть адресован в виде строки и столбца.Возвращает двухэлементный список векторов.Поэтому вам нужно исправить орфографию второго "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")
...