在R语言中利用mice包进行缺失值的线性回归填补

2023-11-13

在数据分析中,我们会经常遇到缺失值问题。一般的缺失值的处理方法有删除法和填补法。通过删除法,我们可以删除缺失数据的样本或者变量。而缺失值填补法又可分为单变量填补法和多变量填补法,其中单变量填补法又可分为随机填补法、中位数/中值填补法、回归填补法等。本文简单介绍一下如何在R语言中利用mice包对缺失值进行回归填补。

假设原始数据只有两列P(压力)和T(温度),具体数据如下:

orig_data <- data.frame(
  T = c(0.47, 0.45, 0.48, 0.47, 0.41, 0.56, 0.54, 0.51, 
        0.44, 0.56, NA, 0.62, 0.5, 0.43, NA, NA, 0.69, 
        0.73, 0.45, 0.43, 0.38, 0.35, 0.5, 0.46, 0.41, 
        0.43, 0.41, NA, 0.8, 0.51, NA, 0.44, NA, 0.43, 
        0.45, 0.77, 0.41, 0.77, 0.47, 0.63, 0.43, NA, NA, 
        0.47, NA, 0.25, 0.48, 0.49, 0.46, 0.72, NA, 0.36, NA, 
        0.45, 0.41, 0.36, 0.48, 0.4, 0.44, 0.73, 0.8, 0.45, 
        0.47, 0.54, 0.5, 0.5, 0.48, 0.44, NA, 0.42, 0.34, 
        0.45, NA, 0.42, 0.42, 0.42, 0.42, 0.52, 0.44, 0.56, 
        NA, 0.52, 0.44, 0.5, NA, 0.46, 0.42, 0.42, 0.35, 
        0.3, NA, 0.49, 0.53, 0.62, 0.48, 0.44, 0.48, 0.48, 
        0.45, 0.43, 0.43, 0.47, NA, 0.48, 0.69, 0.62, 0.45, 
        0.4, NA, 0.9, 0.7, 0.37, 0.66, 0.36, 0.76, 0.83, 0.44, 
        0.33, 0.46, 0.46, 0.43, 0.45, NA, 0.46, 0.43, 0.44, 
        0.52, 0.48, 0.44, 0.37, 0.47, 0.47),
  P = c(4650, 3720, 2050, 5600, 1420, 5299.6, 6714, 3858, 3731,
        3331, NA, 3800, 2190, 2800, NA, NA, 7135, 6817, 2264, 
        4490, 2359, 889, 3572, 4978, 3800, 1735, 2092, 4200, 
        6840, 2381, 250, 6637, NA, 1434, 3122, 11542, 1075, 
        12075, 5027, 3640, 2026, 4551, NA, 4551, NA, 927, 
        2727, 4400, 925, 10800, NA, 1894, 1514, 1987, 2741, 
        2788, 4490, 2375, 4772, 5490, 3190, 4177, 3490, 5660, 
        5750, 6220, 4345, 3983, 850, 4300, 2459, 2074, 2450, 
        3350, 3002, 3350, 3002, 1263, 2969, 827, NA, 5613, 3272,
        3360, 2600, 3599, 288, 653, 2062, 1300, NA, 4439, 4218, 
        4057, 1242, 4722, 2731, 3100, 2245, 2340, 3387, 2367, NA,
        6301, 3565, 9500, 9137, 2282, 2521, 11600, 7134, 2684, 
        4254, 1628, 5400, 6550, 3692, 2200, 980, 980, 1162, 3145, 
        NA, 2117, 3390, 4365, 800, 2250, 2915, 2929, 4229, 5830))
调用mice包的md函数可以看到原始数据中的缺失值模式。下表中1和0是缺失值模式:0表示变量中的列有缺失值,1表示没有缺失值。在原始数据中,P列缺失11个数据,T列缺失19个数据,两列数据都缺失的数据点有11个,两列数据都没有缺失的数据点有113个。我们还可以利用VIM包中的scattMiss()函数或者aggr()函数绘制缺失数据的散点图。

library(mice)
md.pattern(orig_data)
     	P  	T   
113  	1  	1  	0
  8 	 1  	0  	1
 11 	 0  	0  	2
    	11 	19 	30

