Линейная регрессионная кривая от R до Python / Numpy - PullRequest
0 голосов
/ 10 ноября 2018

Изучаете python / numpy и задаетесь вопросом, может ли кто-нибудь помочь с преобразованием уравнения линейной кривой регрессии из R в python / numpy?

library(zoo)
inertiaTS <- function(y, n) {
  x <- 1:n;
  c.ab=rollapply(y,n,function(yt){
    coef(lm(yt~x))
  },align = "right")                                                                                                                    
  plot(y,col=2)
  lines(c.ab[ ,2]*x[n]+c.ab[ ,1],col=4,lwd=2)
  list(axpb=c.ab[ ,2]*x[n]+c.ab[ ,1],rolcoef=c.ab)
}

1 Ответ

0 голосов
/ 08 мая 2019

Я не уверен, что понимаю, о чем вы спрашиваете, но если вы хотите разместить (линейную регрессию) некоторые данные в python и построить их, вы можете использовать следующее:

import numpy as np
import matplotlib.pyplot as plt
from scipy.optimize import curve_fit


#just some data. Make sure that they are stored in an array, not in a list!!!:
y = np.array([1, 3.8, 7.1, 10.6, 12.6])
x = np.array([0, 1, 2, 3, 4])


#make sure that x is the first argument of linFunc!!
def linFunc(x, k, d):
    return k*x+d

#fitting Algorythm. cop gives you the 'best' values of k and d, cov is the covariance Matrix.
cop, cov = curve_fit(linFunc, x, y)

xplot = np.linspace(0, 4, 10**4)
plt.figure("data and fitted line")
plt.plot(x, y, 'ro', label = "datapoints")
plt.plot(xplot, linFunc(xplot, *cop), 'b--', label = "fittet function")
plt.xlabel("x-axis")
plt.ylabel("y-axis")
plt.legend()
plt.show()
...