Как подогнать регрессию типа


9

У меня есть данные временного ряда, где измеряемая переменная представляет собой дискретные положительные целые числа (числа). Я хочу проверить, есть ли тенденция со временем (или нет). Независимая переменная (x) находится в диапазоне 0-500, а зависимая переменная (y) находится в диапазоне 0-8.

Я думал, что я отвечу на это, подгоняя регрессию формы, y = floor(a*x + b)используя обычные наименьшие квадраты (OLS).

Как бы я сделал это с помощью R (или Python)? Существует ли существующий пакет для него, или мне лучше написать свой собственный алгоритм?

PS: я знаю, что это не идеальный метод, но мне нужно сделать относительно простой анализ, который я действительно могу понять - мой опыт - биология, а не математика. Я знаю, что нарушаю предположения об ошибке в измеряемой переменной и независимости измерений от времени.


5
Хотя математически естественно попытаться регрессировать эту форму, за ней скрывается статистическая ошибка: теперь термин ошибки будет сильно коррелировать с прогнозируемым значением. Это довольно серьезное нарушение допущений OLS. Вместо этого используйте технику, основанную на подсчете, как предложено в ответе Грега Сноу (Я с радостью проголосовал за этот вопрос, потому что он отражает некоторые реальные мысли и ум. Спасибо, что
задали

Ответы:


11

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

Более распространенный способ подбора данных подсчета - это использование регрессии Пуассона с использованием glmфункции in. RПервый пример на странице справки - это регрессия Пуассона, хотя, если вы не очень хорошо знакомы со статистикой, лучше проконсультироваться со статистиком, чтобы убедиться, что что вы делаете вещи правильно.

Если значение 8 является абсолютным максимумом (невозможно увидеть большее количество, а не только то, что вы видели), то вы можете рассмотреть вопрос о пропорциональной регрессии логистических шансов, есть несколько инструментов, чтобы сделать это в пакетах R, но вы действительно стоит привлечь статистика, если вы хотите это сделать.


«Вы говорите, что прогнозируемый результат является случайным для пошаговой функции, а не для целочисленных значений вокруг плавно растущих отношений». В итоге я пошел с пуассоновской регрессией по glm. Это не идеальный выбор, но «достаточно хороший» для того, что мне нужно.
afaulconbridge

10

Очевидно, что предложение Грега - первое, что нужно попробовать: регрессия Пуассона является естественной моделью во многих конкретных случаях. ситуации.

Однако модель, которую вы предлагаете, может появиться, например, когда вы наблюдаете округленные данные: с обычными ошибками .

Yi=axi+b+ϵi,
ϵi

Я думаю, что интересно посмотреть, что можно с этим сделать. Обозначим через cdf стандартной нормальной переменной. Если , то с использованием знакомых компьютерных обозначений.FϵN(0,σ2)

P(ax+b+ϵ=k)=F(kb+1axσ)F(kbaxσ)=pnorm(k+1axb,sd=σ)pnorm(kaxb,sd=σ),

Вы наблюдаете точки данных . Логарифмическая вероятность определяется как Это не идентично наименьших квадратов. Вы можете попытаться максимизировать это с помощью численного метода. Вот иллюстрация в R:(xi,yi)

(a,b,σ)=ilog(F(yib+1axiσ)F(yibaxiσ)).
log_lik <- function(a,b,s,x,y)
  sum(log(pnorm(y+1-a*x-b, sd=s) - pnorm(y-a*x-b, sd=s)));

x <- 0:20
y <- floor(x+3+rnorm(length(x), sd=3))
plot(x,y, pch=19)
optim(c(1,1,1), function(p) -log_lik(p[1], p[2], p[3], x, y)) -> r
abline(r$par[2], r$par[1], lty=2, col="red")
t <- seq(0,20,by=0.01)
lines(t, floor( r$par[1]*t+r$par[2]), col="green")

lm(y~x) -> r1
abline(r1, lty=2, col="blue");

округленная линейная модель

В красном и синем цвете линии найдены путем численного максимизации этой вероятности и наименьших квадратов соответственно. Зеленая лестница - это для найденного по максимальному правдоподобию ... это говорит о том, что вы можете использовать наименьшие квадраты, вплоть до перевода на 0,5, и получить примерно такой же результат; или, что наименьшие квадраты хорошо соответствуют модели где - ближайшее целое число. Округленные данные встречаются так часто, что я уверен, что это известно и было тщательно изучено ...a x + b a , b b Y i = [ a x i + b + ϵ i ] , [ x ] = x + 0,5 ax+bax+ba,bb

Yi=[axi+b+ϵi],
[x]=x+0.5

4
+1 Я люблю эту технику и несколько лет назад действительно написал статью об этом в журнал анализа рисков. (Некоторые аналитики риска весьма заинтересованы в интервальных данных.) Они были отклонены как «слишком математические» для их аудитории. :-(. Один совет: при использовании численных методов всегда полезно указывать хорошие начальные значения для решения. Рассмотрите возможность применения OLS к необработанным данным, чтобы получить эти значения, а затем «отшлифуйте» их с помощью числового оптимизатора.
whuber

Да, это хорошее предложение. На самом деле, в этом случае я выбираю удаленные значения, чтобы подчеркнуть, что «это работает», но на практике ваше предложение будет единственным решением, чтобы избежать начала из очень плоской области, в зависимости от данных ...
Элвис
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.