Подгонка синусоидальных кривых в Python - PullRequest
1 голос
/ 01 марта 2020

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

year <- c(0:100)
lm(data~sin(2*pi*year/15)+cos(2*pi*year/15))

Теперь я хочу сделать то же самое в Python Я сталкиваюсь с очень длинные методы, включающие в себя первоначальные предположения, а затем оптимизацию et c. Какой самый простой способ достижения сопоставимого результата?

1 Ответ

0 голосов
/ 17 марта 2020

Я не получил именно то, что вы ищете, я имею в виду линейную модель, вы можете попробовать линейную регрессию в sklearn следующим образом:

    import numpy as np
    from sklearn.linear_model import LinearRegression
    import matplotlib.pyplot as plt

    year        = np.arange(0, 100, 1)
    year = np.reshape(year, (1, -1))
    year_predict        = np.arange(100, 200, 1)
    year_predict        = np.reshape(year_predict, (1, -1))

    y   = np.sin(2*np.pi*year/15)+np.cos(2*np.pi*year/15)
    lm = LinearRegression()
    lm.fit(year, y)

    y_pred = lm.predict(year_predict)

    plt.plot(year[0,:], y[0,:])
    plt.plot(year_predict[0,:], y_pred[0,:])
    plt.ylabel('np.sin(2*pi*year/15)+np.cos(2*pi*year/15)')
    plt.show()

Более подробную информацию вы можете найти здесь: https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LinearRegression.html

Если у вас есть что-то неясное, напишите здесь. Мы могли бы помочь вам

...