版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/lovely_J/article/details/82182907
准备工作
安装要用到得到包
install.packages("DMwR")
加载并查看数据
> library(lattice)
> library(grid)
> library(DMwR)
> summary(algae)
season size speed mxPH mnO2 Cl
autumn:40 large :45 high :84 Min. :5.600 Min. : 1.500 Min. : 0.222
spring:53 medium:84 low :33 1st Qu.:7.700 1st Qu.: 7.725 1st Qu.: 10.981
summer:45 small :71 medium:83 Median :8.060 Median : 9.800 Median : 32.730
winter:62 Mean :8.012 Mean : 9.118 Mean : 43.636
3rd Qu.:8.400 3rd Qu.:10.800 3rd Qu.: 57.824
Max. :9.700 Max. :13.400 Max. :391.500
NA's :1 NA's :2 NA's :10
NO3 NH4 oPO4 PO4 Chla
Min. : 0.050 Min. : 5.00 Min. : 1.00 Min. : 1.00 Min. : 0.200
1st Qu.: 1.296 1st Qu.: 38.33 1st Qu.: 15.70 1st Qu.: 41.38 1st Qu.: 2.000
Median : 2.675 Median : 103.17 Median : 40.15 Median :103.29 Median : 5.475
Mean : 3.282 Mean : 501.30 Mean : 73.59 Mean :137.88 Mean : 13.971
3rd Qu.: 4.446 3rd Qu.: 226.95 3rd Qu.: 99.33 3rd Qu.:213.75 3rd Qu.: 18.308
Max. :45.650 Max. :24064.00 Max. :564.60 Max. :771.60 Max. :110.456
NA's :2 NA's :2 NA's :2 NA's :2 NA's :12
a1 a2 a3 a4 a5
Min. : 0.00 Min. : 0.000 Min. : 0.000 Min. : 0.000 Min. : 0.000
1st Qu.: 1.50 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.000
Median : 6.95 Median : 3.000 Median : 1.550 Median : 0.000 Median : 1.900
Mean :16.92 Mean : 7.458 Mean : 4.309 Mean : 1.992 Mean : 5.064
3rd Qu.:24.80 3rd Qu.:11.375 3rd Qu.: 4.925 3rd Qu.: 2.400 3rd Qu.: 7.500
Max. :89.80 Max. :72.600 Max. :42.800 Max. :44.600 Max. :44.400
a6 a7
Min. : 0.000 Min. : 0.000
1st Qu.: 0.000 1st Qu.: 0.000
Median : 0.000 Median : 1.000
Mean : 5.964 Mean : 2.495
3rd Qu.: 6.925 3rd Qu.: 2.400
Max. :77.600 Max. :31.600
数据简单介绍
algae是欧洲多条河流的水样在一年时间内水样的化学物质含量及藻类数量。数据集的观测值为200个水样,变量包括3个河流基本信息(season季节 size河流大小 speed河水流速),8种化学物质含量( mxPH;mnO2;Cl;NO3;NH4;oPO4;PO4;Chla ),7种藻类的数量(a1~a7)。
数据里存在空值,会导致部分函数报错。
根据某个属性绘制正态分布直方图
> hist(algae$mnO2)
> #关于MnO2物质的
#把数据里的空值去掉,并在图形上添加一条线描述正态分布
prop 把分布频率转化为分布密度
> hist(algae$mnO2,prob = T,ylim = c(0,1/4))
> lines(density(algae$mnO2,na.rm = T))
处理数据缺失
数据缺失常见的处理方法:
- 将含有缺失值的记录删除
- 根据变量间相关关系填补缺失数据
- 根据案例之间的相似性进行数据填补
提取不完整的数据记录
通过!complete.case()
函数将有空值的记录提取出来!
说明是提取不完整的样本。
> algae[!complete.cases(algae),]
> #将所有有缺失值的数据行打印出来
找出缺失数据较多的记录
> manyNAs(algae)
[1] 62 199
#默认manyNAs的缺失百分比是0.2
manyNAs(algae,n)
n是一个c(0,1)的小数,如果n=0.2,意思为如果有20%的数据项值为空,就认定该条数据是缺失数据较多的。
1.将缺失数据较多的记录删除
> manyNAs(algae)
[1] 62 199
> algae1 <- algae[-c(62,199),]
> #删除两条数据
> manyNAs(algae1)
named integer(0)
Warning message:
In manyNAs(algae1) :
Empty index generated, no rows with many NAs. Undesirable effects may be caused if indexing a data frame with this.
>
找到字段间的相关关系
cor(algae[, 4:18], use = "complete.obs")
#得到algae数据集中第4到第18个字段之前的相关关系
这样的数据表示不是很容易看明白
使用symnum()
函数使数据直观一点。
“`
symnum(cor(algae[, 4:18], use = “complete.obs”))
“`
从上面的表里可以看到NH4 - NO3
和 oPO4 - PO4
两对具有较强相关的变量
#得到oPO4 - PO4间的线性关系
> lm(oPO4~PO4,data = algae)
Call:
lm(formula = oPO4 ~ PO4, data = algae)
Coefficients:
(Intercept) PO4
-15.6142 0.6466
上面得到的数据意义为oPO4 = -15.6142 + 0.6466 * PO4