2011大学生SNS问卷数据:统计教学中的真实数据训练场
2026/9/17 18:00:07 网站建设 项目流程

简介:本资源是一份面向高校统计学课程实践与社会调查类作业的实证调研报告,适用于大学生开展SNS使用行为研究、社会调查方法实训及数据分析入门学习。报告以2011年针对47名在校大学生的问卷调查为基础,系统呈现了社交网站(如人人网、QQ、微博)在大学生群体中的使用类型、核心功能(日志浏览、状态发布、资源共享)、使用目的(娱乐消遣、打发时间)、日均耗时及对现实人际交往的影响等关键发现,并通过10项Likert量表题深入分析了线上社交认同感、现实社交倾向、好友重合度与依赖程度等心理维度。资源为单个PDF文件,大小479KB,结构完整,含调查方案、数据统计分析、调研结论与附录问卷表共四章,逻辑清晰、模块分明,便于教学引用或课程设计参考。目前已有91人学习下载,是理解早期中国大学生社交媒体使用生态与统计调查全流程的典型范例材料。

1. 这不是一份普通课程作业:一份2011年真实大学生SNS行为快照,藏着统计学教学中最易被忽略的「数据真实性训练场」

你手头这份《统计学调研报告.pdf》,表面看是某高校学生贾璐完成的课程实践作业——但拆开它,会发现它远不止“交差材料”那么简单。它记录的是中国社交网络爆发初期(2011年),人人网、QQ空间、微博刚成为大学生数字生活基础设施时的真实行为切片:47份有效问卷、13个李克特五级量表题项、覆盖使用频率、心理依赖、现实社交替代效应等维度。这不是模拟数据,而是未经清洗的原始田野记录——问卷中“我会因为不能上SNS而焦躁不安”一题,40.43%选“完全不符合”,21.28%选“不太符合”,但仍有6.38%选“完全符合”,这种分布本身就构成一个典型偏态样本。对统计学初学者,它提供从问卷设计→数据录入→频数/交叉分析→信效度初判的完整闭环;对有经验者,它是检验SPSS/Python数据清洗能力的试金石:比如第10题“您上社交网站的目的”允许多选,但原始PDF未说明编码规则,需自行推断多选题拆分逻辑;又如“好友重合度”与“现实朋友数量”存在潜在共线性,却未做相关性检验。适合三类人深度复用:统计学教师用作课堂案例(附带真实问卷结构与缺陷);数据分析新人练手(从PDF表格OCR到建模全流程);社会学研究者回溯早期SNS用户心理图谱。

2. 从PDF到可计算数据集:结构化提取与变量重建的技术路径

2.1 PDF文本解析的陷阱识别与人工校验策略

原始PDF虽为扫描件(从页眉“专业班级:学号:姓名:”及手写体编号可判断),但全文含大量结构化表格(如第8页的李克特量表统计表)。直接使用pdfplumbertabula提取易出错:

  • 问题1:跨页表格断裂——第8页“题目完全不符合…完全符合”表格实际横跨两栏,自动解析常将“我 在 现实 生 活中 是 一个 内 向的人”拆成多行;
  • 问题2:百分比与频数混排——如“13(27.66%)”需分离为count=13, pct=27.66
  • 问题3:题干与选项错位——第14页问卷第10题“您认为社交网站对您有何影响”后接多选选项,但PDF中选项A-F与题干间存在空行,OCR易误判为新题。

提示:必须采用“半自动+人工锚点校验”流程。先用pdfplumber按页提取文本,定位关键词“题目完全不符合”作为量表起始锚点,再用正则r'(\d+)\s+\((\d+\.\d+)%\)'匹配频数与百分比,最后人工核对每题13行是否完整(因量表题共13题,每题5列,应得65个数值)。

2.2 多选题编码规则逆向工程与数据宽表构建

问卷中第3、9、10、15题为多选题(如第3题“经常使用的社交网站有哪些”含8个选项),但PDF未提供编码说明。根据统计惯例及上下文推断:

  • 选项赋值逻辑:A=1, B=2, C=3...H=8(非二进制编码,因第14页问卷显示选项为字母序);
  • 缺失值处理:未勾选视为0,但需区分“拒答”与“无此项”——第4题“如何接触SNS”含4个选项,若全未选则标记为NaN
  • 宽表转换关键:将单选题(如性别)直接映射为列,多选题需拆分为布尔列。例如第3题生成8列:use_weibo,use_renren,use_qqspace...值为1/0。
import pandas as pd import re # 假设已提取原始文本块text_block def parse_multiselect(text_block, question_num, options_count): """解析多选题文本,返回字典格式""" # 提取选项行(如"A 微博、博客") pattern = r'([A-Z])\s+(.+?)(?=\n[A-Z]\s+|\n\n|$)' matches = re.findall(pattern, text_block, re.DOTALL) if len(matches) != options_count: raise ValueError(f"Question {question_num}: expected {options_count} options, got {len(matches)}") # 构建选项映射 option_map = {opt[0]: opt[1].strip() for opt in matches} return option_map # 示例:解析第3题(8个选项) option_3 = parse_multiselect(pdf_text_page14, 3, 8) print(option_3) # {'A': '微博、博客', 'B': '人人网(校内网)', 'C': 'QQ 空间、腾讯朋友', ...}

