使用深度搜索分析心理调查问卷的研究

原创 2016年05月07日 22:33:01

使用深度搜索分析心理调查问卷的研究

背景

昨天我女朋友发了一个心理调查问卷要我做。我向来对这种形似心理调查问卷嗤之以鼻: 一个人的性格怎么可能由几个简单的问题决定。但作为技术人员,我决定用技术的手段分析这份调查问卷,向女朋友证明其缺乏科学性。

调查问卷的原版如下图
这里写图片描述

有兴趣的朋友可以玩玩~

我想了解如下几个问题:
1. 问卷是不是有环路?如果有环路,则可证明这份问卷不正规。
2. A 答案是不是不可能达到?因为4个答案中,只有A答案没有同的倾向。
3. 如果 A 答案能到达,那么有多少种可能?占比是多少?

分析

这种问卷调查有特点:每一个题目都对应多个选项;每一个选项,都对应一个题目或者答案。从一个人答题的路径来看,其实这就是一个典型的图结构。

结合我想了解的问题,有如下几个方面需要考虑:
1. 证明图没有环路
2. 使用DFS证明A是可以达到的
3. 统计所有的可能的结果,算出A的占比

建模

我打算使用 列表模式 构建图

  @list = [
    [1],
    [2,3],
    [3,4],
    [4,5,6],
    [5,6,7],
    [6,7],
    [7,8,9],
    [8,9],
    [9,10,11],
    [10,11,12],
    [12,13],
    [13,14],
    [13,15],
    [15,18,14],
    [15,18],
    [16,18],
    [17,18,19,20],
    [20,21,'B'],
    [19,'C'],
    [22,'A'],
    [21, 'D'],
    [22, 'B'],
    ['A', 'C', 'D']
  ]

图的节点有 0 到 22, 再加上 A, B, C, D。
1. 因为我不想处理下标,所以图的起始位置,我设置成0;
2. 图的节点,我简单的用数组的下标表示;
3. 答案直接输出,不需要放在节点的集合中;

DFS

图有没有环路

代码如下:

def has_cycle?
  recursion_stack = [false] * 23

  check_cycle(0, recursion_stack)
end

def check_cycle(vertex, recursion_stack)
  recursion_stack[vertex] = true

  @list[vertex].each do |node|
    next if over?(node)

    return true if recursion_stack[node]
    check_cycle(node, recursion_stack)
  end

  recursion_stack[vertex] = false

  return false
end

其中 over?方法是用来判断递归是否结束。

def over?(point)
  ['A', 'B', 'C', 'D'].include?(point.to_s)
end
  1. has_cycle 来判断是否有回路,我将一次完全迭代的节点是否访问到了的信息保存在recursion_stack
  2. 它调用 深度搜索 算法实现的 check_cycle

运行得出的结果是 false

A 可以到达吗?A如果可以到达,那么A的可能性有多大?

@result = []

def dfs(node)
  @list[node].each do |vertex|
    if over?(vertex)
      @result << vertex
      next
    end

    dfs(vertex)
  end
end

使用深度有限搜索, 将最后的结果保存在 @result中,将结果打印出来。

def count_charactor(result, charactor)
  result.count { |item| item == charactor }
end

dfs(0)

puts "一共有 %d 可能的答案" % @result.size
('A'..'D').to_a.each do |charactor|
  puts "#{charactor}: %d 种可能, 占比为 %f" % [ count_charactor(@result, charactor), count_charactor(@result, charactor).to_f / @result.length]
end

结果如下:

一共有 27860 可能的答案
A: 8960 种可能, 占比为 0.321608
B: 3360 种可能, 占比为 0.120603
C: 8120 种可能, 占比为 0.291457
D: 7420 种可能, 占比为 0.266332

输出能到答案A的100路径

@i = 0

def dfs(node, stack)
  stack.push node

  @list[node].each do |vertex|
    if over?(vertex)
      @result << vertex

      if vertex == 'A'
        @i += 1
        puts "到A的路径有:"
        puts stack.join(" -> ")
      end

      break if @i == 100

      next
    end

    dfs(vertex, stack)
  end

  stack.pop
end

用一个栈stack来保存路径, 到A点将所有的结果输出

总结

