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

在R的逻辑回归中使用权重的正确方法是什么?,r,logistic-regression,spss,glm,R,Logistic Regression,Spss,Glm,我的数据包括汽车购买者的调查数据。我的数据有一个权重列,我在SPSS中使用它来获取样本大小。重量栏受人口统计因素和车辆销售的影响。现在,我正试图为一个汽车细分市场建立一个逻辑回归模型,其中包括一些汽车。我想在逻辑回归模型中使用权重列&我尝试在glm函数中使用“权重”。但结果是可怕的。偏差太高,McFadden Rsquare太低。我的因变量是二进制的,自变量是1到5的。“权重”列是数字列,范围从32到197。这可能是结果不佳的原因吗?我是否需要权重列中的值低于1 R的输入文件格式为- WGT o

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

R的输入文件格式为-

WGT output I1 I2 I3 I4 I5
67   1      1  3  1  5  4
I1、I2、I3为自变量

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)

logr我会查看
调查
包。这将允许您使用
svydesign
功能指定测量设计的权重。此外,您可以使用
svyglm
函数执行加权逻辑回归。看

假设您的数据位于名为
df

my_svy <- svydesign(df, ids = ~1, weights = ~WGT)


my\u svy我面临“step”函数的问题,我使用它运行逻辑回归的迭代。我收到以下消息-“eval中出错(predvars,data,env):未找到对象“ER_VEH”ER_VEH是我的输出变量的名称我还将添加我的代码-my_svy my_svy@RaghuNandan,并使用reprex查看更新的答案。至于逐步回归,如果这是你想要采用的方法,我认为你所描述的很好,但是仍然有其他与逐步回归相关的问题,例如Hanks。我知道逐步回归并不是逻辑回归的最佳方法。我的问题是我有大约50个自变量。您是否建议我使用套索等正则化技术来消除一些不重要的变量,然后将这些变量带入调查包以获得最终结果?
my_fit <- svyglm(output ~1, my_svy, family = "binomial")
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