news 2026/10/23 3:07:39

数学建模赛题:大学生学习影响评价中的问卷数据清洗与降维选型

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
数学建模赛题:大学生学习影响评价中的问卷数据清洗与降维选型

简介:数学建模电工杯赛题《人工智能对大学生学习影响的评价》的参赛论文完整收录,文件为DOCX格式,共1个文档,压缩包大小871KB。该论文聚焦AI技术对大学生学习的实际影响,从问卷数据预处理入手,包括缺失值筛查、异常样本剔除、问卷信效度检验以及回答数值化编码;在此基础上构建调查者基本信息、学习情况、对AI态度、AI发展四个一级指标,并论证二级指标选取合理性。建模方面,通过KMO与Bartlett球形检验、主成分分析和t-SNE降维完成指标体系压缩,再借助TOPSIS综合评估影响程度并排序,提取受影响较大人群的公共特征,最终形成包含积极、消极与未来展望的分析报告。全文结构紧凑,涵盖摘要、问题重述、模型假设、符号说明与完整求解过程,既可作为数学建模竞赛的范文参考,也能帮助学习者掌握数据清洗、综合评价等实用方法。目前已有200人学习下载,值得相关方向研究者借鉴。

1. 为什么说这道赛题拼的是数据处理和降维选型?

我拆完这套“数学建模电工杯-人工智能对大学生学习影响的评价”资源后,最直观的感受是:它不像常规预测类建模赛那样以准确率论英雄,而是把大部分分值压在“问卷能不能被清洗成可信数据”和“指标体系该不该降维”这两件事上。很多队伍拿到赛题第一反应是去找AI工具跑分类,但真正拉开差距的是数据清洗、信度效度检验、PCA/t-SNE/TOPSIS这条链路走得稳不稳。这套资源适合准备问卷型建模赛的参赛者,也适合手里有问卷数据却不知道怎么构建综合评价指标的研究者,它解决的是从原始Excel问卷到最终得分排序的完整流程,而不是给你一个黑箱模型。

2. 问卷数值化处理:从残缺数据到可建模编码

问卷型赛题的第一站不是建模,而是把文本选项变成数字。这道题的附件里包含30多道题,很多人的第一反应是把所有题都塞进模型,但这会带来两个问题:一是单选题和多选题混在一起,选项之间还存在逻辑矛盾;二是没有编码就直接计算,后续信度、权重、降维都会失真。这一章我把资源里的数据清洗、编码、信度效度检验拆开讲,每一步都对应一个可以直接跑的脚本。

2.1 数据清洗:先抓逻辑异常,再谈缺失值

原始问卷里最常见的脏数据是缺失值,但比缺失值更隐蔽的是逻辑异常。这份赛题里面有一题问“每周上网时长”,其中一个选项是“不上网”;另一题问“是否使用过学习软件工具”,选项是“是/否”。从数据上看,确实有相当一批样本在第一题选了“不上网”,却在第二题选了“是”,这在真实场景中几乎不可能成立。如果不做处理,这类样本会成为指标体系里的离群点,影响KMO、信度和权重计算。

我复现这份资源时,用pandas把这两列取出来做了交叉筛选。常规的缺失值填充在这里反而会帮倒忙,因为“不上网但使用学习软件”是逻辑矛盾,不是随机缺失。

import pandas as pd # 读入数据后先把列名映射成英文,方便后续处理 # net_time: 每周上网时长 # use_soft: 是否使用学习软件 data = pd.read_csv('questionnaire.csv', encoding='gbk') # 逻辑异常样本:选“不上网”但同时又“使用过学习软件” logic_error = data[(data['net_time'] == '不上网') & (data['use_soft'] == '是')].index print(f"逻辑异常样本数: {len(logic_error)}") # 剔除这些样本,并顺带删除完全空白的行 clean = data.drop(index=logic_error) clean = clean.dropna(how='all') clean.to_csv('questionnaire_clean.csv', index=False, encoding='utf-8-sig')

这段代码的核心不是删除动作,而是先用组合条件圈定“逻辑矛盾样本”,再整行剔除。原论文里给出的异常样本数是101个,我核对后基本吻合。需要注意net_time和use_soft的文本必须和问卷里的选项完全一致,如果导出数据里带了空格或全角标点,要先做清洗统一,否则筛选会漏掉样本。另外,不要用data.isna().any()直接把所有含缺失值的行删掉,很多样本只是个别题空着,删掉会损失有效信息。