参数说明:parse_multiselect函数通过正则捕获选项字母与内容,避免手动录入错误;options_count=8确保完整性校验。若实际提取选项数不符,立即中断并人工检查PDF——这是防止后续分析污染的关键闸口。

2.3 李克特量表数据清洗:从原始频数到个体响应矩阵

第8页量表题给出的是汇总频数(如“我 在 现实 生 活中 是 一个 内 向的人”题下5列数值),但统计教学需还原至个体层面。标准做法是:

  • 步骤1:确认量表方向——所有题项均按“完全不符合→完全符合”正向计分(A=1, B=2, C=3, D=4, E=5);
  • 步骤2:生成虚拟个体数据——对每题,按频数重复生成对应数量的个体响应。例如第1题“完全不符合”13人,则生成13个值为1的记录;
  • 步骤3:合并题项——将13题响应拼接为47×13矩阵(因总有效人数47,且∑各题频数=47)。
import numpy as np # 假设已提取第1题频数:[13, 25, 4, 5, 0] freq_q1 = [13, 25, 4, 5, 0] # A-E频数 # 生成该题个体响应向量 responses_q1 = np.repeat([1,2,3,4,5], freq_q1) # 对13题循环执行,最终得到(47,13)数组 all_responses = np.column_stack([ np.repeat([1,2,3,4,5], [13,25,4,5,0]), # Q1 np.repeat([1,2,3,4,5], [2,8,7,19,11]), # Q2 # ... 其他11题频数 ]) # 转为DataFrame,列名为Q1-Q13 df_likert = pd.DataFrame(all_responses, columns=[f'Q{i}' for i in range(1,14)])

逻辑说明:np.repeat按频数复制计分值,确保总行数恒为47;np.column_stack横向拼接保证个体响应一致性。若某题∑频数≠47(如第8页Q10频数和为47,但Q11为47?需逐题验证),则表明原始数据存在录入错误,必须标注并讨论其对信度分析的影响。

3. 统计分析复现:用现代工具验证2011年结论的稳健性

3.1 描述性统计的现代实现与经典结论对照

原始报告结论(P11)称:“大学生主要使用的社交网站为QQ、人人网、微博”,“使用目的主要是娱乐消遣,也有近50%用来打发时间”。我们用pandas复现:

# 假设已构建多选题宽表df_multiselect(列:use_weibo, use_renren, use_qqspace...) usage_counts = df_multiselect[['use_weibo','use_renren','use_qqspace','use_douban']].sum().sort_values(ascending=False) print("使用频率TOP3:") print(usage_counts.head(3)) # 输出示例: # use_qqspace 38 # use_renren 35 # use_weibo 29 # 目的分析(第10题多选) purpose_cols = ['purpose_entertainment', 'purpose_resource', 'purpose_follow', 'purpose_selfshow', 'purpose_killtime'] purpose_sum = df_multiselect[purpose_cols].sum() purpose_pct = (purpose_sum / len(df_multiselect) * 100).round(2) print("使用目的占比:") print(purpose_pct.sort_values(ascending=False)) # 输出示例: # purpose_killtime 48.94 # 接近原文"近50%" # purpose_entertainment 42.55

参数说明:sum()直接统计多选题勾选项数,/len(df_multiselect)得占比;round(2)保留两位小数便于与原文“近50%”对照。注意:若purpose_killtime占比48.94%,则原文“近50%”属合理概括,但若为32.15%则需质疑结论偏差。

3.2 关键假设检验:SNS使用强度与现实社交能力的关联性验证

报告P12提出:“在维持了一段时间社交网站后,我和现实朋友的交流少了”(Q13),并暗示其与“我在现实中是一个内向的人”(Q1)存在关联。我们用卡方检验验证:

from scipy.stats import chi2_contingency # 构建列联表:Q1(内向程度)vs Q13(现实交流减少) # 将Q1、Q13从5级量表压缩为二分类:Q1>=4为"自评内向",Q13>=4为"承认现实交流减少" df_cross = df_likert.copy() df_cross['shy'] = (df_cross['Q1'] >= 4).astype(int) # 1=内向,0=不内向 df_cross['less_real_talk'] = (df_cross['Q13'] >= 4).astype(int) # 1=减少,0=未减少 # 生成2x2列联表 contingency = pd.crosstab(df_cross['shy'], df_cross['less_real_talk']) chi2, p, dof, expected = chi2_contingency(contingency) print("卡方检验结果:") print(f"卡方值={chi2:.3f}, p值={p:.3f}") print("列联表:") print(contingency)

逻辑说明:将李克特量表压缩为二分类是常见简化,但需注明损失信息;chi2_contingency返回p值判断独立性。若p<0.05,支持“内向者更可能因SNS减少现实交流”的假设;若p>0.05,则原文结论缺乏统计依据。此步骤直击报告核心论点,暴露其未做假设检验的局限性。

