统计背景 自查
计划行为(TPB)理论,是针对人行为的一种研究理论,包括行为态度、
主观规范、感知行为控制和行为意向等变量内容,主要解释人类决策过程中的
社会心理。[11]在 TPB 理论的基础上,Davis 又吸收了期望理论、自我效能理论
等思想,使“感知有用”“感知易用”替代了 TPB 理论的“主观规范”,形成
了技术接受模型,即 TAM 模型[12]。结合 TAM+TPB 理论的综合模型结构清
晰、操作性强,养发产品的购买也会受到消费者心理的影响,因此本研究在分
析大学生群体养发产品消费意愿的影响因素时将基于 TAM+TPB 理论展开。
。本研究综合利用问卷调查、DGI 调查、实地调查、专家访谈等调查方法,
3. 定性分析法 归纳分析 同时采用比较分析和因果分析
4.定量分析法
描述性统计 Logistics回归、CRITIC权重法、SEM+QCA分析模型、
RF-GA模型等方法
5.系统分析法
二、基于PYTHON网络数据爬取与文本挖掘分析
1.数据爬取与清洗
中国知网上以“大学生脱发”为关键词进行搜索,为了避免产生冗余,我们选择论文摘要及正文,通过 Python 中 Jieba 分词精确模式获取论文中有关脱发的词语进行词频统计
2.结果分析
结合词云图
三、基于 PYTHON 的养发产品的电商平台评论数据的爬取与分析
针对评论数据采集,主要运用 Python 爬虫技术与基于 Requests 库的浏览器
模拟访问数据采集技术将相关商品的 URL 保存,并利用代理服务和 cookie 通
过爬虫进入相应页面获取评论内容。爬取过程及爬取的数据结构图如下:
在数据挖掘中,存在着大量不完整、不一致等异常数据影响数据分析的结
果,因此需要对原始数据清洗。为避免错删,采用人工文本比较法,按照以下
规则尽量保留更多有效数据,主要规则是清除无效评论和可疑刷单评论:
1)评论内容为数字、字母等无效语言的予以删除;
2)评论内容为“此用户没有进行评论!”的予以删除;
3)评论内容大量重复出现的,视为可疑刷单评论予以删除。
经过预处理后,得到有效数据 14555 条,无效数据大部分属于重复评论与
系统默认评论。
Jieba 库是 Python 中的优秀的中文分词第三方库,基于前缀词典可实现高
效词图扫描,生成句子中汉字所有可能成词情况所构成的有向无环图(DAG),
采用动态规划查找最大概率路径, 找出基于词频的最大切分组合。因评论内容
大多数为长句不便于进行数据分析,因此选择通过 Python 中的 Jieba 库进行分
词处理,
2. 结果分析
(1)基于评论内容的消费心理倾向分析
(2)基于情感词典的情感性倾向分析
文本情感倾向性分析是指识别和提取原素材中的主观信息,并对带有感情
色彩的文本进行分析处理和归纳推理的过程。BosonNLP 情感词典可以对每个
情感词进行情感值评分,通过对文本进行分句分词,对应 BosonNLP 词典进行
逐个匹配,并记录匹配到的情感词分值,最后统计汇总。若总分值大于 0,表
示情感倾向为积极;反之则表示情感倾向为消极[17]。
问卷结构及指标体系设计
结合调查目的,遵循以上问卷设计原则,我们设计的问卷主要包括四个部
分,分别是受访者基本信息、脱发现状调查、养发消费行为调查以及养发产品
购买意愿调查。
在大学生养发产品购买意愿部分,我们根据 TAM+TPB 模型对该部分调查
问卷内容进行了维度上的划分,包括感知有用、感知易用、人际影响、社会影
响、自我效能、资源促进七部分,参照该理论成熟的研究量表结合本调查的实
际情况进行题项设计,具体的量表维度与对应的问题如下表所示:
(1)问卷的信度和效度检验
1)信度检验
信度又称可靠性,是指测量数据和结论的可靠性程度。对预调查问卷中大
学生脱发原因模块量表题项进行 Cronbach α 系数检验,
量表的信度系数应在 0.8 以上;如果信度系数在 0.9 以上,说明该量表的信
度很好;在 0.7-0.9 之间良好;如果 Cronbach α 系数在 0.6 以下就要考虑重新编
问卷。可以发现,该模块无法通过信度检验,需重新设置框架与题项。
2)效度检验
KMO 值和 Bartlett 球形检
验,
KMO>0.7:适合做因子分析;KMO>0.9,说明非常适合做因子分析;
KMO<0.5,说明不适合做因子分析
四、质量控制与数据检验
(一)总体质量控制
(二)正式调查数据检验
1.游程检验
游程检验亦称“连贯检验”,是根据样本标志表现排列所形成的游程的多
少进行判断的检验方法[18]。根据游程检验的原则,如果序列为真随机序列,那
么游程的总数应该处于合理量,反之说明样本缺乏独立性,导致数据短周期波
动影响观察结果。以问卷 Q2,Q5 分别对样本所在专业与是否存在脱发随机性
进行检验,存在脱发用 0 表示,反之用 1 表示,
2.信度检验
3. 效度检验
(1)内容效度检验
内容效度反映问卷中的题项用来测量变量指标是否合适和具有代表性:本
问卷的维度建立和问项设计均由成熟研究成果得来,为此能够将内容效度维持
在较好水平。
同时我们将影响被调查者购买意愿设计问卷中对应题项以用 Q21.i 表示,
分别计算感知易用,感知有用,习惯强度,人际影响,外部社会影响,自我效
能,资源促进七大维度的量表数据总和 Ti,引入 spearman 系数计算对应相关性
如下
(2) 结构效度检验
1)考察原有变量是否适合因子分析
结构效度问卷所设变量共同元素与相关性,一般采用 KMO 测度和 Bartlett
球度检验。对于 KMO 测度计算公式:
2)提取因子
采用主成分分析法提取因子,选取特征根大于 1 的因子
由表可知,前五个因子特征值均大于 1,且累计方差解释率达到 80.068%,
说明其包含足够多信息;由于初始因子模型不便于因子解释,运用凯撒正态化最
大方差法对因子轴旋转,得出公共因子线性组合表达标准化指标,使矩阵各列元
素两极分化,旋转后成分矩阵如下:
当题项因子载荷小于 0.5 时,测量题项对该主成分相对重要性较低,予以
删除。如表所示,删除题项后每个测量因子载荷值大于 0.5 的项目在五个主成
分中只出现了一次。因此,可将五个主成分作为本报告中 TAM+TPB 理论框架
优化后指标,分别为感知有用、感知易用、人际影响、社会影响、自我效能五
个维度,题项选取与维度解释如下图所示
五、描述性统计
(一)样本基本信息描述性统计
六、基于无序多分类 Logistics 回归分析的大学生脱发成因分析
(一)无序多分类 logistics 模型建立
我们将样本的脱发类型分为不脱发、生理性脱发和病理性脱发三类,考虑
到脱发类型的影响指标均为多分类指标,故本章在探究人口学特征各指标对大
学生脱发的影响过程中,采用无序多分类 Logistics 模型进行分析。
1. 原理介绍
在无序多分类 Logistic 模型中,我们假设有 p 个解释变量的 n 个观测值,
对应有 k 个分类的响应变量。在响应变量的 k 个分类中选定其中一类作为对照
组,由于各个分类是平等的,每个分类都可以作为对照组。将对照组与剩余的
k -1 个分类分别构建回归方程。设响应变量第 i 个分类的 Logistic 回归模型为:
式中, 为所选自变量, 为因变量取值于第 个类别的概率, 为回归系
数; 为样本的观测值。
2. 数据选取与处理
在分析环节,我们将调查对象的人口学特征共 8 个指标作为自变量 ,以
脱发类型作为因变量 ,所有指标皆编码为定类变量
3. 模型建立
转化出二值广义 logit
4. 模型结果与分析
5. 模型检验
进行模型拟合优度似然比检验可知: 伪R方值为 0.371(>0.2),拟合 p 值
无限趋近于 0,说明 Logistics 模型具有较好拟合优度,能够用于大学生脱发类
型的分析与解释;所有变量对应 p 值皆小于 0.1,满足 10%显著性,因此认为模
型中的所有解释变量都与响应变量显著相关。
(二)模型结果分析与建议
2. 由前述分析可得,病理性脱发广义 logit 模型如下:
七、基于 CRITIC 权重法的大学生养发产品评价调查
(一)模型准备
1. 模型框架
参考 Python 对天猫有关养发商品评论的结果,本章我们将从产品角度
出发,使用 CRITIC 法对大学生养发产品评价的防脱、修护、固黑、生
发、去屑、控油、蓬松 7 个功效指标进行分析,为相关企业生产和商家售
卖提供更为有利、可靠的依据。
2. 数据选取
在本章指标赋值源于对选用题项对应统一量表数据进行算术平均。指
标对应指标选取题项如下表所示:
(二)基于 CRITIC 法的模型求解
(1)CRITIC 法原理
标准间冲突性相关性法 (Criteria Importance Through Intercriteria
Correlation,CRTIC)是一种客观权重赋权法,考虑指标变异大小以及各指标之间
的冲突性对权重的影响[19]。该方法以标准差表示评价指标之间取值差距的大
小,以指标相关性表示评价各指标的冲突性以确定指标客观权重[20]
1) 无量纲化处理与指标变异性
为消除因量纲不同对评价结果的影响,需要指标正向化处理:
2) 指标冲突性
用相关系数进行表示指标冲突性,计算公式如下所示:
3) 信息量
4) 客观权重
八、基于 SEM+QCA 组态分析模型的养发产品消费意愿分析
九、基于 RF-GA 模型分类下潜在用户挖掘:
1. 算法思想:
对于机器监督学习下的分类问题,随机森林(Random Forest,RF)从原始
训练样本集 N 中有放回地重复随机抽取 k 个样本(k 一般和 N 相同)生成新的训
练样本集,以多棵决策树基础下集成分类器为核心,根据自助样本集投票生成
n 个分类树组成的随机森林。其依靠袋装法(Bagging)实现自主取样,并在此
基础上引进随机属性选择(Random Subspace),依靠集成策略对过拟合规避;
基于自然群体遗传演化机制[24],遗传算法(Genetic Algorithm,GA)作为
进化计算方法可模拟尔文生物进化论的自然选择和遗传学机理的生物进化:将
问题域中的可能解看做染色体,在交叉(crossover)和突变(mutation)过程
中,根据目标适应度函数对每个个体评价,依据适者生存优胜劣汰的进化规
则,使好的染色体迭代产生更优群体,从而寻找最优解
在投票过程中,需要依靠大量决策树组合保证其收敛性。RF 参数较多,其
选取直接影响算法精度。因此引入遗传算法,利用其良好全局搜索能力和灵活性对可行解进行编码,通过适应度来选择判断基因优劣,采用概率化方法自动获取和指导优化的搜索空间,寻找较好参数集,提高预测的精度。
2. 模型原理
分类特征贡献率基于基尼指数(Gini),即判断每个特征在随机森林中的
每棵树上做了多大的贡献,取平均值比较特征之间的贡献大小。对基尼指数,
可计算得:
(二)模型建立
1. 指标选取
(1)因变量:用户类型确定
(2)自变量:影响购买行为因素综合考量
参照描述性统计对样本情况基本介绍并考虑前文模型
(三)模型求解——特征分析
在收集的 868 份数据中,对模型训练集与测试集采用对半数据切分,以
Gini 作为节点分裂评价准则,将表现最优模型作为训练好的模型运用于测试、
训练数据中。同时因 RF 具有一定随机性,采用 7 折交叉验证法计算适应度。
设定 RF 基本训练参数后可得,初始模型预测正确率为 86.8%。
选用启发式遗传算法寻优时,设置初始种群个数为 20 个,最大迭代次数为
150 次,规定染色体 10%变异概率与 50%超参数组合交叉概率,从而兼顾模型
收敛与降低偏离全局最优解,其余参数采用默认值。优化流程如下所示:
(四)模型检验
对模型进行评估,列设测试集混淆矩阵
(五)模型推广——用户挖掘
附录
附录 1:养发商品评论爬取代码
import time
import requests
import re
import pandas as pd
df = pd.DataFrame()
comments = []
for n in range(1, 100):
url=f"https://rate.tmall.com/list_detail_rate.htm?itemId=578457969092&spuId=9664
54964&sellerId=4178326724&order=3¤tPage={n}&append=0&content=1&ta
gId=&posi=&picture=&groupId=&ua=098%23E1hvJpvWvRyvUvCkvvvvvjiWR2qp
gjiEPFLw6jrCPmPWljDnRsz90jDCP2cWljtbRvhvCvvvvvm%2BvpvEvvpl9OkUvU
FW39hvCvvhvvmevpvhvvmv99gCvvpvvPMMvvhvC9vhvvCvpU9CvvOUvvVvJZTI
vpvUvvmvPAKSkE7gvpvIvvvvvhCvvvvvvUvNphvUqQvvvQCvpvACvvv2vhCv2vy
vvvWvphvWmp9CvhQhvIGvCluQD7zWdigDN%2B3l%2BE7rjC69D7z9aX7AVA3l
%2BExrV4tYmq0DyOvOHkx%2Fsjc6D40OameQiNoxdXyaUr2p6WpaejEmznAQ0f
J6RvhvCvvvvvmvvpvZzPAScrMNznswOnEft%2F2Gynsb7e9%3D&needFold=0&_k
sTS=1642481338335_468&callback=jsonp469"
headers={
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36
(KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36 Edg/97.0.1072.62',
'cookie': 'cna=ugsTGG+cFm8CASoxbRwPH2oY; lid=tb674441375;
enc=r5KDx4tmeMUN5z6lwh%2FHwSEFvHDG9EthFimplaaBRPObV6EW9vAEYw
awzyMvVc4uPUnLYSantcUqnikH%2BMgjYA%3D%3D; xlly_s=1;
sgcookie=E100nCZFxtu0hlC0f0Lm2WLdjB6L6EDbMwI0q1OlNXq810oelOohntbw
PSrXg8tExLmAk%2FpwCVGb%2BxOpfcly7xfoh9XYaxbuzKR%2FtWbLCZj6G%2
BiE1MNton50XDtRinH%2FKx%2Bt; uc1=cookie14=UoewAjpcr7CxmQ%3D%3D;
t=eabb0f1e93c2618299ac3e0f721cc73a;
uc3=nk2=F5RDK1cgHPoTNrI%3D&id2=UNk3D4%2BUUAoQ6w%3D%3D&vt3=
F8dCvU19PUl8UXxpKDc%3D&lg2=W5iHLLyFOGW7aA%3D%3D;
tracknick=tb674441375;
uc4=id4=0%40Ug49tdAd%2FeOpwDl2AVOK9IlhBWRR&nk4=0%40FY4I6FQYUf
FEVP8Lb%2B8uc4Lmme5YHA%3D%3D; lgc=tb674441375;
_tb_token_=533b418583e56; cookie2=17013e5ca2158c972ecc80e0e97daf7e;
tfstk=c7r1ByDZRCA_wC72bR6e35kmRKoPZN5IKNGTCrfitWx9UWw1ietrN1Wuo
BmqHv1..;
l=eBSZauJrg5b5Fmv3BOfZourza779YIRfguPzaNbMiOCP_zfM739cW6KPD4YHC
nGVns6vR3rQ1ZCLBc83tyzHlZXRFJXn9MptEdLh.;
isg=BDY2WgNaS2e6sT8AVHfioSG_h2w4V3qR3L8xnqAfcZmv49d9COafoDXV-7-
Py3Kp',
'referer':
'https://detail.tmall.com/item.htm?spm=a230r.1.14.1.752441a2rGHlJE&id=57845796
9092&ns=1&abbucket=3',
'accept-encoding': 'gzip, deflate, br',
'accept-language': 'zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6'
}
resp = requests.get(url, headers=headers)
#数据请求
comment = re.compile('"rateContent":"(.*?)","fromMall"') #
数据解析
comments.extend(comment.findall(resp.text))
#print(result)
time.sleep(3)
#数据保存
df['评论']= comments
#print(df)
df.to_csv('商品评论.csv')
附录 2:情感值计算代码
import pandas as pd
import jieba
#基于波森情感词典计算情感值
def getscore(text):
df = pd.read_table(r"BosonNLP_sentiment_score.txt", sep=" ",
names=['key', 'score'])
key = df['key'].values.tolist()
score = df['score'].values.tolist()
# jieba 分词
segs = jieba.lcut(text,cut_all = False) #返回 list
# 计算得分
score_list = [score[key.index(x)] for x in segs if(x in key)]
return sum(score_list)
#读取文件
def read_txt(filename):
with open(filename,'r',encoding='utf-8')as f:
txt = f.read()
return txt
#写入文件
def write_data(filename,data):
with open(filename,'a',encoding='utf-8')as f:
f.write(data)
if __name__=='__main__':
text = read_txt('评论.txt')
lists= text.split('\n')
i = 0
for list in lists:
if list != '':
# print(list)
sentiments = round(getscore(list),2)
sentiment = '情感值:'+str(sentiments)+'\n'
#文件写入
filename = '护发素情感分析结果.txt'
write_data(filename,sentiment) #写入情感值
i = i+1
附录 3:jieba 分词代码
from collections import Counter
import jieba
import pandas as pd
comments_list = []
with open("词云图数据.txt", 'r', encoding="UTF-8") as f:
#读取数据
comments_list = f.read()
f.close()
#对所有评论进行分词
result = jieba.cut(comments_list, cut_all=False)
result =
[
#数据清洗
word
for word in result
if len(word) > 1
]
with open('stopwords.txt', 'r',encoding='utf-8')as f:
#筛选停用词
stopwords = f.read()
f.close()
result = [
word
for word in result
if word not in stopwords
]
#print(result)
counter = Counter(result)
#构造 Pandas 并且排序
df = pd.DataFrame(list(counter.items()),columns=['word','count'])
df.sort_values(by='count', ascending=False, inplace=True)
#ascending=False 降序排列 inpalce= True 改变数据本身
df.to_excel("词云图词频分析结果.xlsx", index=False)
附录 4:Python 抽样代码
import random #第一层随机抽样
print(random.sample(range(1, 125594), 2))
#第二层随机抽样
print(random.sample(range(1, 465377), 4))
版权声明:
作者:夜阑
链接:http://yelan.xyz/index.php/2024/03/12/%e7%bb%9f%e8%ae%a1%e8%83%8c%e6%99%af-%e8%87%aa%e6%9f%a5/
来源:夜阑的小站
文章版权归作者所有,未经允许请勿转载。
共有 0 条评论