在R中实现Excel SUMIF等效功能:统计回归变量匹配数
在R中统计LASSO选中变量与真实变量的匹配数量
场景说明
你已经通过LASSO算法选出了目标变量集合:
IVs_Selected_by_LASSO$coefficients # [1] "X4" "X10" "X19" "X20" "X22" "X25" "X27" "X28"
同时整理出了真实回归变量集合:
True_Regressors <- c("X4", "X10", "X13", "X19", "X20", "X22", "X25", "X26", "X27", "X28", "X30")
需要统计LASSO选中变量中属于真实变量的数量(示例结果为8),以下是几种R中的实现方法:
方法1:%in% + sum()(最简洁)
%in%会逐个判断LASSO选中的变量是否存在于真实集合中,返回逻辑向量;sum()会将TRUE转为1、FALSE转为0,直接求和得到匹配数量:
# 计算匹配数量 match_count <- sum(IVs_Selected_by_LASSO$coefficients %in% True_Regressors) match_count # 输出:8
方法2:intersect() + length()
先获取两个集合的交集(即同时存在于两个集合中的变量),再计算交集的长度:
# 获取匹配的变量集合 matched_vars <- intersect(IVs_Selected_by_LASSO$coefficients, True_Regressors) # 统计匹配数量 match_count <- length(matched_vars) match_count # 输出:8
额外统计(可选)
如果需要更多相关指标,可使用以下代码:
- 真实变量的总数量:
true_total <- length(True_Regressors) true_total # 输出:11
- LASSO漏选的真实变量:
missed_vars <- setdiff(True_Regressors, IVs_Selected_by_LASSO$coefficients) missed_vars # 输出:"X13" "X26" "X30"
- LASSO错选的变量(示例中无错选,返回空向量):
false_selected <- setdiff(IVs_Selected_by_LASSO$coefficients, True_Regressors) false_selected # 输出:character(0)
内容的提问来源于stack exchange,提问作者Marlen
相关产品推荐
相关产品推荐

