首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在R中的逻辑回归中使用权重的正确方法是什么?

在R中的逻辑回归中使用权重的正确方法是什么?
EN

Stack Overflow用户
提问于 2019-07-02 02:02:19
回答 1查看 3.6K关注 0票数 2

我的数据包括购车者的调查数据。我的数据有一个权重列,我在SPSS中使用它来获取样本大小。权重列受人口统计因素和汽车销量的影响。现在,我正在尝试为一个包括几辆车的汽车细分市场建立一个逻辑回归模型。我想在logistic回归模型中使用weight列&我尝试在glm函数中使用“weight”。但结果是可怕的。偏差太高,McFadden Rsquare太低。我的因变量是二进制的,自变量在1到5的范围内。权重列是数值列,范围从32到197。这可能是结果不佳的原因吗?权重列中的值是否必须小于1?

R的输入文件格式为-

代码语言:javascript
复制
WGT output I1 I2 I3 I4 I5
67   1      1  3  1  5  4

I1、I2、I3为自变量

代码语言:javascript
复制
logr<-glm(output~1,data=data1,weights=WGT,family="binomial")

logrstep<-step(logr,direction = "both",scope = formula(data1))\

logr1<-glm(output~ (formula from final iteration),weights = WGT,data=data1,family="binomial")

hl <- hoslem.test(data1$output,fitted(logr1),g=10)

我想要一个精度更高的逻辑回归模型,并更好地理解逻辑回归中权重的使用。

EN

回答 1

Stack Overflow用户

发布于 2019-07-02 02:27:58

我会查看survey包。这将允许您使用svydesign函数指定调查设计的权重。此外,您可以使用svyglm函数来执行加权逻辑回归。请参阅http://r-survey.r-forge.r-project.org/survey/

假设您的数据位于名为df的数据帧中,则如下所示

代码语言:javascript
复制
my_svy <- svydesign(df, ids = ~1, weights = ~WGT)

然后,您可以执行以下操作:

代码语言:javascript
复制
my_fit <- svyglm(output ~1, my_svy, family = "binomial")

要获得完整的reprex,请查看以下示例

代码语言:javascript
复制
library(survey)

# Generate Some Random Weights
mtcars$wts <- rnorm(nrow(mtcars), 50, 5)

# Make vs a factor just for illustrative purposes
mtcars$vs <- as.factor(mtcars$vs)

# Build the Complete survey Object
svy_df <- svydesign(data = mtcars, ids = ~1, weights = ~wts)

# Fit the logistic regression
fit <- svyglm(vs ~ gear + disp, svy_df, family = "binomial")

# Store the summary object
(fit_sumz <- summary(fit))

# Look at the AIC if desired
AIC(fit)

# Pull out the deviance if desired
fit_sumz$deviance

就逐步回归而言,从统计学的角度来看,这通常不是一个很好的方法。它会导致更高的R2和其他一些关于推理的问题(参见https://www.stata.com/support/faqs/statistics/stepwise-regression-problems/)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56840376

复制
相关文章

相似问题

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