Применить функцию nls () к нескольким подмножествам

Мне нужно запустить нелинейную регрессию наименьших квадратов для всего набора данных, а затем повторить регрессию для нескольких подмножеств этого набора данных. Я могу сделать это для одного подмножества; например (где y - общее логистическое уравнение, а x - вектор от 1 до 20):

example = nls(x ~ y, subset = c(2:20))

но я хочу сделать это для 3:20, 4:20, 5:20 и т. д. Я пробовал цикл for:

datasubsets <- sapply(2:19, seq, to = 20)
for (i in 1:19){
    example[i] = nls(x ~ y, subset = datasubsets[i])
}

но я получаю сообщение «Ошибка в xj [i]: недопустимый индекс типа 'list'». Я бы очень хотел избежать 20-кратного копирования и вставки nls (). Любая помощь очень ценится.


r nls
person Nigel Stackhouse    schedule 11.09.2012    source источник
comment
Вы пробовали datasubsets[[i]]?   -  person A5C1D2H2I1M1N2O1R2T1    schedule 11.09.2012
comment
Может, я сплю, но разве sapply(2:19,function(jj) nls(x~y,subset=jj:20)) это за тебя не делает?   -  person Carl Witthoft    schedule 11.09.2012
comment
Хорошая мысль. Я пробовал это, и в настоящее время консоль R зависла при попытке вычисления. Он все еще сбивается ... Что ты имеешь в виду под jj?   -  person Nigel Stackhouse    schedule 12.09.2012
comment
Моя проблема была в моем собственном скрипте для y, так что теперь он отлично работает!   -  person Nigel Stackhouse    schedule 12.09.2012


Ответы (1)


Это делает свою работу: sapply(2:19,function(jj) nls(x~y,subset=jj:20)).

person Nigel Stackhouse    schedule 11.09.2012
comment
Рад, что это сработало для вас. Установите флажок рядом с этим ответом, чтобы вопрос был помечен как ответ. - person Carl Witthoft; 12.09.2012