У меня есть два вектора x и y, и я хочу вычислить регрессию качения для тех, например, на (x(1:4),y(1:4)), (x(2:5),y(2:5)), ...
Есть ли уже функция для этого? Лучший алгоритм, который я имею в виду для этого, - O (n), но применение отдельных линейных регрессий на каждом подмассиве будет O (n^2). Я работаю с Matlab и Python (numpy).Эффективный способ выполнения линейной регрессии качения
ответ
Нет, нет функции, которая будет выполнять скользящую регрессию, возвращая все статистические данные, которые вы хотите, делая это эффективно.
Это не значит, что вы не можете написать такую функцию. Для этого нужно было бы вызвать несколько вызовов инструмента, например conv или filter. Так будет работать инструмент Savitsky-Golay, который делает большую часть того, что вы хотите. Сделайте один вызов для каждого коэффициента регрессии.
Использование инструментов восходящего и датирования для использования/изменения предыдущих оценок регрессии не будет столь же эффективным, как вызовы conv, так как вам нужно только разложить линейную систему ONCE, когда вы затем выполняете работу с помощью conv , Во всяком случае, нет необходимости делать обновление, если точки равномерно распределены по ряду. Вот почему Савицкий-Голай работает.
Что вы подразумеваете под «большей частью того, что вам нужно»? Что я могу получить? –
Вы можете получить каждый коэффициент регрессии от conv. Прогнозы - это простые алгебраические операции, поэтому вычисления остатков и, следовательно, все, что их использует, тривиально. Но ни один инструмент не дает вам то, что вам нужно. Вам нужно будет написать код. – 2013-03-26 14:23:40
import numpy as np
# y=x*alpha+beta
# window_size - integer, x-numpy array, y-numpy array
x2=np.power(x,2)
xy=x*y
window = np.ones(int(window_size))
a1=np.convolve(xy, window, 'full')*window_size
a2=np.convolve(x, window, 'full')*np.convolve(y, window, 'full')
b1=np.convolve(x2, window, 'full')*window_size
b2=np.power(np.convolve(x, window, 'full'),2)
alphas=(a1-a2)/(b1-b2)
betas=(np.convolve(y, window, 'full')-alphas*np.convolve(x, window, 'full'))/float(window_size)
alphas=alphas[:-1*(window_size-1)] #numpy array of rolled alpha
betas=betas[:-1*(window_size-1)] #numpy array of rolled beta
, пожалуйста, не просто сбрасывайте код без какого-либо восклицания. – Class
- 1. Лучший способ выполнения линейной регрессии
- 2. Проверка выполнения линейной регрессии с использованием python
- 3. реализация линейной регрессии python
- 4. Коэффициент линейной регрессии
- 5. WEKA преобразование линейной регрессии
- 6. Ядро свертки линейной регрессии
- 7. Python линейной регрессии Ошибка
- 8. Программа минимальной линейной регрессии
- 9. Неисправность линейной регрессии
- 10. множественной линейной регрессии питон
- 11. линейной регрессии в КДБ
- 12. D3.js линейной регрессии
- 13. ограничения линейной регрессии в Python
- 14. Самый эффективный способ выполнения &&?
- 15. линейной регрессии с фиктивной Quarter
- 16. Как улучшить функцию линейной регрессии?
- 17. Как использовать sapply для выполнения линейной регрессии в наборе данных
- 18. Использование PCA при линейной регрессии
- 19. t-stat для линейной регрессии
- 20. Линейной регрессии - найти значение м
- 21. Отрицательные коэффициенты в линейной регрессии
- 22. Сохранить выход линейной регрессии r
- 23. Auto регрессивной Линейной регрессии data.frame
- 24. 3D-точки линейной регрессии Matlab
- 25. Предсказание значения в линейной регрессии
- 26. линейной регрессии на основе GroupBy
- 27. Что такое BigO линейной регрессии?
- 28. Ошибка типа: построение линейной регрессии
- 29. Как улучшить модель линейной регрессии
- 30. Градиентный спуск в линейной регрессии
Возможно, поиск фильтра Савицкого-Голе. – seberg
Возможно, я ошибаюсь, но не выполняет отдельные линейные регрессии также как раз от 'O (n)'? Количество раз, когда вам нужно сделать регрессию: 'O (n)', работа над каждой регрессией: 'O (1)' (при условии, что windowsize постоянна) –
То есть, если вы используете результаты предыдущей регрессии вычислить следующий, что я хочу делать, а не то, что я подразумеваю под отдельными регрессиями. –