Шляпная матрица бета-регрессии

Я пытаюсь рассчитать бета-регрессию вручную, используя матрицу Шляпы. Я использую идею ответа https://stats.stackexchange.com/questions/8126/how-to-calculate-the-hat-matrix-for- логистической-регрессии-in-r?noredirect=1&lq =1. Но у меня это не работает. Далее я не уверен, правильно это или нет. Пожалуйста, помогите.
Мой код

        require(betareg)
df<-data("ReadingSkills")
y<-ReadingSkills$accuracy
n<-length(y)
x1<-rnorm(n,0,1)
x2<-rnorm(n,0,1)

X<-cbind(1,x1, x2)


bfit <- solve(t(X) %*% X + u * diag(3)) %*% t(X) %*% y
bfit1<-betareg(accuracy ~ x1+x2, data = ReadingSkills, link="logit")
bfit
bfit1

v <- 1/(1+exp(-X%*%bfit))
VX <- X*v 
H <- VX%*%solve(crossprod(VX,VX),t(VX))

1 ответ

Эта задача лучше всего подходит для перекрестной проверки, поскольку для доказательства требуются математические уравнения. Но мы все равно можем написать код здесь. В любом случае, поскольку вас интересуют коэффициенты, имеет смысл не так просто, как, не имеет решения в закрытой форме для MLE. Для оптимизации необходимо использовать любые итерационные методы. Ниже я использую легкодоступную функцию из базы R.

      y<-ReadingSkills$accuracy
set.seed(1)
n<-length(y)
x1<-rnorm(n,0,1)
x2<-rnorm(n,0,1)
X<-cbind(1,x1, x2)



bfit1<-betareg(accuracy ~ x1+x2, data = ReadingSkills, link="logit")

bfit1

Call:
betareg(formula = accuracy ~ x1 + x2, data = ReadingSkills, 
    link = "logit")

Coefficients (mean model with logit link):
(Intercept)           x1           x2  
    1.30730      0.28936     -0.08727  

Phi coefficients (precision model with identity link):
(phi)  
3.409  

Можем ли мы сделать то же самое напрямую, не завися отфункция? Да, конечно. мы просто пишем логарифмическую функцию правдоподобия и оптимизируем ее для 4 параметров, то есть 3 бета-версий и коэффициента фи:

      ll <- function(par){
  mu <- c(plogis(X %*% head(par, -1)))
  phi <- tail(par, 1)
  -sum(dbeta(y, mu*phi, (1-mu)*phi, log = TRUE))
}

optim(runif(ncol(X) + 1),ll)

$par
[1]  1.30733153  0.28936064 -0.08723266  3.40954180

$value
[1] -27.84788

$counts
function gradient 
     169       NA 

$convergence
[1] 0

$message
NULL
  

Вы можете видеть, что результатыточно соответствует тому, что мы имеем в бета-регрессии.

Другие вопросы по тегам