2.2 编码方案设计:让选择题变成可计算变量

数据清洗后要做的是数值化编码。问卷里多数题是单选题,直接按选项顺序映射成1、2、3即可,但有几类题要特殊处理:多选题要拆成多个0-1哑变量;程度类选项要保证方向一致,比如“非常赞同”到“非常反对”不能映射成3、2、1、0、-1后又被反向使用;还有“是否使用过学习软件”这类二分变量,按0/1编码即可。

原资源里给了一张编码表,部分内容如下:

题干编码变量选项映射
您的性别gender女=1,男=2
您的专业major文法类=1,理工类=2,经管类=3,艺术教育类=4
您所在的年级grade大二=1,大一=2,大三=3,大四=4
您的性格personality其他=1,安静型=2,温顺型=3,坚定型=4,感性型=5,外向型=6
最常通过哪种方式上网net_mode手机=1,网吧=2,寝室笔记本=3,平板=4,其他=5

这里有一个容易被忽略的坑:年级的编码不是按自然年级顺序从大一到大四,而是问卷原本的选项顺序是“大二、大一、大三、大四”,所以编码结果里大二的数值比大一还小。这个顺序本身不影响PCA和TOPSIS,因为后续会做标准化;但如果你拿这个变量去做回归解释,解读方向就会反。

# 单选题映射 encoding_map = { 'gender': {'女': 1, '男': 2}, 'major': {'文法类': 1, '理工类': 2, '经管类': 3, '艺术教育类': 4}, } # 多选题拆分成0-1变量 # 例如q25“进入大学后困扰您的问题”是多选题 for option in ['学习动力不足', '学习方法不当', '经验缺乏', '其他']: data[f'q25_{option}'] = data['q25_text'].apply( lambda x: 1 if option in str(x) else 0 )

逻辑说明:单选题用字典映射,保证编码可追溯;多选题按选项生成哑变量,这样后续相关性分析和降维都不会把“多选”误当成一个连续变量。参数说明:哑变量命名建议带原题号,比如q25_学习方法不当,否则后面做指标解释时根本找不到对应关系。我在复现时遇到过一个问题:原始数据里多选题选项用中文逗号分隔,直接str(x)匹配会把“学习动力不足”错配成“动力”,所以必须用完整选项文本匹配,或者先做split再匹配。

2.3 信度效度检验:为什么要看Cronbach's Alpha和KMO

编码完成后,不能直接进指标体系,先做信度和效度检验。信度用Cronbach's Alpha,衡量问卷内部一致性;效度用KMO检验和Bartlett球形检验,衡量变量之间是否有足够相关性去做因子类分析。原资源的统计结果:Cronbach's Alpha为0.669,KMO为0.651,Bartlett球形检验p值小于0.05。按一般标准,Alpha在0.6-0.7之间属于“信度一般但可接受”,KMO在0.6-0.7之间属于“适合做因子分析但效果一般”。

我一般会先分维度算Alpha,而不是整个问卷一起算。整体Alpha偏低经常是因为题目维度太多,比如把“基本信息”和“对AI态度”混在一起算,信度自然被稀释。先按四个维度分别算,再报告总量表的值,这样既合理又能让评委看到你在关注问卷结构。KMO的计算公式是变量间简单相关系数平方和与偏相关系数平方和的比值,简单说就是看变量之间的公共信息够不够多。Bartlett检验则判断相关矩阵是不是单位矩阵,如果不是,才说明变量不是互相独立的,可以做降维。

这里额外说一下我对效度检验顺序的执念:正确顺序是清洗、编码、信度效度、指标体系。有人会先做信度效度再做编码,这是错的,因为信度效度处理的是数值化后的选项,不是原始文本。比如“性别”的“男”“女”如果不映射成1和2,KMO计算根本跑不起来。原资源里先做编码再进统计软件,这个顺序不能乱。

注意:信度检验出问题不要急着调数据,先检查有没有反向题没翻转。常见原因是“我支持AI辅助学习”和“我担心AI取代教师”这类题方向相反,不翻转就合并计算会严重拉低Alpha。

