Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R:与R中的glm和mle2包不同的结果_R_Glm_Estimation_Mle - Fatal编程技术网

R:与R中的glm和mle2包不同的结果

R:与R中的glm和mle2包不同的结果,r,glm,estimation,mle,R,Glm,Estimation,Mle,因此,我想用GLM找到估计参数,并将其与mle2包进行比较。 这是我的GLM代码 d <- read.delim("http://dnett.github.io/S510/Disease.txt") d$disease=factor(d$disease) d$ses=factor(d$ses) d$sector=factor(d$sector) str(d) glm2 <- glm(disease~ses+sector, family=binomial(link

因此,我想用GLM找到估计参数,并将其与mle2包进行比较。 这是我的GLM代码

d <- read.delim("http://dnett.github.io/S510/Disease.txt")

d$disease=factor(d$disease)
d$ses=factor(d$ses)
d$sector=factor(d$sector)
str(d)
glm2 <- glm(disease~ses+sector, family=binomial(link=logit), data=d)
summary(glm2)
这条线

-sum(joint.pdf, log=TRUE ,na.rm=TRUE)
这是错误的
sum
没有特殊的
log
参数;您要做的是将值
TRUE
(转换为1)添加到pdf中

你想要的是

-sum(log(joint.pdf), na.rm=TRUE)
但由于数字原因,这也不是很好,因为pdf可能会下溢。更好的写作方式是

logpdf <- y*log(p) + (1-y)*log(1-p)
-sum(logpdf, na.rm=TRUE)

logpdf我不确定您对
eta
的定义是否正确。我会使用模型矩阵

X <- model.matrix(~ ses + sector, data = d)

nlldbin <- function(A,B,C,D){
  eta <- X %*% c(A, B, C, D)
  p <- 1/(1+exp(-eta))
  logpdf <- y*log(p) + (1-y)*log(1-p)
  -sum(logpdf)
}

X但是结果不同,根据GLM进行估计:(截距)-1.52001,ses2-0.08525,ses3 0.16086,sector2 1.28098。而mle2,A-0.9515150,B-0.0259063,C-0.0210864,D-0.0053744。结果是“X%*%C(A,B,C,D):不一致参数中的错误”,你能帮我找出错误吗?@JasmineHelen Strange。X有四列,不是吗?@JasmineHelen也许你忘了将列分解为
ses
sector
logpdf <- y*log(p) + (1-y)*log(1-p)
-sum(logpdf, na.rm=TRUE)
X <- model.matrix(~ ses + sector, data = d)

nlldbin <- function(A,B,C,D){
  eta <- X %*% c(A, B, C, D)
  p <- 1/(1+exp(-eta))
  logpdf <- y*log(p) + (1-y)*log(1-p)
  -sum(logpdf)
}