图的算法应用真的很广泛,值得深入研究。有时候将实时中的问题抽象成图的问题,能让我们从另外的一个角度看问题。再则,用ruby实现图的算法也是很简单的。dfsbfs简单,但收到程序栈的限制。但比较适合本程序。

数据分析——问卷调查从模型到算法

也就是说,当x=1/e的时候,在我们的男主试探(认识了N*个女主)有最大的概率即约为37%的概率遇到我们的真命女主——那个我们男主最想要的的女主。从理论模型我们回到现实,也即是说当我们的男主在时间序列...
  • nju_mc
  • nju_mc
  • 2017年03月19日 18:35
  • 730

SPSS 顾客购买习惯调查问卷案例分析

SPSS 顾客购买习惯调查问卷案例分析
  • u013827322
  • u013827322
  • 2014年03月10日 21:07
  • 2593

深入浅出数据分析(一)——MySQL+EXCEL+R统计问卷调查

深入浅出数据分析(一)——MySQL+EXCEL+R统计问卷调查 本篇文章面向对象为小白,大牛扫一眼或看看目录就懂了。 确定问题 分解 分解问题 分解数据 EXCEL刀光霍霍 把数据库内容提取到EXC...
  • sinat_24797831
  • sinat_24797831
  • 2015年07月17日 06:31
  • 2173

R语言--关联分析(问卷调查)

在R中用最经典的Apriori关联算法对问卷调查结果进行简单的关联分析,包括对规则的筛选,输出以及可视化。主流程主流程包括4个部分,数据介绍,关联分析主流程代码,主流程子代码,可视化。数据介绍数据包含...
  • qq_27755195
  • qq_27755195
  • 2016年01月03日 02:20
  • 1770

SPSS——问卷分析(简要操作板,自己整理的有用信息)

资料来源:《SPSS统计应用实务——问卷分析与应用统计》一、复选题及其他方式的数据编码:►复选题:对每一个选项分别编码,“0”表示没有选此项答案,“1”表示选了此项答案。Eg:一、您认为目前教改阻力来...
  • huangjuanjuly
  • huangjuanjuly
  • 2010年10月30日 11:34
  • 1033

利用Excel制作问卷的饼状图

在调研过程中,调研方法有多种:问卷法,访谈法等,而当我们采用问卷法的时候,需要进行统计数据,当然如果选择例如问卷星等网上问卷的话,可以省去自己制作数据饼状图或条形图等麻烦,但因为一些原因,必须使用纸质...
  • u012336923
  • u012336923
  • 2014年09月16日 15:58
  • 2124

一例较成功的国产PHP问卷调查系统

 原文内容:摘要:较早的时候,有个朋友极力推荐我去看看一款PHP问卷调查系统。我虽然从事软件领域的时间并不太长,但也知道国内在这个领域研究和从事的企业和个人并不少,之前也关注过和评估过一些产品或系统,...
  • oyaji21
  • oyaji21
  • 2009年11月20日 08:17
  • 8073

如何做在线调查问卷,然后群发邮件并分析结果?

在线调查,帮你超越客户期望 如果您的工作需要经常和客户打交道,那么您是否遇到过这样的问题?1. 想对现有客户做一点交叉销售,可是不知道客户在想什么,需要什么。2. 最近成/丢了个单,但是销售也不...
  • amidemao
  • amidemao
  • 2014年11月03日 11:25
  • 1123

SharePoint 2013 调查问卷的用法

SharePoint 2013 调查问卷的用法 1,介绍调查问卷的使用方法。 2,图形和所有结果。 3,控制用户只能看到自己答案。 1,确认有权限,如果没有管理管理权限请向管理员申...
  • jason_dct
  • jason_dct
  • 2015年07月29日 18:53
  • 1991

调查问卷数据库设计

表格:用户表—选用网站用户表 问卷表—包含调查问卷自动编号、标题、前言、开启时间、结束时间、创建时间 问题表—包含问题编号、问题标题、相应的问卷编号、问题类型 选项表—包含选项编号、选项值、选项...
  • qilixiang012
  • qilixiang012
  • 2015年11月01日 13:53
  • 1642
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:使用深度搜索分析心理调查问卷的研究
举报原因:
原因补充:

(最多只允许输入30个字)