3. 指标体系构建与合理性论证:熵权法和相关性分析

问题要求从四个维度构建指标体系,并论证指标选取的合理性。原资源把问卷题目分成“个人基本情况”“调查者学习情况”“对人工智能态度”“人工智能发展”四个一级指标,每个一级指标下有若干二级指标。这一章重点说清楚指标怎么落地,以及怎么用客观方法证明这些指标不是拍脑袋选的。

3.1 四个一级指标和二级指标怎么来的

我先把这套资源构建的指标体系骨架列出来,方便你看清楚层级:

  • 一级指标A:个人基本情况。二级指标:性别、专业、年级、性格、最常上网方式、每周上网时长。
  • 一级指标B:调查者学习情况。二级指标:使用学习软件的时间段、是否分享资料、网络主要活动、进入大学后的主要困扰、对学习软件形式的关注点。
  • 一级指标C:对人工智能态度。二级指标:是否有用AI完成作业的想法、完成小测验的想法、完成论文的想法、是否赞同大学生使用AI工具、最不希望出现的情况、对AI回答可信度的态度、AI与教育结合后学生如何适应。
  • 一级指标D:人工智能发展。二级指标:希望AI学习工具达到的效果、AI能否取代教师、关注哪些安全性、认为哪些方面重要、期望具备的功能、应该融合到哪个学习环节。

这里有一个选指标的原则:先根据研究目标圈定维度,再在每个维度里删除与“学习影响”无关的题。比如问卷里可能有纯人口学的问题,但如果它和AI使用态度没有逻辑关联,就不要进指标体系。原资源把“性别”保留,是因为后续要做公共特征提取,需要判断不同性别受AI影响是否有差异。

指标体系的合理性要从优先级、科学性、可操作性三个角度论证。优先级用熵权法算权重,科学性用相关性分析,可操作性就是保证每个二级指标都能从编码后的问卷数据中直接取到。

3.2 熵权法计算权重:客观权重怎么算

熵权法的思想很直白:一个指标的信息熵越小,说明样本在该指标上的差异越大,携带的信息越多,权重就应该越高。原资源里用熵权法计算了个人基本情况各指标的权重,其中“最常上网方式”权重接近46%,而“专业”权重只有5.6%。这意味着在这个问卷里,上网方式是区分学生受影响程度最有力的变量。

计算步骤如下:设原始数据矩阵为X,有n个样本、m个指标,先按列做归一化得到p_ij,再计算每个指标的熵值e_j,然后用1-e_j得到信息效用值,最后归一化成权重w_j。我复现时写了这么一段:

import numpy as np def entropy_weight(X): # X: n x m 的数值矩阵, 已经编码完成 X = np.array(X, dtype=float).copy() # 平移消除负数影响,保证非负 X = X - X.min(axis=0) # 归一化到 [0,1] 并防止0 p = (X + 1e-12) / (X.sum(axis=0, keepdims=True) + 1e-12) k = 1.0 / np.log(X.shape[0]) e = -k * (p * np.log(p)).sum(axis=0) d = 1 - e w = d / d.sum() return w cols = ['gender', 'major', 'grade', 'personality', 'net_mode', 'net_time'] weights = entropy_weight(data[cols].values) print(weights)

逻辑说明:代码先做平移和归一化,再用熵公式计算熵值,之后用信息效用值归一化得到权重。参数说明:1e-12是防止log(0);如果某个指标是二分变量且分布极不均衡,比如“是否使用过软件”有95%是“是”,熵值会接近1,权重就会很小,这符合熵权法“区分度越高越重要”的逻辑。

需要特别提醒:熵权法对缺失值敏感,所以在计算前要确保数据已经清洗完,不要用np.nan_to_num粗暴填充,否则权重会被虚拟值带偏。

3.3 相关性分析:用皮尔逊系数论证指标重复和独立

指标合理性论证的第二块是相关性分析。原资源用皮尔逊相关系数检验每个一级指标下二级指标之间的关联,目的是说明这些指标不是简单的复制粘贴关系。皮尔逊相关系数公式是样本协方差除以两个样本标准差之积,取值在[-1,1]之间。

