R语言lm线性回归中单列变量在结果表中拆分为多项的原因问询
问题原因
你指定的number_of_peaksaropos1变量被R自动识别为分类变量(因子/字符类型),而非连续数值变量:
lm()函数对分类变量默认会生成哑变量(虚拟变量)进行回归估计,每个变量后缀的数字1/2/3对应原变量的不同取值,因此会在结果中拆分展示为多个独立条目- 该问题源自你构造
Results_aropos1数据集的步骤:你用c(peaks, id, number_of_peaks)拼接变量时,如果id列为字符型,整行拼接结果会被强制转换为字符型,后续转换为数据框时默认被识别为因子类型,即使列内存储的是数字内容。
解决方法
- 回归执行前将目标变量强制转换为数值型即可解决,代码如下:
# 先转字符再转数值,避免因子类型直接转换为level序号的问题 totaldf1moodpeaks$number_of_peaksaropos1 <- as.numeric(as.character(totaldf1moodpeaks$number_of_peaksaropos1)) # 转换后可执行下方代码验证类型,输出为num即为数值型 str(totaldf1moodpeaks$number_of_peaksaropos1)
- 也可以在构造
Results_aropos1数据集时单独指定number_of_peaksaropos1列为数值类型,从根源避免类型转换错误。
转换完成后重新执行回归和stargazer输出,该变量就会展示为单个条目。
内容的提问来源于stack exchange,提问作者Tobi Ahnfeld Vdo
相关产品推荐
相关产品推荐

