почему нет разницы между взвешенными и невзвешенными корреляциями в бета-регрессии? - PullRequest
0 голосов
/ 12 сентября 2018

Код R ниже:

> source("s.R")
[1] "unweighted"
[1] "model: linear, r.squared: 0.949843"
[1] "model: beta logit, pseudo.r.squared: 0.956150"
[1] "model: beta loglog, pseudo.r.squared: 0.891941"
[1] "weighted"
[1] "model: linear, r.squared: 0.950847"
[1] "model: beta logit, pseudo.r.squared: 0.956150"
[1] "model: beta loglog, pseudo.r.squared: 0.891941"
Warning messages:
1: In betareg.fit(X, Y, Z, weights, offset, link, link.phi, type, control) :
  no valid starting value for precision parameter found, using 1 instead
2: In betareg.fit(X, Y, Z, weights, offset, link, link.phi, type, control) :
  no valid starting value for precision parameter found, using 1 instead
> 

Значения корреляции от Betreg одинаковы для взвешенных и невзвешенных. Это разумно или у меня ошибка?

Кроме того, о чем меня предупреждают предупреждающие сообщения?

Похожие question .

printOneSummary<-function(label,model) {
    if(is(model,"lm")) print(sprintf("model: %s, r.squared: %f",label,summary(model)$r.squared))
    else print(sprintf("model: %s, pseudo.r.squared: %f",label,summary(model)$pseudo.r.squared))

}
printSummary<-function(models) {
    for(i in 1:length(models)) 
        printOneSummary(modelLabels[i],models[[i]])
}
makeModels<-function(x,y,weights,weighted){
    models <-NULL
    if(weighted) {
        print("weighted")
        m<-lm(y~x,na.action=na.omit,weights=weights)
        logit<-betareg(y~x,na.action=na.omit,weights=weights)
        loglog <- betareg(y~x,na.action=na.omit,weights=weights,link = "loglog")
        models<-list(m,logit,loglog)
    } else {
        print("unweighted")
        m<-lm(y~x,na.action=na.omit)
        logit<-betareg(y~x,na.action=na.omit)
        loglog<-betareg(y~x,na.action=na.omit,link="loglog")
        models<-list(m,logit,loglog)
    }
}    
if(!require(betareg)){install.packages("betareg")}
set.seed(123)
modelLabels<-c("linear","beta logit","beta loglog")
x=seq(100,200,length.out=60)
y=1-(.1+.8*sqrt((x-100)/100))
df<-data.frame(x,y)
df$n<-runif(length(x),1,10)
df$size<-df$n/sum(df$n)
models<-makeModels(df$x,df$y,df$size,F)
printSummary(models)
models<-makeModels(df$x,df$y,df$size,T)
printSummary(models)

1 Ответ

0 голосов
/ 14 сентября 2018

Спасибо, что заметили это! Это действительно ошибка в betareg(), которая до сих пор полностью игнорировала аргумент weights. Я только что исправил это в версии для разработки на R-Forge: https://R -Forge.R-project.org / R /? Group_id = 1220

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...