Используйте байесовский вывод, чтобы найти связь между переменными - PullRequest
0 голосов
/ 29 августа 2018

У меня много данных, как на картинке ниже, которые связаны друг с другом. Я хочу составить уравнение, описывающее эти отношения, что-то вроде Power = a * WindSpeed ^ b. Как я могу использовать байесовский умозаключение, чтобы найти a и b? Я хочу использовать R для этого. Power & Wind

1 Ответ

0 голосов
/ 30 августа 2018

Добро пожаловать в ТАК и удачи. Не забывайте обращать внимание на комментарии (они действительно актуальны, и вы можете увеличить вероятность получения ответа). Ниже приведен пример использования байесовской одномерной регрессии с использованием пакета Bolstadt.

library(Bolstad)

# Simulation of Power vs Wind
# Power = 5 * Windspeed ^ 2
set.seed(123)
n <- 100

# y = Power
# x = WindSpeed
# e = error term

x <- (1:(25 * n))/ n
e <- rnorm(length(x)) / 10

# y = a * x ^ b
# log(y) = log(a) + b * log(x) + e  
# or
# in exponential form
y <- exp(log(5) + e) * x ^ 2

# bayes univariate linear regression model
z <- bayes.lin.reg(log(y), log(x))
# Standard deviation of residuals:  0.0943 
# Posterior Mean Posterior Std. Deviation
# -------------- ------------------------
#   Intercept:  6.076          0.0059657               
#   Slope:      1.996          0.0062209    

Distribution

# ------------------------------------------------
# pay attention the result of bayession regression
# are shifted for intercept by the mean
# is is accouted as below
intercept_shifted <- z$intercept$mean - z$slope$mean * mean(log(x))
intercept_shifted
# [1] 1.617218

# validate by standar linear model:
lm(log(y) ~ log(x))
# Coefficients:
#  (Intercept)       log(x)  
#  1.617        1.996  

a = exp(intercept_shifted) 
a
# [1] 5.039051
b = z$slope$mean
b
# [1] 1.996134
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...