[英]How do i extract the standard error from a gaussian GLM model?
如果有人知道我该怎么做,我希望从我的高斯 GLM 和我的泊松 GLM 中提取标准误差?
模拟数据的代码,两个模型都在下面;
#data simulated before fitting models
set.seed(20220520)
#simulating 200 values between 0 and 1 from a uniform distribution
x = runif(200, min = 0, max = 1)
lam = exp(0.3+5*x)
y = rpois(200, lambda = lam)
#before we do this each Yi may contain zeros so we need to add a small constant
y <- y + .1
#combining x and y into a dataframe so we can plot
df = data.frame(x, y)
#Gausian GLM
model1 <- glm(y ~ x,
data = df,
family = gaussian(link = 'log'))
#Poisson GLM
model2 <- glm(y ~ x,
data = df,
family = poisson(link='log'))
这个问题比可能出现的要深一些。 一般来说, sigma()
会提取残差标准差:
从拟合模型中提取误差的估计标准差,即“残差标准差”(也称为“残差标准差”,例如,在“summary.lm()”的输出中)。
许多经典的统计模型都有一个尺度参数,通常是零均值正态(或高斯)随机变量的标准偏差,表示为 sigma。 'sigma(.)' 从拟合模型中提取估计参数,即 sigma^。
这对线性模型( sigma(model1)
)按预期工作。 但是,它并不一定符合您对泊松模型的期望。 它返回偏差的平方根除以观察次数,这类似于残差标准偏差,但不一样。
identical(
sigma(model1), ## 5.424689
sqrt(sum(residuals(model1)^2)/(df.residual(model1)))
) ## TRUE
sigma(model2) ## 1.017891
sqrt(sum(residuals(model2, type="response")^2)/(df.residual(model2))) ## 5.452
(如果您使用type = "deviance"
[ residuals.glm
的默认值] 重做此计算,您将获得与sigma()
相同的值 ...)
如果你想比较拟合优度,你应该考虑像 AIC 这样的指标......
PS你可能不应该在你的回复中添加0.1; 这不仅是不必要的(对于 log-link Gaussian 或 Poisson 模型),当您拟合 Poisson 模型时,它会导致一系列关于“非整数 x”的警告(在这种情况下无害,但进一步表明你可能不应该这样做); 但是,您确实需要为 log-link Gaussian 模型指定起始值( start = c(1,1)
似乎有效)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.