以个人基本情况为例,计算结果显示性别与专业、年级之间的相关系数分别为-0.307和-0.316,且在0.01水平显著。这个相关性不算高但也不低,说明理工科男生多、低年级样本多,指标之间的共线性还在可接受范围内。如果两个二级指标相关性超过0.8,就说明它们测的东西重复了,应该删掉一个,否则后续PCA会把重复信息再放大一次。

from scipy.stats import pearsonr cols = ['gender', 'major', 'grade', 'personality', 'net_mode', 'net_time'] corr_matrix = data[cols].corr(method='pearson') # 只看强相关位置 mask = np.abs(corr_matrix) > 0.5 print(corr_matrix[mask])

逻辑说明:这段代码用corr()直接得到相关系数矩阵,mask筛出强相关的位置。参数说明:method='pearson'是默认,如果问卷里有明显的序数变量,也可以改用spearman做稳健性检验。原资源只报告了部分相关性,我建议在论文里至少给一个附录完整相关性矩阵,评委更容易找到你的合理性论证。

在做完相关性分析后,我还会顺手算一下VIF方差膨胀因子来量化共线性。虽然原资源没有提VIF,但在这个场景下VIF是个很好的补充。VIF的计算方式是先让每个二级指标对同组其他指标做回归,取R²,然后VIF=1/(1-R²)。如果某个指标VIF超过10,说明它被其他指标预测得太好,信息重复度高,应该考虑删除或合并。在个人基本情况里,VIF最高的通常是“上网方式”,因为它是多分类哑变量里区分度最高的一个,和“上网时长”有天然的相关性,但两者信息内容不同,可以保留。

有了熵权权重和相关性结果,论文里的合理性论证就不用再说“指标选择符合经验”这种空话,而是用表格展示权重、相关系数、VIF值,评委自然能看出你不是拍脑袋选的指标。

4. 从质量检验到TOPSIS:降维与综合评价的完整链路

这一章是整套资源的技术核心。四个一级指标汇总起来有二十多个二级指标,直接进模型会有共线性问题,所以需要先做质量检验,再决定用什么方法降维,最后用TOPSIS得到综合得分。

4.1 KMO和Bartlett检验:确定哪些指标能走PCA

主成分分析适合在变量相关性较强的场景下使用,所以先做KMO和Bartlett球形检验。原资源对四个一级指标分别做了检验,结果如下:

一级指标KMO值Bartlett p值降维方法
个人基本情况0.6650.000PCA
对人工智能态度0.7650.000PCA
人工智能发展0.7140.000PCA
个人学习情况0.4210.000t-SNE

注意,个人学习情况的KMO只有0.421,低于0.5的常见可接受下限,说明该维度下变量之间相关性太弱,强行用PCA降维会把大量有效信息压缩进低维主成分里,所以原资源在这种场景下改用t-SNE。这是一个很实用的判别逻辑:不是PCA不好,而是数据不满足它的前提。Bartlett球形检验p值小于0.05说明相关矩阵不是单位矩阵,变量间存在整体显著的相关性,可以做因子分析;如果p值大于0.05,说明变量几乎独立,降维就失去意义。个人学习情况虽然p值也小于0.05,但KMO太低,所以不选PCA。

4.2 PCA和t-SNE降维:为什么个人学习情况必须用t-SNE

PCA的流程是先对指标做z-score标准化,再计算协方差矩阵的特征值和特征向量,按累积贡献率提取主成分。原资源里个人基本信息、对AI态度、AI发展三个维度都走了PCA,累积贡献率一般取80%以上。我复现时用sklearn一步到位:

from sklearn.preprocessing import StandardScaler from sklearn.decomposition import PCA scaler = StandardScaler() X_scaled = scaler.fit_transform(data[cols_for_pca]) # 自动选择累积贡献率达到85%的主成分个数 pca = PCA(n_components=0.85, svd_solver='full') X_pca = pca.fit_transform(X_scaled) print(pca.explained_variance_ratio_.cumsum())

逻辑说明:n_components=0.85会自动选择让累积贡献率达到85%的主成分个数。参数说明:svd_solver='full'可以避免大数据量下的内存问题;如果样本量小,实际跑出来的解释率会很波动,建议固定主成分个数为2或3,方便后续的可视化和TOPSIS计算。

