微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何从svyglm回归中获得标准化的beta

如何解决如何从svyglm回归中获得标准化的beta

我有一个svyglm()加权线性回归模型,并希望获得回归系数的标准化beta。我试图用lm.beta()函数获取它们,但是当我这样做时,系数的p值会改变。我也尝试过使用effectizeize:standardize_parameters()函数,但这将返回未标准化的系数(与原始svyglm()模型中的系数相同)。如何获得具有正确p值的svyglm()模型的标准化系数?任何帮助将不胜感激。这是该模型的代码
library(tidyverse)
library(lm.beta)
library(survey)
library(sjstats)
dat <- read.csv("https://raw.githubusercontent.com/LucasTremlett/questions/master/questiondata.csv")
dat.weighted<- svydesign(ids = ~1,data = dat,weights = dat$weight)
model.weighted<- svyglm(DV~IV1+IV2+IV3,design=dat.weighted)
summary(model.weighted)

这是对我不起作用的两种方法代码

##Withlmbeta()
model.weighted.lm.beta <- lm.beta(model.weighted)
summary(model.weighted.lm.beta)

##Witheffectsize:standardize_parameters()
effectsize::standardize_parameters(model.weighted)

解决方法

我不确定lm.beta()是否可用于您的svyglm对象-这是一个svy回归,并且也是glm类型而不是lm类型。

如果lm.beta()返回的系数是正确的(或者您可以从其他地方获取这些形式),则获取“标准化beta”的标准偏差似乎很简单。

A common calculation of the 'standardized beta'建议将其乘以x和y的标准偏差之比。然后,标准化的测试版a random variable,is also given as the product of this ratio and the estimated s.e. of beta.

# standardized coefficients
st_mean <-  model.weighted.lm.beta$standardized.coefficients 

# standardized coefficients' s.d.
st_sd <- estimates_sd * standadizing_factors

# standardized coefficients tstat
st_tstat <- st_mean/st_sd

result <- data.frame(tibble(st_mean,st_sd,st_tstat))
row.names(result) <- names(model.weighted$coefficients)
result %>% round(5)
,

这是模特

vars<-svyvar(~api00+mobility,design=dstrat)
sd.y <- sqrt(vars[1,1])
sd.x <- sqrt(vars[2,2])

我们想要估计的人口标准偏差

unstd.beta <- coef(model)[2]
std.beta <- unstd.beta*sd.x/sd.y

现在是标准化beta

array: [{
  _id: 5f62b2bc84a1ef1c5c48d1af,eeid: '300094E6E2',adminOrganization: true,adminEmployees: false,adminAssets: true,adminConsumables: true,adminWarehousing: false,grantBy: '300094E6E2',grantDate: 2020-10-04T11:46:28.548Z,__v: 0
}]

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。