描述性统计

描述性统计

描述性统计是数据分析中最基础的环节,它主要用于总结和解释数据集的基本特征。通过描述性统计,我们能快速了解数据的整体趋势和分布情况。以下是描述性统计的主要内容。

1. 统计量概述

在进行描述性统计时,我们通常计算以下几类统计量:

1.1 计数(Count)

计数是指在特定条件下的数据个数。这对于了解样本量与子群体非常重要。

1
2
3
4
5
6
7
8
import pandas as pd

data = {'性别': ['男', '女', '男', '女', '男']}
df = pd.DataFrame(data)

# 计算男女人数
gender_count = df['性别'].value_counts()
print(gender_count)

案例分析
假设我们有一个包含学生性别的数据集,以上代码将输出男生和女生的数量,帮助我们快速理解班级性别构成。

1.2 均值(Mean)

均值是指所有数值的总和除以数值的个数,用于表示数据的中心位置。

1
2
3
4
5
6
data = {'分数': [78, 85, 90, 92, 88]}
df = pd.DataFrame(data)

# 计算均值
mean_score = df['分数'].mean()
print(mean_score)

案例分析
在学生分数的例子中,以上代码可以计算平均分数,帮助教师评估学生整体表现。

1.3 中位数(Median)

中位数是将数据按大小顺序排列后中间位置的值,适用于对极端值不敏感的情况。

1
2
3
4
5
6
data = {'分数': [78, 85, 90, 92, 50]}
df = pd.DataFrame(data)

# 计算中位数
median_score = df['分数'].median()
print(median_score)

案例分析
在分数数据集中,虽然存在一个较低的分数(50),中位数依然反映了大部分学生的真实表现,而不会因极端值受影响。

1.4 众数(Mode)

众数是数据中出现次数最多的值,适合了解数据的常见趋势。

1
2
3
4
5
6
data = {'颜色': ['红', '绿', '蓝', '红', '黄', '绿', '红']}
df = pd.DataFrame(data)

# 计算众数
mode_color = df['颜色'].mode()
print(mode_color)

案例分析
在描述颜色偏好时,众数能够清晰反映出最受欢迎的颜色,帮助市场营销制定策略。

1.5 标准差(Standard Deviation)

标准差是反映数据分散程度的统计量,标准差越大,说明数据分布越离散。

1
2
3
4
5
6
data = {'分数': [78, 85, 90, 92, 88]}
df = pd.DataFrame(data)

# 计算标准差
std_dev = df['分数'].std()
print(std_dev)

案例分析
在分析学生成绩时,标准差可以帮助教师了解学生成绩的波动情况,以便于采取不同的教学策略。

2. 数据可视化

除了计算统计量,我们还可以通过可视化来直观展示描述性统计结果。

2.1 条形图(Bar Chart)

1
2
3
4
5
6
7
8
9
10
11
import matplotlib.pyplot as plt

# 计算性别计数
gender_count = df['性别'].value_counts()

# 绘制条形图
gender_count.plot(kind='bar', color=['blue', 'pink'])
plt.title('性别分布')
plt.xlabel('性别')
plt.ylabel('人数')
plt.show()

案例分析
通过条形图展示男女比例,帮助快速掌握班级性别结构。

2.2 直方图(Histogram)

1
2
3
4
5
6
# 绘制分数直方图
df['分数'].plot(kind='hist', bins=5, color='lightblue')
plt.title('分数分布')
plt.xlabel('分数')
plt.ylabel('频数')
plt.show()

案例分析
分数直方图展示了成绩的分布情况,能够帮助教师了解学生整体成绩的集中区间。

3. 小结

描述性统计为数据分析奠定基础,通过有效计算和图形化展示,帮助我们理解数据特征。在日常工作和研究中,熟练掌握描述性统计工具和方法,将大大提升我们的数据分析能力。

11 推断性统计基础

11 推断性统计基础

推断性统计是数据分析中的重要组成部分,它帮助我们通过样本数据对整体进行推断和决策。下面,我们将通过几个核心概念和案例深入了解推断性统计。

1. 什么是推断性统计?

推断性统计是指从样本数据中提取信息,以推断整体特征的过程。这通常包括估计参数和假设检验两大方面。例如,我们可能想要从一个小样本中推断出整个社区的平均收入。

案例:估计整体平均收入

假设我们从某城市中随机抽取了100户家庭的收入数据,想要估计整个城市的家庭平均收入。

代码示例:Python计算平均数和置信区间

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
import numpy as np
import scipy.stats as stats

# 随机生成100户家庭的收入数据
np.random.seed(0)
sample_income = np.random.normal(loc=60000, scale=15000, size=100)

# 计算样本平均数和标准差
sample_mean = np.mean(sample_income)
sample_std = np.std(sample_income, ddof=1)

# 计算95%置信区间
conf_level = 0.95
degrees_freedom = len(sample_income) - 1
confidence_interval = stats.t.interval(
conf_level,
degrees_freedom,
loc=sample_mean,
scale=sample_std / np.sqrt(len(sample_income))
)

print(f"样本平均收入: {sample_mean:.2f}")
print(f"95%置信区间: {confidence_interval}")

2. 假设检验