PCA降维出来的每个主成分是原始指标的线性组合,它的系数可正可负,所以在解释主成分含义时不能只按系数绝对值大小来理解。比如“对人工智能态度”维度里,“是否赞同大学生使用AI工具”有正载荷,“是否担心AI回答不可信”有负载荷,第一主成分代表的是“整体接受度”。在论文里一定要给每个主成分写一个明确名字,否则TOPSIS得分排行出来读者不知道在排什么。

t-SNE是另一套逻辑,它把高维点映射到低维时强调保留局部结构,适合变量相关性弱但样本存在类别结构的场景。原资源对个人学习情况维度用t-SNE降成2维。需要注意t-SNE的随机性很强,必须固定随机种子。

from sklearn.manifold import TSNE # perplexity一般取5到50,样本量小取小值 tsne = TSNE(n_components=2, perplexity=30, learning_rate=200, random_state=42) X_tsne = tsne.fit_transform(scaler.fit_transform(data[cols_for_tsne]))

参数说明:perplexity控制每个点周围近邻的有效数量,太小会忽略局部结构,太大会忽略全局结构;learning_rate通常200到1000,太小会陷入局部最优,太大会震荡。random_state=42保证可复现,如果不固定,每次跑出来的二维坐标不一样,后续TOPSIS得分也会跟着变,这在建模竞赛里是硬伤。

4.3 TOPSIS综合评价:把降维结果汇总成得分排序

三个PCA降维结果加一个t-SNE降维结果,现在每个样本在四个维度上各有一个低维向量,但它们的量纲和距离意义不同,直接拼起来不行,所以用TOPSIS做综合评价。TOPSIS的基本思想是构造理想解(每个指标的最优值)和负理想解(最劣值),然后计算每个样本到两者的距离,用相对贴近度排序。

def topsis(X, weights, cost_cols=[]): # X: 样本-指标矩阵, weights: 各指标权重, cost_cols: 成本型指标列 X = np.array(X, dtype=float).copy() # 正向化:成本型指标用最大值减去原值 for i in range(X.shape[1]): if i in cost_cols: X[:, i] = X[:, i].max() - X[:, i] # 向量归一化 norm = np.sqrt((X**2).sum(axis=0)) Z = X / norm # 加权 Z = Z * weights z_plus = Z.max(axis=0) z_minus = Z.min(axis=0) d_plus = np.sqrt(((Z - z_plus)**2).sum(axis=1)) d_minus = np.sqrt(((Z - z_minus)**2).sum(axis=1)) c = d_minus / (d_plus + d_minus) return c score = topsis(X_all, weights)

逻辑说明:TOPSIS里最重要的两步是正向化和归一化。如果不做正向化,成本型指标的最优解方向搞反,得分排序会完全颠倒。参数说明:weights这里我习惯用各一级指标内部二级指标熵权法权重的平均值,也可以在四个一级指标之间再做一次熵权法,原资源里没有明确说明,但竞赛中最好在论文里写清楚权重来源。

在汇总四个维度的降维结果时,维度之间的权重分配是个容易引起评委追问的地方。我的做法是先对四个一级指标内的二级指标用熵权法得到二级权重,再把同一个一级指标下的二级权重求和,得到该一级指标对总分的权重,最后把这个权重乘到降维后的特征上,再进TOPSIS。这样做的好处是权重来源全部是客观数据,不需要人为设定四个维度各占多少,解释起来干净。

另一个细节是PCA和t-SNE降维后的列数不一致:三个PCA维度可能各保留2到3个主成分,t-SNE只有2列,加在一起数字不一样。TOPSIS不看列名,只看数值矩阵,所以拼接时只要保证每行样本对齐即可。我会在拼接前用reset_index(drop=True)统一索引,不然会有隐式对齐导致的行错位,这个坑在pandas里很常见。

TOPSIS得到相对贴近度C值后,按C值从高到低排序,C值越高说明该样本受人工智能学习影响的综合程度越大。后续就能把排名前10%的样本找出来做公共特征提取。

5. 避坑记录:这份赛题最容易被坑的五个地方

问卷型建模赛翻车通常不是死在模型复杂,而是死在数据处理和对方法的误用。这一章我整理了五个在这套资源复现过程中真实踩过的坑,每条都是现象、原因、解决对照着说。

5.1 现象:信度检验Alpha只有0.4,论文写不下去

