Генерация выборок данных из регрессии Пуассона

13

Мне было интересно, как вы будете генерировать данные из уравнения регрессии Пуассона в R? Я немного растерялся, как подойти к проблеме.

Поэтому, если я предполагаю, что у нас есть два предиктора и X 2, которые распределены N ( 0 , 1 ) . И перехват равен 0, и оба коэффициента равны 1. Тогда моя оценка просто:Икс1Икс2N(0,1)

журнал(Y)знак равно0+1Икс1+1Икс2

Но как только я рассчитал log (Y) - как мне рассчитать количество пуассонов, основываясь на этом? Каков параметр скорости для распределения Пуассона?

Если бы кто-нибудь мог написать краткий скрипт R, который генерирует регрессионные образцы Пуассона, это было бы здорово!

Майкл
источник

Ответы:

24

Модель пуассоновской регрессии предполагает распределение Пуассона для Y и использует журналфункция связи. Итак, для одной объясняющей переменнойИкс, предполагается, что Y~п(μ) (и что Е(Y)знак равноВ(Y)знак равноμ) и это журнал(μ)знак равноβ0+β1Икс, Генерация данных по этой модели легко выполняется. Вот пример, который вы можете адаптировать в соответствии со своим сценарием.

>   #sample size
> n <- 10
>   #regression coefficients
> beta0 <- 1
> beta1 <- 0.2
>   #generate covariate values
> x <- runif(n=n, min=0, max=1.5)
>   #compute mu's
> mu <- exp(beta0 + beta1 * x)
>   #generate Y-values
> y <- rpois(n=n, lambda=mu)
>   #data set
> data <- data.frame(y=y, x=x)
> data
   y         x
1  4 1.2575652
2  3 0.9213477
3  3 0.8093336
4  4 0.6234518
5  4 0.8801471
6  8 1.2961688
7  2 0.1676094
8  2 1.1278965
9  1 1.1642033
10 4 0.2830910
ocram
источник
3

Если вы хотите сгенерировать набор данных, который идеально соответствует модели, вы можете сделать что-то вроде этого R:

# y <- exp(B0 + B1 * x1 + B2 * x2)

set.seed(1234)

B0 <-  1.2                # intercept
B1 <-  1.5                # slope for x1
B2 <- -0.5                # slope for x2

y <- rpois(100, 6.5)

x2 <- seq(-0.5, 0.5,,length(y))
x1 <- (log(y) - B0 - B2 * x2) / B1

my.model <- glm(y ~ x1 + x2, family = poisson(link = log))
summary(my.model)

Который возвращает:

Call:
glm(formula = y ~ x1 + x2, family = poisson(link = log))

Deviance Residuals: 
       Min          1Q      Median          3Q         Max  
-2.581e-08  -1.490e-08   0.000e+00   0.000e+00   4.215e-08  

Coefficients:
            Estimate Std. Error z value Pr(>|z|)    
(Intercept)  1.20000    0.08386  14.309  < 2e-16 ***
x1           1.50000    0.16839   8.908  < 2e-16 ***
x2          -0.50000    0.14957  -3.343 0.000829 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1   1

(Dispersion parameter for poisson family taken to be 1)

    Null deviance: 8.8619e+01  on 99  degrees of freedom
Residual deviance: 1.1102e-14  on 97  degrees of freedom
AIC: 362.47

Number of Fisher Scoring iterations: 3
Марк Миллер
источник