library("VIM")  
aggr(orig_data, prop = T, numbers = T)
上述代码显示的缺失值分布图如下。从图中可以看出T数据列的缺失比例大约为14%(0.14),P列的缺失比例大约为8.3%,两列都缺失的数据占整个数据量的8.3%。

对于两个数据都缺失的 11个数据点,我们无法利用回归的方法对它们进行填补。但是对于有一个值缺失的数据点,我们可以利用回归填补法进行缺失值充填。因为P和T这个两个变量存在某种程度的线性相关。我们可以对这两个变量进行线性回归,以观察它们之间的线性关系。具体R代码如下。

plot(orig_data)
linear_model <- lm(P ~ T, data = orig_data)
abline(linear_model,col="red")
summary(linear_model)
上面代码输出结果如下。
Call:
lm(formula = P ~ T, data = orig_data)
Residuals:
    Min      1Q  Median      3Q     Max 
-4616.3 -1244.2    -2.6   766.6  5905.8 
Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept)  -2651.1      712.2  -3.722 0.000312 ***
T            13071.9     1411.4   9.262 1.79e-15 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 1762 on 111 degrees of freedom
  (19 observations deleted due to missingness)
Multiple R-squared:  0.4359,	Adjusted R-squared:  0.4308 
F-statistic: 85.78 on 1 and 111 DF,  p-value: 1.79e-15

P和T进行线性回归后的R2为0.43。因此我们可以运行下面代码,利用线性回归方程对缺失的T值进行填补。

