繁体   English   中英

如何从高斯 GLM 模型中提取标准误差?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM