Преобразование коэффицентной функции R в Python - PullRequest
0 голосов
/ 08 мая 2019

У меня есть скрипт R, который вычисляет перехват в соответствии с кодом, указанным ниже

library(zoo)
data = matrix(rexp(200), 10)
X <- data[,3]
Y <- data[,4]
input <- cbind(X,Y)
betas <- rollapply(input,width=2,FUN=function(z) coef(lm(Y~X,data = as.data.frame(z))),by.column=FALSE,align="right")

Я искал функцию python, которая поможет мне в этом! Какие варианты у меня здесь?

Ответы [ 2 ]

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

Для соответствия регрессии вы можете использовать scikitlearn или statmodels. Scikitlearn более удобен, если вы знаете ООП.

import numpy as np
from sklearn.linear_model import LinearRegression

# create a random sample
X_sample = np.random.normal(10, 5, 10)
# create a model simulation
y_sample = 3 + 4*X_sample + np.random.normal(0, 1, 10)
# Scikitlearn expect X values as array of array
X = np.expand_dims(X_sample, axis=1)

# fit a model
reg = LinearRegression().fit(X, y_sample)
# Alternative fit
# lrm = LinearRegression()
# reg = lrm.fit(X, y_sample)

# print r-square, intercept value and coefficients
print(reg.score(X, y_sample))
print(reg.intercept_)
print(reg.coef_)

Кстати, это не проблема панд. Вы можете взглянуть на API Scikit-Learn, как использовать pandas-фрейм данных для шинирования, и обучающую модель.

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

Есть несколько вариантов. Вы можете использовать функцию LinearRegression из библиотеки scikit-learn:

import numpy as np
from sklearn.linear_model import LinearRegression

X = np.array([[1, 5], [5, 2], [7, 2], [34, 3]])
y = np.dot(X, np.array([1, 2])) + 6
reg = LinearRegression().fit(X, y)
reg.score(X, y)
reg.coef_
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...