#首先加载sqldf包,将数据全部缺失的样本给排除掉
library(sqldf)
temp_data <-sqldf("select T, P from orig_data 
              where T is not null
              or P is not null",row.names=TRUE)

#利用mice包填补在T列的缺失值
imp <- mice(temp_data,seed=3231)
fit_new <- with(imp,linear_model )
pooled <- pool(fit_new)
#获得新生成的数据
new_data <- complete(imp,action=3)
#将原始数据和新数据进行并排比较
total_data <- cbind(temp_data,new_data)
colnames(total_data) <- c("original_T","original_P","new_T","new_P")
total_data

新产生的数据和原始的数据的比较结果如下:
    original_T original_P  new_T   new_P
1    0.47  4650.0       0.47     4650.0
2    0.45  3720.0       0.45     3720.0
3    0.48  2050.0       0.48     2050.0
4    0.47  5600.0       0.47     5600.0
5    0.41  1420.0       0.41     1420.0
6    0.56  5299.6       0.56     5299.6
7    0.54  6714.0       0.54     6714.0
8    0.51  3858.0       0.51     3858.0
9    0.44  3731.0       0.44     3731.0
10   0.56  3331.0       0.56     3331.0
11   0.62  3800.0       0.62     3800.0
12   0.50  2190.0       0.50     2190.0
13   0.43  2800.0       0.43     2800.0
14   0.69  7135.0       0.69     7135.0
15   0.73  6817.0       0.73     6817.0
16   0.45  2264.0       0.45     2264.0
17   0.43  4490.0       0.43     4490.0
18   0.38  2359.0       0.38     2359.0
19   0.35   889.0       0.35      889.0
20   0.50  3572.0       0.50     3572.0
21   0.46  4978.0       0.46     4978.0
22   0.41  3800.0       0.41     3800.0
23   0.43  1735.0       0.43     1735.0
24   0.41  2092.0       0.41     2092.0
25     NA  4200.0       0.47     4200.0
26   0.80  6840.0       0.80     6840.0
27   0.51  2381.0       0.51     2381.0
28     NA   250.0       0.35      250.0
29   0.44  6637.0       0.44     6637.0
30   0.43  1434.0       0.43     1434.0
31   0.45  3122.0       0.45     3122.0
32   0.77 11542.0       0.77    11542.0
33   0.41  1075.0       0.41     1075.0
34   0.77 12075.0       0.77    12075.0
35   0.47  5027.0       0.47     5027.0
36   0.63  3640.0       0.63     3640.0
37   0.43  2026.0       0.43     2026.0
38     NA  4551.0       0.44     4551.0
39   0.47  4551.0       0.47     4551.0
40   0.25   927.0       0.25      927.0
41   0.48  2727.0       0.48     2727.0
42   0.49  4400.0       0.49     4400.0
43   0.46   925.0       0.46      925.0
44   0.72 10800.0       0.72    10800.0
45   0.36  1894.0       0.36     1894.0
46     NA  1514.0       0.43     1514.0
47   0.45  1987.0       0.45     1987.0
48   0.41  2741.0       0.41     2741.0
49   0.36  2788.0       0.36     2788.0
50   0.48  4490.0       0.48     4490.0
51   0.40  2375.0       0.40     2375.0
52   0.44  4772.0       0.44     4772.0
53   0.73  5490.0       0.73     5490.0
54   0.80  3190.0       0.80     3190.0
55   0.45  4177.0       0.45     4177.0
56   0.47  3490.0       0.47     3490.0
57   0.54  5660.0       0.54     5660.0
58   0.50  5750.0       0.50     5750.0
59   0.50  6220.0       0.50     6220.0
60   0.48  4345.0       0.48     4345.0
61   0.44  3983.0       0.44     3983.0
62     NA   850.0       0.25      850.0
63   0.42  4300.0       0.42     4300.0
64   0.34  2459.0       0.34     2459.0
65   0.45  2074.0       0.45     2074.0
66     NA  2450.0       0.48     2450.0
67   0.42  3350.0       0.42     3350.0
68   0.42  3002.0       0.42     3002.0
69   0.42  3350.0       0.42     3350.0
70   0.42  3002.0       0.42     3002.0
71   0.52  1263.0       0.52     1263.0
72   0.44  2969.0       0.44     2969.0
73   0.56   827.0       0.56      827.0
74   0.52  5613.0       0.52     5613.0
75   0.44  3272.0       0.44     3272.0
76   0.50  3360.0       0.50     3360.0
77     NA  2600.0       0.43     2600.0
78   0.46  3599.0       0.46     3599.0
79   0.42   288.0       0.42      288.0
80   0.42   653.0       0.42      653.0
81   0.35  2062.0       0.35     2062.0
82   0.30  1300.0       0.30     1300.0
83   0.49  4439.0       0.49     4439.0
84   0.53  4218.0       0.53     4218.0
85   0.62  4057.0       0.62     4057.0
86   0.48  1242.0       0.48     1242.0
87   0.44  4722.0       0.44     4722.0
88   0.48  2731.0       0.48     2731.0
89   0.48  3100.0       0.48     3100.0
90   0.45  2245.0       0.45     2245.0
91   0.43  2340.0       0.43     2340.0
92   0.43  3387.0       0.43     3387.0
93   0.47  2367.0       0.47     2367.0
94   0.48  6301.0       0.48     6301.0
95   0.69  3565.0       0.69     3565.0
96   0.62  9500.0       0.62     9500.0
97   0.45  9137.0       0.45     9137.0
98   0.40  2282.0       0.40     2282.0
99     NA  2521.0       0.36     2521.0
100  0.90 11600.0       0.90    11600.0
101  0.70  7134.0       0.70     7134.0
102  0.37  2684.0       0.37     2684.0
103  0.66  4254.0       0.66     4254.0
104  0.36  1628.0       0.36     1628.0
105  0.76  5400.0       0.76     5400.0
106  0.83  6550.0       0.83     6550.0
107  0.44  3692.0       0.44     3692.0
108  0.33  2200.0       0.33     2200.0
109  0.46   980.0       0.46      980.0
110  0.46   980.0       0.46      980.0
111  0.43  1162.0       0.43     1162.0
112  0.45  3145.0       0.45     3145.0
113  0.46  2117.0       0.46     2117.0
114  0.43  3390.0       0.43     3390.0
115  0.44  4365.0       0.44     4365.0
116  0.52   800.0       0.52      800.0
117  0.48  2250.0       0.48     2250.0
118  0.44  2915.0       0.44     2915.0
119  0.37  2929.0       0.37     2929.0
120  0.47  4229.0       0.47     4229.0
121  0.47  5830.0       0.47     5830.0

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在R语言中利用mice包进行缺失值的线性回归填补 的相关文章

  • Stata输出统计结果到Excel或word

    目录 一 安装外部包 二 相关命令 三 实例 1 描述性统计结果输出 2 相关性结果输入 3 回归结果输出 1 单模型结果 2 多模型结果 参考 一 安装外部包 在Stata内安装外部包 estout和logout ssc install
  • 论文R语言复现

    高斯混合概率在众多领域都有重要应用 依据已知观测数据估计高斯模型中未知参数就显得尤为重要 由于观测值具体来自于高斯分布的哪个分模型是未知的 那么利用传统的极大似然 MLE 方法进行参数估计就变得十分困难 引入 EM 算法 该方法通过构造分布
  • 【生信原理】初探芯片表达谱分析

    初探芯片表达谱分析 文章目录 初探芯片表达谱分析 实验目的 实验内容 实验题目 实验过程 数据的获取 解压与读取 数据预处理 背景纠正 标准化和探针信号汇总等 数据过滤 探针过滤 探针注释 添加基因注释信息 limma差异分析 差异表达基因
  • R语言 Scale函数

    在我们做数据的时候 一个数据会有很多特征 比如在描述影响房价的因素 有房子面积 房间数量等 而不同的特征存在不同的量纲 为了消除量纲 数值差异等 我们就需要对数据进行中心化和标准化 那什么是中心化 什么是标准化呢 所谓中心化就是将数据减去均
  • R手册(Visualise)--GGally(ggplot2 extensions)

    本站已停止更新 查看最新内容请移至本人博客 Wilen s Blog 文章目录 GGally ggmatrix ggplot2矩阵 ggpairs ggplot2广义配对图 ggscatmat 纯粹定量变量的传统散点图矩阵 返回ggplot
  • R语言作图:坐标轴设置

    R语言作图 坐标轴设置 偷闲阁 2018 02 04 20 51 24 209654 收藏 359 分类专栏 R语言 可视化 文章标签 R 坐标轴 刻度 可视化 版权声明 本文为博主原创文章 遵循 C
  • 数据挖掘实验(四):决策树归纳 R语言

    一 实验目的 决策树分类算法 decision tree 通过树状结构对具有某特征属性的样本进行分类 其典型算法包括ID3算法 C4 5算法 C5 0算法 CART算法等 本次实验掌握用ID3的信息增益来实现决策树归纳 二 实验软件 Rst
  • ggplot2作图之系统发育树

    library ape tree lt read tree text A B C D E F G H I J K L M N O P library ggtree ggtree tree branch length none ladderi
  • R语言中用于计算Rsquare的包rsq

    文章目录 理论介绍 线性模型情形 广义线性模型情形 函数介绍 rsq 的介绍 实例 rsq partial 的介绍 相关文献 pcor 函数介绍 vresidual 函数介绍 实例 理论介绍 线性模型情形 R squared 值范围 0 1
  • R数据科学-第九章使用lubridate处理日期和时间

    本章将会使用以下三个包 gt library tidyverse gt library lubridate gt library nycflights13 一 创建日期或时间 表示日期或时间的数据有三种 日期 在tibble中显示为date
  • R----stringr包介绍学习

    1 stringr介绍 stringr包被定义为一致的 简单易用的字符串工具集 所有的函数和参数定义都具有一致性 比如 用相同的方法进行NA处理和0长度的向量处理 字符串处理虽然不是R语言中最主要的功能 却也是必不可少的 数据清洗 可视化等
  • Coding and Paper Letter(六十一)

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 资源整理 1 Coding 1 航拍影像的土地覆盖分类 CAS机器学习人工智能2019 ZHAW 中ML DL分配的仓库 ml dl assignment 2019 2 跨
  • [R语言] R语言PCA分析教程 Principal Component Methods in R

    R语言PCA分析教程 Principal Component Methods in R 代码下载 主成分分析Principal Component Methods PCA 允许我们总结和可视化包含由多个相互关联的定量变量描述的个体 观察的数
  • 【干货】Chrome插件(扩展)开发全攻略(不点进来看看你肯定后悔)<转>

    干货 Chrome插件 扩展 开发全攻略 不点进来看看你肯定后悔 写在前面 我花了将近一个多月的时间断断续续写下这篇博文 并精心写下完整demo 写博客的辛苦大家懂的 所以转载务必保留出处 本文所有涉及到的大部分代码均在这个demo里面 h
  • R-INLA Project目录

    集成嵌套拉普拉斯近似法 INLA 是一种近似贝叶斯推断的方法 在过去的几年里 由于其速度和通过R INLA软件包的易用性 它已经成为马尔科夫链蒙特卡洛等其他方法的替代品 尽管INLA方法的重点是可以表达为潜伏高斯马尔可夫随机场 GMRF 的
  • 2021-05-03

    一 R中安装 phyloseq 的方法 很多网上的教程使用的都是 source https bioconductor org biocLite R biocLite phyloseq 但是我尝试了很多次 最后还是没有成功 下面能成功安装 p
  • R语言实现RMF模型

    RMF模型说明 RMF模型是客户管理中 常被用来衡量客户价值和客户创利能力的重要方法 它主要考量三个指标 最近一次消费 Recency 近期购买的客户倾向于再度购买 消费频率 Frequency 经常购买的客户再次购买概率高 消费金额 Mo
  • R语言实现推荐系统

    目录 1 理论基础 1 1 推荐系统 1 2 R语言 2 数据准备 2 1 数据获取 2 2 数据读取
  • 主成分分析R语言实现

    主成分分析是一种常见的降维统计方法 它通过适当的变量替换 使得新变量成为原变量的线性组合 并且新变量间彼此独立 从而可从错综复杂的关系中寻求主要成分信息 揭示变量内在关系 本次主要分享的是该方法的R语言实现 目录 数据集展示 一 计算相关系
  • R语言——基本操作(二)

    目录 一 矩阵与数组 二 列表 三 数据框 四 因子 五 缺失数据 六 字符串 七 日期和时间 参考 一 矩阵与数组 matrix 创建矩阵 nrow 和 ncol 可以省略 但其值必须满足分配条件 否则会报错 只写一个值则自动分配 默认按

随机推荐

  • android内存优化面试题,写给Android软件工程师的3条建议

    我的移动开发春季历程 没有稳定的工作 只有稳定的能力 春天 又到了万物复苏的季节 在程序猿这个行当里 作为 Android 开发出生的我 在经历了5年的脱发生涯后 现在更多的是称呼自己为移动开发攻城狮 Java面试题 1 GC机制 垃圾回收
  • 【使用ip地址进入百度】

    ping一下百度的地址 C Users CaiWeiTong gt ping www baidu com 正在 Ping www baidu com 36 152 44 95 具有 32 字节的数据 来自 36 152 44 95 的回复
  • ElementUI浅尝辄止21:Tree 树形控件

    树形组件 用清晰的层级结构展示信息 可展开或折叠 树组件使用挺频繁的 常见于侧边栏树形目录 树形下拉选项按钮或搜索查询树形信息选项 1 如何使用 基础的树形结构展示
  • 每天五分钟机器学习:使用主成分分析法PCA算法的注意事项

    本文重点 PCA算法能够降维数据 这会给我们带来一些好处 本节课程我们将学习一下 在应用PCA算法时的一些建议 PCA算法可以提高算法的运行 如果数据集维度特别大 10000维 算法运行的会比较慢 我们使用PCA算法能够有效的降低数据的维度
  • maven打包报错-There are test failures

    如果工程中有测试程序 需要检查测试程序的包名与主程序的包名是否一致 解决方法 将包名修改为一致的包名 如果修改后无效 则先执行一下clean命令 在执行package 修改在测试程序的注解中指定主测试类 如果出现 Failed to cle
  • Qt在linux下安装时报错:cannot execute binary file

    最近由于项目需要 得把原来的产品升级为Qt5 之前用的都是Qt4 所以学习了一下Qt5 在windows平台下安装qtcreator时很顺利 但是在ubuntu下安装时遇到了问题 具体表现是在Qt官网https download qt io
  • 【深入理解Linux内核】【分页】相关函数或宏

    PAGE SHIFT PMD SHIFT PUDSHIFT PGDIR SHIFT 指定offset字段位数 指定offset和table总位数 确定页上级目录能够映射的区域大小 确定页全局目录能够映射的区域大小 PTRS PER PTE
  • 第二讲:网线的制作方法及步骤

    这几年 网络搭建与应用 专业技能大赛所需网线需要参赛学生自己制作 所以今天讲讲网线的制作方法及步骤 所要原料 双绞线 RJ45水晶头 所需工具 双绞线压线钳 双绞线测试仪 在制作网线之前 我们先来了解双绞线的连接方法 双绞线的连接方法有两种
  • windows下redis 和 hiredis的编译与使用

    转 http www cnblogs com raker p 4368741 html 果然 高端的程序员真心是鸟都不鸟windows的 redis的客户端找了一圈愣是没有C 的windows版本 我要做个windows上的C 的服务器都没
  • ubuntu安装SSH2

    apt get install libssh2 1 dev libssh2 php service apache2 restart 安装完成之后 可以使用SCP远程复制文件 connection ssh2 connect 192 168 1
  • 读取本地文件到读出p.node涉及的函数

    这里是读取本地文件的所调用的函数 func ParseNode rawurl string Node error if m incompleteNodeURL FindStringSubmatch rawurl m nil id err H
  • 【学习笔记】多模态综述

    多模态综述 前言 1 CLIP ViLT 2 ALBEF 3 VLMO 4 BLIP 5 CoCa 6 BeiTv3 总结 参考链接 前言 本篇学习笔记虽然是多模态综述 本质上是对ViLT后多模态模型的总结 时间线为2021年至2022年
  • Linux文件描述符和重定向

    文件描述符 0 stdin 标准输入 1 stdout 标准输出 2 stderr 标准错误 成功和不成功的命令 student myhost ls ls cannot access No such file or directory st
  • STM32定时器

    目录 一 定时器的基本介绍 二 定时器的原理框图 1 定时器时钟 2 时基单元 3 捕获输入 4 PWM输出 三 定时器的应用 1 定时器的基础定时计数功能 2 PWM比较输出 3 外部脉冲计数 a 外部触发输入 ETR 外部时钟模式2 b
  • 617. 合并二叉树(c++)

    暴力解 当t1为空返回t2 当t2为空返回t1 当t1 t2都有值 new新节点为两个节点的和 新节点左子树为原始节点左子树合并 新节点右子树为原始节点右子树合并 Definition for a binary tree node stru
  • stm32 /*TIM定时器使用

    提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 文章目录 一部分 定时器定时计数功能 一 定时器RCC内部时钟初始化配置 二 定时时间的计算 试验现象 晶振原理 1s时间计算 1min时间计算 制作时钟读数表 试验现象 试
  • leetcode刷题(四)——概率论与数理统计(一)

    leetcode刷题系列四 主要的内容涉及概率论和数理统计的知识 例题 算法分析 int dp 12 70 double dicesProbability int n int returnSize int i j k double f do
  • ubuntu安装及深度学习框架(CUDA、cuDNN、Anaconda、pytorch、pycharm)

    文章目录 前言 一 安装ubuntu20 04 4 1 准备工作 2 开始安装 二 安装英伟达驱动 方案一 不推荐 1 下载NVIDIA驱动 2 安装GCC 3 卸载原有NVIDIA驱动 一般都没有 4 禁用通用驱动 三 安装英伟达驱动 方
  • 上位机与欧姆龙PLC的Fins tcp通讯

    参考1 147条消息 欧姆龙PLC的FinsTCP协议 weixin 37700863的博客 CSDN博客 欧姆龙fins协议tcp 参考2 147条消息 FinsTCP协议报文详细分析 常哥说编程的博客 CSDN博客 fins协议 参考3
  • 在R语言中利用mice包进行缺失值的线性回归填补

    在数据分析中 我们会经常遇到缺失值问题 一般的缺失值的处理方法有删除法和填补法 通过删除法 我们可以删除缺失数据的样本或者变量 而缺失值填补法又可分为单变量填补法和多变量填补法 其中单变量填补法又可分为随机填补法 中位数 中值填补法 回归填