假设检验是推断性统计中用于检验关于总体的声明的过程。基本步骤包括:

  1. 提出假设:零假设(H0)和备择假设(H1)。
  2. 选择显著性水平:通常设定为0.05。
  3. 计算检验统计量:根据样本数据计算一个统计量。
  4. 确定临界值或p值:比较检验统计量和临界值。
  5. 做出结论

案例:检验某产品的平均寿命

设想你是一家电子产品公司的数据分析师,你想要检验新产品的平均寿命是否超过500小时。

代码示例:t检验

1
2
3
4
5
6
7
8
9
10
11
# 假设新产品的样本数据
product_lifetimes = np.random.normal(loc=520, scale=50, size=30)

# 进行t检验
t_statistic, p_value = stats.ttest_1samp(product_lifetimes, 500)

alpha = 0.05 # 显著性水平
if p_value < alpha:
print("拒绝零假设:产品平均寿命显著大于500小时。")
else:
print("无法拒绝零假设:产品平均寿命没有显著证据大于500小时。")

3. 置信区间

置信区间为我们提供了一个范围,在此范围内我们可以以一定的置信度推断总体参数。

案例:患者恢复时间的置信区间

假设我们要估计某种治疗方法下,患者平均恢复时间的95%置信区间。

代码示例:计算置信区间

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 随机生成患者恢复时间数据
patient_recovery_times = np.random.normal(loc=30, scale=5, size=40)

# 计算样本平均值和标准差
mean_recovery_time = np.mean(patient_recovery_times)
std_recovery_time = np.std(patient_recovery_times, ddof=1)

# 计算95%置信区间
confidence_interval_recovery = stats.t.interval(
0.95,
len(patient_recovery_times) - 1,
loc=mean_recovery_time,
scale=std_recovery_time / np.sqrt(len(patient_recovery_times))
)

print(f"患者恢复时间的95%置信区间: {confidence_interval_recovery}")

4. 总结

推断性统计是帮助我们从样本推断整体的重要工具,包括估计参数和假设检验等方法。在实际应用中,我们常常结合具体案例来观察、分析和得出结论。掌握推断性统计不仅能够提升数据分析能力,也为决策提供了坚实的基础。

12 常用统计分布

12 常用统计分布

在数据分析中,理解统计分布至关重要。统计分布帮助我们理解数据的行为,建立模型,对未来进行预测。以下是几种常用的统计分布及其应用案例。

正态分布

正态分布(Normal Distribution),也称高斯分布,是最常见的统计分布之一。它的概率密度函数呈现标志性的钟形曲线。

关键特点

  • 对称性:关于平均值对称。
  • 68-95-99.7规则:约68%的数据落在平均值±1个标准差内,95%落在±2个标准差内,99.7%落在±3个标准差内。

应用案例

假设我们在分析一个班级的数学考试成绩,以下是该班级考试成绩的生成和分析:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns

# 设定随机数种子
np.random.seed(42)

# 生成正态分布的考试成绩数据
scores = np.random.normal(loc=75, scale=10, size=1000)

# 绘制成绩分布图
sns.histplot(scores, bins=30, kde=True)
plt.title("Math Exam Scores Distribution")
plt.xlabel("Scores")
plt.ylabel("Frequency")
plt.show()

此图展示了班级成绩的分布情况,中心聚集在75分,符合正态分布的特点。

泊松分布

泊松分布(Poisson Distribution)通常用于描述在固定时间或空间内稀有事件的发生次数。

关键特点

  • 单参数:由一个均值参数λ(lambda)决定。
  • 离散性:只适用于非负整数。

应用案例

假设我们想分析某商店在一天内接到顾客投诉的次数。我们可以使用泊松分布来建模。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import numpy as np
import matplotlib.pyplot as plt

# 设置平均投诉次数
lambda_param = 3

# 生成泊松分布数据
complaints = np.random.poisson(lam=lambda_param, size=1000)

# 绘制投诉次数分布图
plt.hist(complaints, bins=30, density=True, alpha=0.6, color='g')
plt.title("Customer Complaints Distribution")
plt.xlabel("Number of Complaints")
plt.ylabel("Frequency")
plt.show()

此图表明,虽然间歇性但大多顾客投诉的数量在3次左右。

指数分布

指数分布(Exponential Distribution)用于描述事件发生的时间间隔,以此来模型寿命或等待时间。

关键特点

  • 单参数:λ(lambda)为速率,表示平均发生次数。
  • 记忆无关性:与过去的事件无关。

应用案例

我们想模拟顾客在商店内等待服务时间,可以使用指数分布。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import numpy as np
import matplotlib.pyplot as plt

# 设置参数
rate = 1/5 # 平均等待时间为5分钟

# 生成指数分布数据
waiting_times = np.random.exponential(scale=1/rate, size=1000)

# 绘制等待时间分布图
plt.hist(waiting_times, bins=30, density=True, alpha=0.6, color='b')
plt.title("Customer Waiting Time Distribution")
plt.xlabel("Waiting Time (minutes)")
plt.ylabel("Frequency")
plt.show()

此图显示了顾客等待服务的时间,展示了相对集中于短时间范围内的特征。

结论

了解这些常用的统计分布对于数据分析至关重要。通过案例和代码示例,我们能够更好地理解这些分布的实际应用。很多时候,数据的分布可以帮助我们做出更好的决策和预测。