此部分内容会每日更新,包括但不限于基础知识,进阶知识,数据处理,图表展示,数据分析实战,机器学习算法等~ !!!
本人统计学硕士在读,想在2024年完成sql、python、R语言、stata、matlab等软件的复盘和巩固,目前在做统计学知识和R语言的复习~
后续考虑出相关视频进行讲解说明,请大家持续点赞+收藏+关注哈,大家一起沟通交流~
2.3 描述性统计分析习题
(1)计算均值、中位数、众数等描述性统计量
习题1:
题目:给定一组数据,计算其均值。
答案:
# 假设数据向量data已经给出
data <- c(1, 2, 3, 4, 5, 6, 7, 8, 9)
# 计算均值
mean_value <- mean(data)
print(paste("均值是:", mean_value))
习题2:
题目:给定一个包含员工薪资的数据集,计算薪资的中位数。
答案:
# 假设薪资向量salaries已经给出
salaries <- c(3000, 4500, 3500, 6000, 5000, 4200, 5500, 4800)
# 计算中位数
median_salary <- median(salaries)
print(paste("薪资中位数是:", median_salary))
习题3:
题目:计算一组数据的众数,并解释其含义。
答案:
# 使用自定义函数计算众数
get_mode <- function(x) {
ux <- sort(unique(x))
ux[which.max(tabulate(match(x, ux)))]
}
# 假设数据向量data已经给出
data <- c(1, 2, 2, 3, 3, 3, 4, 5)
# 计算众数
mode_value <- get_mode(data)
print(paste("众数是:", mode_value))
print("众数是指在一组数据中出现次数最多的数值。")
习题4:
题目:给定一个包含学生成绩的数据集,分别计算男生和女生的成绩均值。
答案:
# 假设成绩数据框scores已经给出,其中包含性别列gender和成绩列score
scores <- data.frame(
gender = c("男", "女", "男", "男", "女", "女", "男", "女"),
score = c(85, 90, 78, 92, 88, 95, 80, 93)
)
# 计算男生和女生的成绩均值
mean_score_male <- mean(scores$score[scores$gender == "男"])
mean_score_female <- mean(scores$score[scores$gender == "女"])
print(paste("男生成绩均值是:", mean_score_male))
print(paste("女生成绩均值是:", mean_score_female))
习题5:
题目:计算某公司各部门员工年龄的中位数,并比较各部门的年龄分布情况。
答案:
# 假设数据框employees已经给出,其中包含部门列department和年龄列age
employees <- data.frame(
department = c("A", "B", "A", "C", "B", "A", "C", "B"),
age = c(25, 32, 28, 40, 35, 29, 38, 30)
)
# 分组计算中位数
library(dplyr)
median_ages <- employees %>%
group_by(department) %>%
summarise(median_age = median(age))
# 输出结果并比较
print(median_ages)
print("通过比较各部门的年龄中位数,可以初步了解各部门员工的年龄分布情况。")
(2)计算方差、标准差等变异指标
习题6:
题目:计算一组数据的方差,并解释其意义。
习题6:
题目:计算一组数据的方差,并解释其意义。
答案:
# 假设数据向量data已经给出
data <- c(1, 2, 3, 4, 5, 6, 7, 8, 9)
# 计算方差
variance <- var(data)
print(paste("方差是:", variance))
print("方差用于描述数据集中各个数值与其均值之差的平方的平均值,反映了数据的离散程度。")
习题7:
题目:给定一个包含股票日收益率的数据集,计算其标准差并评估风险水平。
答案:
# 假设股票日收益率向量returns已经给出
returns <- c(0.01, -0.02, 0.03, -0.01, 0.04, -0.03, 0.02)
# 计算标准差
std_dev <- sd(returns)
print(paste("股票日收益率的标准差是:", std_dev))
print("标准差衡量了数据的离散程度,对于股票日收益率而言,标准差越大,表示收益波动越大,风险水平也相对较高。")
习题8:
题目:比较两组数据的方差,分析它们的离散程度差异。
答案:
# 假设两组数据向量data1和data2已经给出
data1 <- c(1, 2, 3, 4, 5)
data2 <- c(5, 5, 5, 5, 5)
# 计算两组数据的方差
variance1 <- var(data1)
variance2 <- var(data2)
# 比较方差
print(paste("第一组数据的方差是:", variance1))
print(paste("第二组数据的方差是:", variance2))
print("由于第二组数据的方差较小,说明其数值更为集中,离散程度较低;而第一组数据的方差较大,数值分布更为离散。")
习题9:
题目:计算某班级学生身高的标准差,并评估学生身高的分布情况。
答案:
# 假设学生身高向量heights已经给出
heights <- c(150, 155, 160, 158, 162, 157, 161, 159)
# 计算身高的标准差
std_dev_height <- sd(heights)
print(paste("学生身高的标准差是:", std_dev_height))
print("标准差可以反映学生身高的离散程度。如果标准差较小,说明学生身高分布比较集中;如果标准差较大,说明学生身高分布较为分散。")
习题10:
题目:分析一组数据的变异系数,并解释其相对于均值的变化程度。
答案:
# 假设数据向量data和对应的均值mean_value已经给出
data <- c(1, 2, 3, 4, 5, 6, 7, 8, 9)
mean_value <- mean(data)
# 计算标准差
std_dev <- sd(data)
# 计算变异系数
coefficient_of_variation <- std_dev / mean_value
print(paste("变异系数是:", coefficient_of_variation))
print("变异系数是标准差与均值之比,它反映了数据的相对离散程度。当变异系数较大时,说明数据的离散程度相对于均值较大;当变异系数较小时,说明数据的离散程度相对较小。")
(3)绘制直方图、箱线图等描述性统计图形
习题11:
题目:使用直方图展示一组数据的分布情况。
答案:
# 假设数据向量data已经给出
data <- c(1, 2, 3, 4, 5, 5, 6, 7, 7, 8, 9, 9, 10)
# 绘制直方图
hist(data, main = "数据分布直方图", xlab = "数值", ylab = "频数", col = "lightblue", border = "black")
习题12:
题目:绘制箱线图,比较两个不同群体的数据分布情况。
答案:
# 假设两个群体的数据向量group1和group2已经给出
group1 <- c(1, 2, 3, 4, 5, 6, 7, 8, 9)
group2 <- c(8, 9, 10, 11, 12, 13, 14, 15, 16)
# 绘制箱线图
boxplot(group1, group2, names = c("群体1", "群体2"), main = "不同群体数据分布箱线图", col = c("lightblue", "lightgreen"))
习题13:
题目:给定一组销售数据,绘制直方图和箱线图,分析销售额的分布情况。
答案:
# 假设销售数据向量sales已经给出
sales <- c(1000, 1500, 1200, 2500, 1800, 2200, 3000, 2000, 2800, 1700)
# 绘制直方图
hist(sales, main = "销售额分布直方图", xlab = "销售额", ylab = "频数", col = "lightblue", border = "black")
# 绘制箱线图
boxplot(sales, main = "销售额分布箱线图", col = "lightblue")
习题14:
题目:使用R语言绘制直方图,并添加标题和轴标签。
答案:
# 假设数据向量data已经给出
data <- rnorm(100) # 生成100个正态分布的随机数作为示例数据
# 绘制直方图并添加标题和轴标签
hist(data, main = "数据分布直方图", xlab = "数值", ylab = "频数", col = "lightblue", border = "black")
习题15:
题目:分析一组数据的偏度和峰度,并使用箱线图进行可视化展示。
答案:
# 假设数据向量data已经给出
data <- c(1, 2, 2, 3, 4, 4, 4, 5, 5, 5, 5, 6, 7, 8, 9)
# 计算偏度和峰度
library(moments)
skewness <- skewness(data)
kurtosis <- kurtosis(data)
# 输出偏度和峰度
print(paste("偏度:", skewness))
print(paste("峰度:", kurtosis))
# 绘制箱线图以辅助可视化
boxplot(data, main = "数据分布箱线图", col = "lightblue")
# 注意:箱线图本身不直接展示偏度和峰度,但可以提供数据分布形状的一些线索。
# 对于偏度和峰度的详细可视化,通常需要更复杂的图表,如Q-Q图或概率密度函数图。