Как использовать результаты первой модели для оценки второй модели? - PullRequest
0 голосов
/ 28 января 2020

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

set.seed(100)
x <- rnorm(10)
y <- 3*x+2+rnorm(10)

x0 <- 2
y0 <- 1

lm1 <- lm(y ~ x)
cfs <- coef(lm1)

a <- y0-cfs[1]*x0^cfs[2]

x1 <- rnorm(11)

x2 <- a*x1/10-2
y2 <- rnorm(11)

lm2 <- lm(y2 ~ x2)
summary(lm2)

что я пробовал с winbugs:

model;
{
  alpha ~ dnorm(0, 1.0E-6)
  b ~ dnorm(0, 1.0E-6)
  tau ~ dgamma(0.001, 0.001)
  alpha2 ~ dnorm(0, 1.0E-6)
  b2 ~ dnorm(0, 1.0E-6)
  tau2 ~ dgamma(0.001, 0.001)
  for (i in 1:n) {
    mu[i] <- alpha + b*x[i]
    y[i] ~ dnorm(mu[i], tau)
  }
  a <- y0-alpha*pow(x0, b)
  for (i in 1:n2){
    x2[i] <- a*x1[i]/10-2
  }
  for (i in 1:n2) {
    mu2[i] <- alpha2+b2*x2[i]
    y2[i] ~ dnorm(mu2[i], tau2)
  }
}

данные

list(n=1.00000E+01, n2=1.10000E+01, x0=2.00000E+00, y0=1.00000E+00, x=c(-5.02192E-01, 1.31531E-01, -7.89171E-02, 8.86785E-01, 1.16971E-01, 3.18630E-01, -5.81791E-01, 7.14533E-01, -8.25259E-01, -3.59862E-01), y=c(5.83309E-01, 2.49087E+00, 1.56161E+00, 5.40019E+00, 2.47429E+00, 2.92657E+00, -1.34226E-01, 4.65445E+00, -1.38959E+00, 3.23071E+00), x1=c(-4.38090E-01, 7.64061E-01, 2.61961E-01, 7.73405E-01, -8.14379E-01, -4.38451E-01, -7.20222E-01, 2.30945E-01, -1.15773E+00, 2.47076E-01, -9.11136E-02), y2=c(1.75738E+00, -1.37930E-01, -1.11193E-01, -6.90014E-01, -2.21794E-01, 1.82908E-01, 4.17323E-01, 1.06540E+00, 9.70202E-01, -1.01629E-01, 1.40320E+00))

inits

list(alpha=0.00000E+00, b=0.00000E+00, tau=1.00000E-06, a=0.00000E+00, alpha2=0.00000E+00, b2=0.00000E+00, tau2=0.00000E+00)

Я не знал, как обращаться с 'a', поскольку оно случайное, но вычисляется по альфе и b.

Спасибо

...