我在R中进行对数二项式回归。我想控制模型中的协变量(年龄和BMI-两个连续变量),而因变量是结果(是或否),自变量是组(1或2)。
fit<-glm(Outcome~Group, data=data.1, family=binomial(link="log"))
它工作正常。
当我尝试将年龄放入模型时,它仍然可以正常工作。 但是,当我将BMI放入模型时,它给了我以下内容:
Error: no valid set of coefficients has been found: please supply starting values
我尝试过不同的起始值组合,例如:
fit<-glm(Outcome~Group+Age+BMI, data=data.1, family=binomial(link="log"), start=c(0,0,0,0)
甚至是start =(1,4)或start = 4但它仍然给我错误。
它还说:
Error in glm.fit(x = c(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, :
length of 'start' should equal 4 and correspond to initial coefs for c("(Intercept)", "group1", "age", "bmi")
。
对此的任何帮助将不胜感激!
编辑:添加可重复的示例。
N=50
data.1=data.frame(Outcome=sample(c(0,0,1),N, rep=T),Age=runif(N,8,58),BMI=rnorm(N,25,6),
Group=rep(c(0,1),length.out=N))
data.1$Group<-as.factor(data.1$Group)
fit<-glm(Outcome~Group, data=data.1, family=binomial(link="log"))
coefini=coef(glm(Outcome~Group+Age+BMI, data=data.1,family =binomial(link = "logit") ))
fit<-glm(Outcome~Group+Age+BMI, data=data.1, family=binomial(link="log"),start=coefini)
答案 0 :(得分:5)
经过一些试验和错误后,使用set.seed(123)
:
coefini=coef(glm(Outcome~Group+Age, data=data.1,family =binomial(link = "log") ))
fit2<-glm(Outcome~Group+Age+BMI, data=data.1, family=binomial(link="log"),start=c(coefini,0))
summary(fit2)
Call:
glm(formula = Outcome ~ Group + Age + BMI, family = binomial(link = "log"),
data = data.1, start = c(coefini, 0))
Deviance Residuals:
Min 1Q Median 3Q Max
-1.2457 -0.9699 -0.7725 1.2737 1.6799
Coefficients:
Estimate Std. Error z value Pr(>|z|)
(Intercept) -1.5816964 1.0616813 -1.490 0.136
Group1 0.4987848 0.3958399 1.260 0.208
Age 0.0091428 0.0138985 0.658 0.511
BMI -0.0005498 0.0331120 -0.017 0.987
(Dispersion parameter for binomial family taken to be 1)
Null deviance: 65.342 on 49 degrees of freedom
Residual deviance: 63.456 on 46 degrees of freedom
AIC: 71.456
Number of Fisher Scoring iterations: 3