变量选择函数Var_Selection定义需求及代码翻译与技术问询改写
求助:完善R语言变量选择函数Var_Selection的实现
各位大佬好,我正在编写一个用于变量选择的R函数Var_Selection,目标是通过逐步添加变量、计算模型AIC值的方式,筛选出最优的逻辑回归模型变量组合。目前已经完成了部分代码框架,但还有不少细节和逻辑问题需要解决,具体情况如下:
现有代码框架
Var_Selection = function(data, target){ target = as.character(target) form = paste(target, '~ ') vect = c() # 注:此处原本意图排除目标变量,但写法有误,当前是排除字符串"target"而非传入的目标变量名 valid.names <- names(data)[names(data) != "target"] myAIC = data.frame(var = as.character(), AIC = as.numeric()) repeat{ a=Sys.time() Perf = data.frame(variable = as.character(), AIC = as.numeric()) for(i in 2:length(valid.names)){ # 针对每个变量拟合逻辑回归模型(原注释为法语,已翻译) # 注:当前公式拼接和glm参数存在语法问题,未完成 mylogit = glm(as.formula(paste(form, i)), data=data, family="binomial") # 后续需计算AIC并存入Perf数据框,但此部分逻辑未实现 } # 后续需选择AIC最小的变量添加到公式中,更新候选变量列表与form,同时设置循环终止条件,但未实现 } }
我遇到的具体问题
- 公式拼接错误:不知道如何正确将当前遍历的变量名拼接到已有公式
form中,当前写法paste(form, i)使用索引而非变量名,逻辑错误; - 变量筛选逻辑错误:
valid.names的定义有误,当前是排除字符串"target",实际需要排除传入的target参数对应的变量名; - AIC存储逻辑缺失:不清楚如何在循环中计算每个候选变量对应模型的AIC,并将变量名与对应AIC存入
Perf数据框; - 循环终止与更新逻辑缺失:不知道该设置何种终止条件(比如添加新变量后AIC不再下降、所有变量遍历完成),也不清楚每次循环后如何更新公式、候选变量列表等。
希望各位能帮忙指正代码中的问题,完善这个变量选择函数的实现,谢谢大家!
内容的提问来源于stack exchange,提问作者Naï
相关产品推荐
相关产品推荐

