Преобразование массива в формулу в R - PullRequest
0 голосов
/ 29 июля 2010

У меня есть массив с датами в качестве индексов, которые я строю.Я хотел бы построить кривую LOESS вместе с ней.Тем не менее, вход для лесс является формулой.Есть ли хороший способ определить формулу от индекса массива до значения, которое я затем могу дать функции лёсса?

Ответы [ 2 ]

2 голосов
/ 29 июля 2010

Посетите страницу справки для loess() - здесь есть несколько примеров указания формулы.По сути, вам нужно поместить ваши данные в data.frame объект с переменными, которым даны соответствующие имена, тогда формула будет y ~ x, где x и y - это имена переменных, которые вы хотите получить на x- иОсь Y соответственно.

Я предпочитаю функцию lowess(), которая является более быстрой и простой альтернативой.Он имеет меньше настраиваемых параметров, чем loess(), но он так же хорош во многих приложениях.Вот некоторые ссылки , описывающие различия между двумя функциями.

Ниже приведен простой пример для loess() и lowess()

## create an example data set                                                                                                                                
x <- sort(rpois(100,10) + rnorm(100,0,2))
y <- x^2 + rnorm(100,0,7)
df <- data.frame(x = x,y = y)
plot(x,y)
## fit a lowess and plot it                                                                                                                                  
l.fit1 <- lowess(x,y,f = 0.3)
lines(l.fit1, col = 2,lwd = 2)

## fit a loess and plot it                                                                                                                                   
l.fit2 <- loess(y ~ x, data = df)
lines(x,predict(l.fit2,x), col = 3,lwd = 2)
0 голосов
/ 29 июля 2010

Есть несколько способов сделать то, что вы хотите; самое простое - использовать scatter.smooth , который более или менее объединяет все, что вам нужно (график данных, подбор лесса и график кривой), в один функциональный вызов.

data(AirPassengers)                # a monthly time series supplied w/ base R install
scatter.smooth( x=1:length(AP), 
                y = as.vector(AP), 
                pch=20,            # this line and lines below are just aesthetics
                col="orange", 
                lty="dotted", 
                lwd=1.5, 
                xlab="")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...