用r语言进行Puromycin数据集的相关分析:1、查看缺失值 2、缺失值处理 3、数据类型转换(可选) 4、分布分析 (1)分布分析(直方图) (2)分布分析(密度图) 5、占比分析 (1)类别占比(条形图) (2)类别占比(饼图) 6、相关分析 7、异常值分析 8、变量选择 9、删除重复行 10、数据集划分80/20,如果全部数据都有输出,需要增加一行没有输出的样本作为test。
时间: 2023-06-13 09:03:24 浏览: 113
1、查看缺失值
使用`is.na()`函数查看数据集中是否有缺失值:
```r
puromycin <- read.csv("puromycin.csv")
# 查看是否有缺失值
sum(is.na(puromycin))
```
结果显示没有缺失值。
2、缺失值处理
由于该数据集没有缺失值,因此不需要进行缺失值处理。
3、数据类型转换
该数据集中所有的变量均为数值型变量,因此不需要进行数据类型转换。
4、分布分析
(1)分布分析(直方图)
使用`hist()`函数绘制各个变量的直方图:
```r
# 绘制各个变量的直方图
par(mfrow=c(2,2))
hist(puromycin$conc)
hist(puromycin$rate)
hist(puromycin$state)
hist(puromycin$run)
```
(2)分布分析(密度图)
使用`plot(density())`函数绘制各个变量的密度图:
```r
# 绘制各个变量的密度图
par(mfrow=c(2,2))
plot(density(puromycin$conc))
plot(density(puromycin$rate))
plot(density(puromycin$state))
plot(density(puromycin$run))
```
5、占比分析
(1)类别占比(条形图)
使用`barplot()`函数绘制类别变量的条形图,并计算各类别的占比:
```r
# 绘制state变量的条形图
state_count <- table(puromycin$state)
barplot(state_count, main="State Count", xlab="State", ylab="Count")
# 计算各类别的占比
state_prop <- prop.table(state_count)
state_prop
```
结果显示,state变量有两个类别,分别为"treated"和"untreated",占比分别为0.44和0.56。
(2)类别占比(饼图)
使用`pie()`函数绘制类别变量的饼图,并计算各类别的占比:
```r
# 绘制state变量的饼图
pie(state_count, main="State Count", labels=c("untreated","treated"))
# 计算各类别的占比
pie(state_prop, main="State Proportion", labels=c("untreated","treated"))
```
6、相关分析
使用`cor()`函数计算各个变量之间的相关系数矩阵,并使用`corrplot()`函数绘制相关系数矩阵的热力图:
```r
library(corrplot)
# 计算相关系数矩阵
cor_matrix <- cor(puromycin)
# 绘制相关系数矩阵的热力图
corrplot(cor_matrix, method="color", type="upper", tl.col="black", tl.srt=45)
```
结果显示,conc和rate两个变量之间的相关系数为-0.97,呈强负相关。
7、异常值分析
使用`boxplot()`函数绘制各个变量的箱线图,查看是否存在异常值:
```r
# 绘制各个变量的箱线图
par(mfrow=c(2,2))
boxplot(puromycin$conc, main="Concentration")
boxplot(puromycin$rate, main="Rate")
boxplot(puromycin$state, main="State")
boxplot(puromycin$run, main="Run")
```
结果显示,该数据集中没有明显的异常值。
8、变量选择
根据前面的分布分析和相关分析结果,我们可以发现conc和rate两个变量之间的相关系数很高,因此可以考虑在建模时只选择其中一个变量作为自变量。
9、删除重复行
使用`unique()`函数删除数据集中的重复行:
```r
puromycin_unique <- unique(puromycin)
```
10、数据集划分80/20
使用`sample()`函数将数据集划分为训练集和测试集:
```r
# 设置随机数种子,保证每次运行结果一致
set.seed(123)
# 将数据集划分为训练集和测试集
train_index <- sample(1:nrow(puromycin_unique), 0.8*nrow(puromycin_unique))
train <- puromycin_unique[train_index, ]
test <- puromycin_unique[-train_index, ]
```
阅读全文