原因:我一开始把整卷30道题一起算Cronbach's Alpha,结果Alpha只有0.4,怎么看都不合格。后来发现问卷里有反向题,比如“您是否赞同AI辅助完成作业”和“您是否担心AI学习工具出现错误”,前者正向,后者反向,不翻转就合并算信度,内部一致性当然会崩。

解决:先识别反向题,统一翻转成同一方向。翻转公式是score = max_scale + min_scale - score,也就是5点量表用6 - 原值。翻转后再分维度算Alpha,整卷Alpha从0.4提到了0.66。从那以后我每次拿到问卷数据,第一件事就是找反向题。

5.2 现象:KMO只有0.421,还硬用PCA降维

原因:个人学习情况这个维度里的问题比较杂,比如“用什么时间段学习软件”“是否分享资料”“关注学习软件哪方面”,它们之间本来就不存在强线性关系,KMO检验已经告诉你数据不适合PCA,但我当时带着“PCA是很普遍的降维工具”的惯性思维直接跑了。

解决:先把KMO跑出来,小于0.5就果断换t-SNE。t-SNE不需要线性相关前提,对“相关性弱但存在局部结构”的数据有更好的保留效果。换完之后,后续TOPSIS排序的合理性明显提升。

5.3 现象:TOPSIS得分排序和肉眼观察结果完全相反

原因:TOPSIS里的指标没有做正向化。例如“您是否担心AI工具不可信”是个成本型指标,值越大说明越担心,对学习影响可能是负向的,但我的归一化函数把所有指标都按越大越优处理了,导致最担心的人反而得分最高。

解决:给cost_cols参数传入成本型指标的列索引,在TOPSIS循环里对这些列用最大值减原值做正向化。也可以在数据预处理阶段就统一正向化,比如“最不希望出现的情况”这类选项,编码后先取反再进模型。

5.4 现象:t-SNE每次跑出来结果都不一样,排名来回变

原因:t-SNE使用随机初始化,每次迭代起点不一样,导致的低维坐标也不一样,最终反映到TOPSIS得分上就是C值小幅波动。

解决:固定random_state=42。如果真想看稳定性,可以跑10次取平均C值,但竞赛论文里最好直接给“固定随机种子可复现”的说明,不要给评委留下“结果不可靠”的理由。

5.5 现象:异常值剔除把有效样本也删了

原因:我在清洗时条件写成data[data['net_time'] == '不上网'],想只删掉“不上网”的人,结果把正常不上网且不用学习软件的人也删了,有效样本损失严重。

解决:异常值剔除必须先明确“哪里矛盾”,再写组合条件(net_time == '不上网') & (use_soft == '是'),也就是“不上网但使用学习软件”这个交集。删除之前先打印样本数,确认删除量级是合理的,比如原资源中的101个,再落盘。

提示:异常值和缺失值处理顺序不要搞反。先做缺失值填充可能掩盖逻辑矛盾,比如你用众数把“不上网”填成“7小时以下”,逻辑异常就不存在了,但这是伪造数据。

6. 进阶技巧:用TOPSIS得分Top群体做公共特征提取

很多参赛队做到TOPSIS排序就停了,但原资源里还藏了一步很有价值的动作:对排名靠前的人群做公共特征提取。这一步做得好,能把综合评价结果转化成“哪些学生受AI影响最大”的具体描述,直接服务问题四的分析报告。

我一般会把C值排名前10%的样本定义成“高影响组”,排名后10%定义成“低影响组”,然后对比这两组在原始问卷上的分布差异。不用跑复杂模型,就用交叉统计和均值对比就能找到几个鲜明特征。比如在原数据里,高影响组的学生更集中在理工科,每周上网时长普遍超过20小时,而且对“用AI工具完成论文”的支持率远高于低影响组。这些特征就是从TOPSIS分数排名反推出来的,比你直接看图说话更有说服力。

# top_score: 前面topsis计算的C值 data['score'] = top_score top_group = data[data['score'] >= data['score'].quantile(0.9)] low_group = data[data['score'] <= data['score'].quantile(0.1)] # 对比离散特征的均值 for col in ['gender', 'major', 'net_time']: print(col, top_group[col].mean(), low_group[col].mean()) # 对比多选题选项的占比 for col in ['q23_学习资料', 'q25_学习方法不当']: print(col, top_group[col].mean(), low_group[col].mean())

