R语言进行描述性统计分析_r tables of numerical summaries

106 阅读3分钟

Hmisc包中的describe()函数可返回变量和观测的数量、缺失值和唯一值的数目、平均值、
分位数,以及五个最大的值和五个最小的值。Info描述数据的连续性,Gmd为基尼均差。
1.3 stat.desc 函数的格式及参数意义
调用格式:stat.desc(x, basic=TRUE, desc=TRUE, norm=FALSE, p=0.95)
stat.desc 参数
x 要进行统计分析的对象,比方说是个数据框
basic 是不是返回一些基本的统计结果比如输入的观测值个数,每个变量所含缺失值的个数, 最大值,最小值等
desc 是不是返回各种描述性统计结果比如均值,中值,标准差,置信区间等
norm 是不是返回正态分布统计量
p 计算置信区间的显著性水平

2. 利用上述函数对数据的编程分析
2.1 三种函数的基本编程及其主要分析结果
(1) summary函数
vars <- c(“mpg”, “hp”, “wt”)
head(mtcars[, vars])
summary(mtcars[, vars])

【程序说明】:
(1)mtcars是R自带的数据集里的一个描述的是一些汽车的特征,进入R之后就可以使用,这个mtcars是一个数据框
(2)mtcars一共有11个变量,我们使用vars <- c(“mpg”, “hp”, “wt”), 从中选取三个变量
(3) head(mtcars[,vars])查看数据框开头的6个数据
(4)summary(mtcars[, vars])统计三个变量的描述性统计信息。

(2)describe 函数
library(Hmisc)
vars <- c(“mpg”, “hp”, “wt”)
head(mtcars[, vars])
describe(mtcars[, vars])

【程序说明】:
同上。
(3)stat.desc 函数
library(pastecs)
vars <- c(“mpg”, “hp”, “wt”)
head(mtcars[, vars])
stat.desc(mtcars[vars],norm = T)

任务1

读取student_BMI.csv中21个学生的相关数据,分别使用sort,rank,order对BMI进行排序。

# 读取CSV文件数据
data <- read.csv("student\_BMI.csv")

# 提取BMI数据
bmi_data <- data$BMI

# 使用sort对BMI进行排序
sorted_bmi <- sort(bmi_data)
print("Sorted BMI:")
print(sorted_bmi)

# 使用rank对BMI进行排名
bmi_rank <- rank(bmi_data)
print("BMI Rank:")
print(bmi_rank)

# 使用order获取排序的顺序索引
bmi_order <- order(bmi_data)
print("BMI Order:")
print(bmi_order)


任务2

随机产生21名学生的高数和英语成绩向量,并加入到上题产生的数据框中。

# 随机生成高数和英语成绩向量
set.seed(123)  # 设置随机种子以确保结果可重现
math_scores <- round(runif(21, min = 60, max = 100), 2)  # 随机生成高数成绩
english_scores <- round(runif(21, min = 60, max = 100), 2)  # 随机生成英语成绩

# 将随机生成的高数和英语成绩添加到数据框中
data$Math_Score <- math_scores
data$English_Score <- english_scores


任务3:

对BMI,高数,英语成绩进行描述性统计分析。指出这三项的一些描述性指数
,包括最小值、最大值、极差、平均数、方差、标准差、变异系数。

# 定义函数计算描述性统计指标
describe_stats <- function(x) {
  stats <- c(
    min = min(x),
    max = max(x),
    range = max(x) - min(x),
    mean = mean(x),
    variance = var(x),
    sd = sd(x),
    coefficient_of_variation = sd(x) / mean(x)
  )
  return(stats)
}

# 对BMI、高数和英语成绩进行描述性统计分析
bmi_stats <- describe_stats(data$BMI)
math_stats <- describe_stats(data$Math_Score)
english_stats <- describe_stats(data$English_Score)

# 输出描述性统计指标
cat("BMI Descriptive Statistics:\n")
print(bmi_stats)

cat("\nMath Score Descriptive Statistics:\n")
print(math_stats)

cat("\nEnglish Score Descriptive Statistics:\n")
print(english_stats)


问题4

有50个小区水稻产量的资料如下:
37 46 38 38 39 35 35 33 35 36 36 35 38 34 35 37 37 32 36 35
39 39 42 33 36 36 38 34 35 38 36 33 33 35 34 28 30 33 35 36
34 41 39 43 36 35 26 34 35 31
(1)使用hist函数画出其直方图,使用density函数加入密度曲线,使用table统计产量频数,并进行简单分析。

# 50个小区水稻产量数据
yield_data <- c(37, 46, 38, 38, 39, 35, 35, 33, 35, 36, 36, 35, 38, 34, 35, 37, 37, 32, 36, 35,
                39, 39, 42, 33, 36, 36, 38, 34, 35, 38, 36, 33, 33, 35, 34, 28, 30, 33, 35, 36,
                34, 41, 39, 43, 36, 35, 26, 34, 35, 31)

# 绘制直方图
hist(yield_data, breaks = 10, col = "skyblue", xlab = "Yield", ylab = "Frequency",
     main = "Histogram of Rice Yield")

# 添加密度曲线
lines(density(yield_data), col = "red")

# 使用 table 统计产量频数
yield_freq <- table(yield_data)
print("Frequency of Yields:")
print(yield_freq)



(2)利用上问的频数分布计算基本统计数,包括样本容量、最小值、最大值、极差、平均数、方差、标准差、变异系数。

# 计算基本统计数
sample_size <- length(yield_data)  # 样本容量
min_value <- min(yield_data)  # 最小值
max_value <- max(yield_data)  # 最大值
range_value <- max_value - min_value  # 极差
mean_value <- mean(yield_data)  # 平均数