我正在尝试使用基本函数来模拟拟合的 GLM,而不是使用被广泛质疑和回答的模拟()和预测()函数。当我将我的数学函数与模拟()和预测()函数进行比较时,我得到了不同的结果。很可能我做错了什么,但我似乎找不到错误。
首先,我生成带有倾斜因变量的随机相关数据:
library(MASS)
n <- 1500
d <- mvrnorm(n=n, mu=c(0,0,0,0), Sigma=matrix(.7, nrow=4, ncol=4) + diag(4)*.3)
d[,1] <- qgamma(p=pnorm(q=d[,1]), shape=2, rate=2)
接下来,我使用平方根链接拟合 GLM 以调整偏斜数据:
m <- glm(formula=d[,1] ~ d[,2] + d[,3] + d[,4], family=gaussian(link="sqrt"))
接下来,我首先在线性尺度上生成预测值,然后在包含随机不确定性的逆尺度上生成预测值(最终我想使用源数据以外的数据作为输入值):
p_lin <- m$coef[1] + m$coef[2]*d[,2] + m$coef[3]*d[,3] + m$coef[4]*d[,4]
p <- rnorm(n=n, mean=p_lin^2, sd=sd(p_lin^2 - d[,1]))
我将结果与模拟()和预测()函数进行比较:
par(mfrow=c(1,1), mar=c(4,2,2,1), pch=16, cex=0.8, pty="s")
xylim <- c(min(c(d[,1], p)), max(c(d[,1], p)))
plot(p, d[,1], xlab="predicted values", ylab="original data", xlim=xylim, ylim=xylim, col=rgb(0,0,0,alpha=0.1))
points(simulate(m)$sim_1, d[,1], col=rgb(0,1,0,alpha=0.1))
points(predict(m, type="response"), d[,1], col=rgb(1,0,0,alpha=0.1))
abline(a=0, b=1, col="red")
我的公式预测值出了什么问题?我在哪里可以找到预测()和模拟()函数中使用的数学和 R 表达式?是否有解释 GLM 模拟的链接,包括在 R 中应用的各种族/链接组合中的随机不确定性(最终我的下一步也是参数不确定性)。我找到了 GLM 模拟的一个很好的来源,但没有回答我的具体问题:http:/ /www.sagepub.com/upm-data/57233_Chapter_6.pdf