一、研究背景
随着移动互联网的快速发展,手机游戏(手游)逐渐成为人们日常生活中的重要娱乐方式之一。尤其在全球疫情期间,居家隔离措施使得人们有了更多的时间接触和参与手游,这进一步推动了手游市场的蓬勃发展。然而,随着手游用户规模的不断扩大,玩家在游戏内消费(氪金)行为也日益频繁,引发了社会各界对手游氪金现象的广泛关注。本研究通过对手游氪金程度的调查与分析,旨在了解不同用户群体的氪金动机和行为,为游戏开发商优化产品设计和市场策略提供数据支持,同时也为相关部门制定合理的监管措施提供参考依据。
二、研究意义
- 理论意义:本研究通过对手游用户氪金行为的调查,分析了不同群体在氪金动机、氪金频率及氪金后悔情况等方面的差异,为手游消费行为理论研究提供了新的数据和视角,丰富了游戏经济学和行为经济学的研究内容。
- 实际意义:本研究结果可以为手游开发商提供宝贵的用户行为数据,帮助他们更好地理解玩家的需求和偏好,从而优化游戏设计和运营策略,提升用户体验和满意度。此外,本研究还可以为政府和相关监管机构提供决策参考,促进手游市场的健康发展。
三、实证分析
首先读取数据
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import matplotlib.pyplot as plt
%matplotlib inline
plt.rcParams['font.sans-serif'] = ['KaiTi'] #中文
plt.rcParams['axes.unicode_minus'] = False #负号
# 读取数据
file_path = '手游氪金程度调查_119_97.xlsx'
df = pd.read_excel(file_path)
接下来进行数据清洗
# 数据清洗
columns_to_drop = ['序号', '提交答卷时间', '所用时间', '来源', '来源详情', '来自IP','19、感谢您填写此次问卷,祝您生活愉快!']
df_cleaned = df.drop(columns=columns_to_drop)
df_cleaned.replace('(跳过)', pd.NA, inplace=True)
df_cleaned.dropna(thresh=15, inplace=True)
统计不同阶段的参与者分布
stage_distribution = df_cleaned['1、您目前的所处阶段是?'].value_counts()
stage_distribution
统计性别分布
gender_distribution = df_cleaned['2、你的性别是'].value_counts()
gender_distribution
接下来可视化
plt.figure(figsize=(6, 6))
gender_distribution.plot.pie(autopct='%1.1f%%', colors=['skyblue', 'lightcoral'])
plt.title('性别分布')
plt.ylabel('')
plt.show()
统计游戏偏好分布
game_preference_distribution = df_cleaned['4、对于手游和端游,您的偏好是?'].value_counts()
game_preference_distribution
绘制游戏偏好分布柱状图
plt.figure(figsize=(10, 6))
sns.countplot(y='4、对于手游和端游,您的偏好是?', data=df_cleaned, palette='muted')
plt.title('游戏偏好分布')
plt.xlabel('人数')
plt.ylabel('偏好')
plt.show()
统计氪金行为及原因
绘制氪金原因分布柱状图
plt.figure(figsize=(10, 6))
sns.countplot(y='10、您氪金的原因是', data=df_cleaned, palette='coolwarm')
plt.title('氪金原因分布')
plt.xlabel('人数')
plt.ylabel('原因')
plt.show()
绘制氪金动机分布柱状图
探索性数据分析(EDA):
了解数据的基本统计信息。 探索各个特征之间的关系。 聚类分析:
对用户进行聚类,找出不同类型的玩家。 使用K-means聚类等算法。
PCA的选择
目的:PCA用于降维,主要是将高维数据转换为低维数据,同时保留尽可能多的原始数据的变异信息。 选择主成分的数量:n_components=2 是常见的选择,因为二维数据可以很容易地可视化。如果数据集有更多的显著主成分,可以增加 n_components 的数量。
K-means聚类 K-means的选择
目的:K-means是一种无监督学习算法,目的是将数据点划分到K个聚类中,使得每个聚类内的数据点尽可能相似,而不同聚类之间的数据点尽可能不同。 选择K的数量:K=3 是一个初始选择,可以通过“肘部法则”(Elbow Method)或“轮廓系数”(Silhouette Score)来科学地确定最优的K值。
from sklearn.cluster import KMeans
from sklearn.decomposition import PCA
# 对分类变量进行标准化处理
X = df_cleaned[categorical_columns]
# 计算累计解释方差比
pca = PCA()
pca.fit(X)
explained_variance = pca.explained_variance_ratio_
# 绘制累计解释方差比图
plt.figure(figsize=(10, 6))
plt.plot(range(1, len(explained_variance) + 1), explained_variance.cumsum(), marker='o', linestyle='--')
plt.title('累计解释方差比')
plt.xlabel('主成分数量')
plt.ylabel('累计解释方差比')
plt.show()
使用肘部法则确定最佳K值
inertia = []
silhouette_scores = []
K_range = range(2, 10)
for k in K_range:
kmeans = KMeans(n_clusters=k, random_state=42)
kmeans.fit(X)
inertia.append(kmeans.inertia_)
silhouette_scores.append(silhouette_score(X, kmeans.labels_))
# 绘制肘部法则图
plt.figure(figsize=(10, 6))
plt.plot(K_range, inertia, marker='o', linestyle='--')
plt.title('肘部法则确定最佳K值')
plt.xlabel('聚类数量K')
plt.ylabel('聚类内平方和')
plt.show()
绘制轮廓系数图
绘制聚类结果
# 确定K值
optimal_k = 4 # 根据肘部法则或轮廓系数确定
# 使用K-means聚类
kmeans = KMeans(n_clusters=optimal_k, random_state=42)
clusters = kmeans.fit_predict(X_pca)
# 将聚类结果添加到原数据中
df_cleaned['Cluster'] = clusters
# 绘制聚类结果
plt.figure(figsize=(10, 6))
sns.scatterplot(x=X_pca[:, 0], y=X_pca[:, 1], hue=clusters, palette='viridis')
plt.title('K-means 聚类结果')
plt.xlabel('主成分1')
plt.ylabel('主成分2')
plt.show()
四、结论
通过对数据的分析,我们发现以下主要结论:
- 用户阶段和氪金行为:大学生和其他年轻用户群体是手游氪金的主要人群,他们的氪金动机主要集中在提升游戏体验、获取更强装备和喜欢的角色等方面。
- 性别差异:女性玩家在氪金动机上更倾向于购买好看的皮肤和增加社交机会,而男性玩家则更多地关注游戏的竞技性和装备升级。
- 氪金后悔情况:大多数玩家在氪金后不会感到后悔,认为一时满足的消费是值得的,但也有部分玩家会有不太值得的感觉。
- 疫情影响:疫情期间,玩家的游戏时间普遍增加,部分玩家在游戏上的花费也有所上升,这说明在特殊时期,手游成为了重要的娱乐和消遣方式。