这里有一个容易忽略的细节:提取公共特征时不要只盯着数值差异,还要看差异方向是否和你的评价模型逻辑一致。比如高影响组里“认为AI可取代教师”的比例更高,但这道题编码方向可能是“很不同意=1,很同意=5”,均值更高说明高影响组更认同替代,这并不代表负面影响更大,需要结合题目语义来解释。我在这上面翻过一次车,后来形成习惯:每次做这种对比都会先看一遍原问卷的选项顺序,确认编码方向没有反。

另一个进阶做法是给四个一级指标分别做TOPSIS子得分,而不是只做一个总得分。这样你能看到一个人是因为“态度积极”排到前面,还是因为“上网方式特殊”排到前面,对分析报告里的“积极、消极、未来”三个部分都有更细的素材。原资源的主模型只给了一个总得分,没有拆分,我建议在附录里补一张子得分热力图。

我整理这套资源时,把清洗、编码、降维、TOPSIS四段脚本单独抽成了文件,这样下次换一份问卷也能改改列名直接复用。从那以后我每次做问卷建模,都强制先走一遍“逻辑异常、反向题翻转、KMO决定降维方法、固定t-SNE种子”四步预处理,再开始建模,基本没再因为数据问题返工。希望帮到你。

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

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/23 3:07:39

自动驾驶仿真平台建设:从数据管理到流程自动化与CAE追溯体系

简介&#xff1a;面向自动驾驶、主动安全与人工智能研发人员&#xff0c;系统讲解西门子仿真平台与体系建设思路&#xff1a;从虚拟场景构建&#xff0c;到协同设计仿真平台&#xff0c;再到物料清单转换、流程自动化、多学科协同和任务闭环管理&#xff0c;覆盖整车开发验证周…

作者头像 李华
网站建设 2026/10/23 3:07:07

C#图像拼接源码实战:SIFT特征匹配与RANSAC单应性估计

简介&#xff1a;这份图像拼接源码资源面向计算机视觉与图像处理方向的开发者&#xff0c;尤其是希望用C#实现全景图或宽视角图像融合的初学者与进阶者。项目在Visual Studio 2013环境下编译运行&#xff0c;围绕特征检测与匹配、Homography透视变换、图像融合及GUI界面设计等核…

作者头像 李华
网站建设 2026/10/23 3:07:04

信息系统项目管理师考试核心考点与易混概念全解析

简介&#xff1a;本资源为信息系统项目管理师&#xff08;软考高级&#xff09;32小时通关备考PDF&#xff0c;面向计划参加全国计算机技术与软件专业技术资格&#xff08;水平&#xff09;考试的考生&#xff0c;尤其适合需要短期系统梳理考点、快速建立知识框架的应试者。内容…

作者头像 李华
网站建设 2026/10/23 3:06:44

PHP砍价功能实战:数据模型、随机算法与并发防刷设计

简介&#xff1a;一个完整的PHP砍价功能实例&#xff0c;面向电商开发初学者与PHP进阶者&#xff0c;演示从用户发起砍价、邀请好友帮忙砍价、砍价次数限制到最低价自动成交的完整业务闭环。压缩包共3个文件&#xff0c;包含2个PHP脚本和1个数据库说明文档&#xff0c;核心kanj…

作者头像 李华
网站建设 2026/10/23 3:06:40

内网Ubuntu APT源搭建:apt-mirror同步与Nginx发布实践

简介&#xff1a;面向企业级Linux运维及IT管理人员的APT内网源搭建指南&#xff0c;聚焦Ubuntu Server 24.04.1环境&#xff0c;旨在解决封闭网络下软件更新慢、过度依赖公网源的问题。该文档为单个PDF文件&#xff0c;仅894KB&#xff0c;篇幅紧凑且覆盖完整流程&#xff0c;已…

作者头像 李华
网站建设 2026/10/23 3:06:38

AI代理技能工程:从函数封装到生产级可执行单元

简介&#xff1a;本资源是O’Reilly Media出版的早期预发布电子书《Building Applications with AI Agents》&#xff0c;作者Michael Albada&#xff0c;面向AI工程实践者、系统架构师及对多智能体系统开发感兴趣的中高级开发者。资源聚焦AI Agent的设计原理与工程落地&#x…

作者头像 李华