3.3 信度分析补全:Cronbach's α检验量表内部一致性

原始报告未评估量表信度,但13题李克特量表(Q1-Q13)涉及“SNS依赖”“现实社交替代”等构念,需检验α系数。使用pingouin库:

import pingouin as pg # 选取理论相关题项(如Q3/Q4/Q10/Q11/Q12/Q13测"依赖程度") dependency_items = ['Q3','Q4','Q10','Q11','Q12','Q13'] alpha_result = pg.cronbach_alpha(data=df_likert, items=dependency_items) print(f"Cronbach's α = {alpha_result[0]:.3f}") print(f"95% CI = [{alpha_result[1][0]:.3f}, {alpha_result[1][1]:.3f}]") # 若α=0.72,说明该子量表信度良好(>0.7)

参数说明:cronbach_alpha自动计算条目间相关性;items参数指定待检验题项,需基于理论框架选择(非随意组合)。若α<0.6,表明量表设计存在缺陷,原文结论可靠性存疑。

4. 教学级复用技巧:将静态PDF转化为动态统计教学沙盒

4.1 Jupyter Notebook交互式教学模板设计

将清洗后的数据封装为SNS_2011_Dataset类,内置方法支持一键调用:

class SNS_2011_Dataset: def __init__(self, data_path): self.df = pd.read_csv(data_path) self.likert_cols = [f'Q{i}' for i in range(1,14)] def plot_usage_pie(self, top_n=5): """绘制TOP N社交网站使用占比饼图""" usage = self.df[['use_weibo','use_renren','use_qqspace']].sum() usage.nlargest(top_n).plot.pie(autopct='%1.1f%%') plt.title("大学生常用社交网站占比") def test_dependency_hypothesis(self, item1='Q1', item2='Q13'): """检验两题项关联性(卡方/相关系数)""" if self.df[item1].nunique() <= 5 and self.df[item2].nunique() <= 5: # 分类变量用卡方 contingency = pd.crosstab(self.df[item1], self.df[item2]) chi2, p, _, _ = chi2_contingency(contingency) return f"卡方检验p={p:.3f}" else: # 连续变量用皮尔逊 r, p = pearsonr(self.df[item1], self.df[item2]) return f"相关系数r={r:.3f}, p={p:.3f}" # 教师在Notebook中只需: data = SNS_2011_Dataset("sns_2011_clean.csv") data.plot_usage_pie() # 自动生成图表 print(data.test_dependency_hypothesis('Q1','Q13')) # 一键检验

技巧价值:封装后教师无需重复写数据加载代码,学生可专注统计逻辑;plot_usage_pie自动适配不同TOP-N需求,避免硬编码;test_dependency_hypothesis智能选择检验方法,降低初学者误用风险。

4.2 问卷设计缺陷的批判性教学模块

原始问卷存在三处典型缺陷,可设计为课堂讨论题:

缺陷类型具体表现教学引导问题
多选题编码缺失第3题未说明多选题如何录入(是求和还是最大值?)“若将8个选项编码为1-8,求和后最大值为36,这能否反映‘使用广度’?为什么?”
量表题方向不一致Q8“比起发表日志,我更愿浏览转载”为反向题,但未在分析中反转计分“若直接计算Q8均值,会高估还是低估用户表达意愿?如何修正?”
关键变量缺失未测量每日具体使用时长(仅分段:少于1小时/1-3小时),无法做回归分析“若要建立‘SNS使用时长→现实社交减少’模型,你需要补充哪些变量?”

实操建议:在Jupyter中嵌入ipywidgets滑块,让学生拖动调整Q8计分方向,实时观察均值变化,直观理解反向题处理必要性。

4.3 历史数据对比实验:2011 vs 2023 SNS行为变迁量化

将本报告数据与2023年同类研究(如《Z世代社交媒体使用白皮书》)对比,需统一指标:

  • 使用强度:将2011年“每天花费时间”分段(A-D)映射为中位数:A=0.5h, B=2h, C=4h, D=6h;
  • 平台迁移:2011年TOP3为QQ/人人/微博,2023年TOP3为微信/抖音/小红书,计算平台重合度(0%);
  • 心理依赖:Q11“因不能上SNS而焦躁”2011年6.38%选E(完全符合),若2023年该题比例升至22.3%,则支持“数字依赖加剧”假说。
# 定义2011年时间映射 time_map_2011 = {'A':0.5, 'B':2.0, 'C':4.0, 'D':6.0} df_2011['time_hours'] = df_2011['time_spent'].map(time_map_2011) # 计算2011年焦躁比例 anxiety_2011 = (df_2011['Q11'] == 5).mean() # Q11=5即“完全符合” print(f"2011年SNS焦躁比例: {anxiety_2011:.1%}") # 输出:2011年SNS焦躁比例: 6.4%

关键洞察:单纯比较百分比易失真,必须结合技术语境——2011年SNS需主动打开网页,2023年推送通知即时触达,焦躁感本质是“连接中断焦虑”,而非平台本身。此对比迫使学生思考统计数字背后的媒介技术逻辑。

本文还有配套的精品资源,点击获取

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询