首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >速度()的拟合值与glm()的拟合值非常不同。

速度()的拟合值与glm()的拟合值非常不同。
EN

Stack Overflow用户
提问于 2021-11-24 15:12:16
回答 1查看 126关注 0票数 0

speedglm()返回的拟合值看起来与从glm()返回的值非常不同,我不知道为什么。例如,如果我运行这个:

代码语言:javascript
复制
data("lalonde")
glm <- glm(married ~ treat + age + educ + black + hisp + nodegr, data = lalonde, family = "binomial")
fitted_vals <- glm$fitted.values

我大致得到了我所期望的值,即每个观测值在0到1之间的拟合值(married的两个可能值)。例如。

代码语言:javascript
复制
skimr::skim(fitted_vals)

── Data Summary ────────────────────────
                           Values     
Name                       fitted_vals
Number of rows             445        
Number of columns          1          
_______________________               
Column type frequency:                
  numeric                  1          
________________________              
Group variables            None       

── Variable type: numeric ────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
  skim_variable n_missing complete_rate  mean     sd     p0   p25   p50   p75  p100 hist 
1 data                  0             1 0.169 0.0913 0.0378 0.105 0.147 0.205 0.627 ▇▅▁▁▁

但是,如果我使用speedglm()运行相同的模型,结果就完全不同了:

代码语言:javascript
复制
speedglm <- speedglm(married ~ treat + age + educ + black + hisp + nodegr, data = lalonde, family = binomial(), fitted = TRUE)
fitted_vals <- speedglm$linear.predictors

skimr::skim(fitted_vals)

── Data Summary ────────────────────────
                           Values     
Name                       fitted_vals
Number of rows             445        
Number of columns          1          
_______________________               
Column type frequency:                
  numeric                  1          
________________________              
Group variables            None       

── Variable type: numeric ────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
  skim_variable n_missing complete_rate  mean    sd    p0   p25   p50   p75  p100 hist 
1 data                  0             1 -1.71 0.606 -3.24 -2.14 -1.76 -1.35 0.521 ▂▇▇▂▁

有人知道这里发生了什么吗?根据文档,linear.predictors似乎是与glmfitted.values类似的值。据我所知,它不应该在因变量范围之外得到合适的值,但很明显,这就是正在发生的事情。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-11-24 15:29:32

“线性预测器”与“拟合值”不一样,除非GLM装有标识链接。通常,线性预测器是eta = b0 + b1*x1 + b2*x2 + ...,而拟合值是mu = linkinv(eta),其中linkinv是逆链接函数(例如,logistic或逆logit)。

一般来说,使用访问器方法总是更安全的:这样您就不必担心内部定义了

代码语言:javascript
复制
## fitted values (data scale)
all.equal(fitted(glm), fitted(speedglm))  ## TRUE
## predicted values (linear-predictor scale)
all.equal(predict(glm), predict(speedglm))  ## TRUE
## predict(., type = "response") == fitted(.)
all.equal(predict(glm, type = "response"), fitted(speedglm)) ## TRUE
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70098526

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档