海纳百川

登录 | 登录并检查站内短信 | 个人设置 网站首页 |  论坛首页 |  博客 |  搜索 |  收藏夹 |  帮助 |  团队  | 注册  | RSS
主题: 民间验方真的有用——用传播模型模拟结果驳斥方舟子及其信徒们的荒谬言论
回复主题   printer-friendly view    海纳百川首页 -> 驴鸣镇
阅读上一个主题 :: 阅读下一个主题  
作者 民间验方真的有用——用传播模型模拟结果驳斥方舟子及其信徒们的荒谬言论   
我要注册






加入时间: 2009/10/04
文章: 764

经验值: 36499


文章标题: 民间验方真的有用——用传播模型模拟结果驳斥方舟子及其信徒们的荒谬言论 (809 reads)      时间: 2011-8-05 周五, 上午1:02

作者:我要注册驴鸣镇 发贴, 来自 http://www.hjclub.org

1.缘起

在拙文《中医为什么有用》中(地址:ibeidou.net/?p=118950,大约一年半前我在芦区发过一篇内容差不多的文章),我从验方传播机制的角度,详细讨论了为什么民间验方常会受到意想不到的疗效,批驳了方舟子这样的观点:”没有经过科学检验的经验未必可靠,可能只是以讹传讹。古人对前人的经验之谈是如此的轻信,有时候甚至到了荒诞的地步”,论述了方舟子的说法是片面、盲目的,割裂了医学与人类社会发展的关系。

没想到这篇文章被"北斗"编辑看中,配上了图片贴到了“北斗”的网站,更意想不到的是“乌有之乡”竟然也看上了这篇文章,而在跟帖中有不少人用“乌有”粪青特有的脑残式赞扬方式评论该文章,实在让我苦笑不得。

当然,也有不少方舟子的信徒们对这篇文章进行了反驳,人人网上一位叫谭绵华(弹棉花)的网友写了一篇叫做《跟中医粉谈谈逻辑》的长文(作者把它贴到了豆瓣:http://www.douban.com/group/topic/21197524/),打着逻辑的旗号,用漫无逻辑的方式批驳了我的观点,这使我总结出一个规律,读方舟子的文章读多了就会变成逻辑白痴,这也触发了我的灵感,写了一篇《方舟子逻辑学浅析》(已在芦区贴出),分析了方舟子论述问题的混乱(混账)逻辑。

与弹棉花同学的论战,一个最大的收获在于,他的一个朋友郭玮非常理性的要求我,既然我声称这种机制是一种“算法”,那么请给出算法的代码与演示结果。我觉得这是一个非常棒的主意,于是熬夜编写了一个模拟偏方传播过程的程序。郭玮认真看了我的计算机模型,指出了其中的一些小Bug,并就这个模型的问题进行了深入讨论。

感谢与郭玮同学的讨论,使我理清了思路,使我对模型和代码进行了完善。下面就把整个模型及演化结果说明如下。

2.模型

《中医为什么有用》中对验方传播机理进行了形象的、定性的描述,这也是构建本模型的原型,原文如下:

就拿螃蟹壳治“鱼休子”的例子来说吧,我们不妨对它产生、流传的历史做一个合理的推想:

历史上必然有无数人长过“鱼休子”,都拿它没办法。但有一天,一个叫张三的人去抓螃蟹,第二天他发现和自己朝夕相处的“鱼休子”突然变小了,他又试了几次,“鱼休子”竟奇迹般的消失了。他像发现新大陆一样,兴高采烈的向周围的亲戚朋友讲自己抓螃蟹治鱼休子的故事(我前面提到的那位亲戚,闲聊时经常都会说起用偏方治好腰椎间盘突出和“鱼休子”的经历,我已经反复听他们家的人讲过不下五遍)。

现身说法令周围的人印象深刻,很可能他的邻居到朋友家窜门,看见李四长个鱼休子,就告诉他我们村张三用螃蟹壳治好了。李四实验过后果然效果不同凡响,又在茶语饭后到处宣传。如此一传十,十传百,就形成了一种被广泛传播的治疗方法。

当然也存在这样的可能,张三的“鱼休子”并不是被螃蟹壳治好的,而是那天他正好吃了一种野菜,实际是野菜治好了鱼休子。但这事被他忘得一干二净,就误以为螃蟹壳发挥了作用。

因此,错误的治疗方法也有可能被他到处传播,但是当李四听到这个方法后再去拿螃蟹壳实验,就会发现毫无效果,也许李四不会完全否定这个偏方,但这个方法不会给他留下什么深刻印象,“螃蟹壳治鱼休子”也就因遗忘而被自然淘汰。


根据上述原型,我对我的模型做出如下假设:

(1)某人得某种病,如果他使用某种药物(包括别人告知的或偶遇的药物)后该病痊愈了(包括因自愈和安慰剂效应治愈),那么此人就认为这种药物是治疗该病的验方。

(2)如果某人得病,使用了别人告知的验方后疾病没有痊愈,那么他不会再把这个“验方”告诉别人。

(3)某人患上某种疾病,就会向周围的N个亲友打听治疗这种疾病的验方。

(4)为了让模型符合实际情况,认为偶遇的药物对病人没有安慰剂效应(例如在上述原型中,病人去抓螃蟹时不知道螃蟹能治疗鱼休子,所以不存在安慰剂效应)

(5)由于依次实验多个验方,可能存在较为复杂的叠加效应,为了简化讨论,所以规定每个病人有且仅有一次实验某种疗法的机会,即:如果病人同时得到N种验方,那么只随机抽取一种进行实验。如果病人没有得到任何验方,那么病人有一个偶遇的试错机会。

(6)某个人掌握的验方很快会被遗忘。

其中前四条与现实生活基本吻合,(5)(6)则是为了简化模型做出的规定,与实际情况偏差较大,对(5)来说,实际情况是病人通常在一种验方无效的情况下,还会尝试多个验方,而且不可能只有一个”偶遇“的试错机会。对(6)来说,除非掌握偏方的人死亡,否则一般不会被遗忘,如果把模型中传递一次偏方的周期理解为一代人,那么与事实吻合。假如偏方传递周期是一年,那么一个偏方被记忆的时间就是数十个传递周期。

但上述两个不符合实际情况的规定,只会使这个”试错-筛选-验证“的传播模式被弱化,也就是说,如果这个模型的演化结果证明这种机制有效,那么实际的偏方传播机制的运行效率可能比模拟的结果更好。

3.情景说明

本模型假设在一个人口数量固定的人群中,有一种疾病在一个"传递周期"内有固定的发病人数。谁发病是完全随机的。该疾病有一定的自愈率,并且在心理暗示作用下,有一定比例的病人可以通过安慰剂效应痊愈。另外,每个人的亲友数都是一样的。这些参数都可以通过程序的界面进行调整。

本模型的初始条件是第一代病人无法能获得偏方,所以第一代的“验方”都是通过“偶遇”产生的。

本文中,假设病人有可能随机的遇到一万种药物,其中只有一种药物具有70%的治愈率,其他药物完全无效,也就是说,病人只有万分之一的概率“偶遇”有效率为70%的治疗方法。

本文中,演化次数为固定的五百代。

4.图表说明

本模型主要用于演示一个治愈率为70%,被发现概率为万分之一的疾病治疗方法,通过简单的试错方法被发现之后,是否有可能被有效的保留、传播。

本文用图表来说明演化结果,如下图:





图上方是模型涉及的各种参数。图表的横坐标代表演化次数,图中每横格代表50次,纵轴的单位是百分比,一格代表10%。图中的红线代表安慰剂效应的治愈率,绿线代表自愈率。

图中红圈代表这一代病人中,实际痊愈的人数比例。蓝圈代表这一代被传递的验方的平均先验治愈率。

下图是完全不存在有效药物的模拟演化结果,可以看出,其中有一部分病人自愈或者由于安慰剂效应痊愈,所以痊愈人数比例基本在红线以下徘徊,而平均先验治愈率始终保持为零。







如果蓝圈能随着模型演化逐步上升,则说明得到传播的“验方”中,有效验方占据的比例越来越大。

5.演化结果

演化结果一:

以下是设定了一定参数后得到的演化结果,从图中可以看出,有效疗法在第20代左右的时候被发现(之前“平均先验治愈率”一直为零),有效疗法一出现就得到持续的扩散和传播,所以“平均先验治愈率”越来越高,第200代左右时已经超过60%,最终稳定在略低于70%的下方,这说明最终绝大多数得到传播的都是有效验方。







演化结果二:

下面这个结果的参数与上图完全相同。但与上图比较,有效验方在第50代左右才出现,这是因为何时出现有效解是个随机事件,如果“人品”不好,有可能很晚才出现。但出现后就可以持续上升,最终稳定在70%下方。







演化结果三:

与前面两个结果相比,将发病率由2%改为1%,则会发现即便有效解被找到,也会很快“失传”,而不能持续传播。因此这种偏方传播机制并非对所有疾病都适用,如果发病率太低,那么即便找到有效治疗方法,也不可能传播开。






演化结果四:

与上一个结果相比,将亲友人数由200改为400,有效解又呈现出了可以持续传播的形态,可见亲友人数对于传播过程也有决定性影响。有的病如过发病率较低,但病人接触的亲友人数很多,那么有效治疗方法仍然能得到传播。





这里需要说明的是,亲友人数并非一个固定值,而应当是一个与病程长短有关的量,因为病程越长,发病期间遇到的远近亲戚、多年未见的朋友就越多。因此对于病程短、发病率低的疾病,通过打听偏方就难以找到有效疗法。

还需要说明的是,将亲友人数设定为数百人是否符合实际情况?其实这里是把信息的传递过程作了简化,通常这种信息的传递过程是这样的:A生病,他的亲友B看见后,知道C也得过这样的病,就替A向C打听治疗的办法。所以假设A有40个亲友,而每个亲友又各有40个亲友,于是A间接接触到的人数就有40x40=1600,考虑其中有的人是重复认识的,那么一个人间接认识的人数在数百之间是一个合理的估算。

6.结论

通过上面的讨论可以看出,仅仅通过病人的自我验证,并通过人们的口口相传,而没有使用方舟子所坚持的“随机、对照、双盲”实验,当发病率和病人亲友人数满足一定条件时,一种有效的疗法一旦无意间被发现之后,就有可能得到扩散和传播,而且经过一段时间的传播之后,这种有效疗法能够成为传播“验方”的主流,而那些“以讹传讹”的东西,在传播过程中会逐渐被淘汰。

因此,那些用于治疗某些发病率较高的疾病的,且长期广泛流传的民间验方,即便没有经过所谓“随机、对照、双盲”实验,我们也可以很高的概率肯定它具有实质性的治疗作用。

例如“云南白药”这类治疗“金创”的药物,既有较长时间的传承历史,而且使用很广泛,即便没有“随机、对照、双盲”实验,我们也可以肯定它是有效的,只不过通过进一步的临床研究,可以确定它的最佳适用范围以及弄清其机理以使其治疗效果得到优化。

如果要像方舟子那傻X倡导那样,还要对“白药”的疗效报以怀疑态度,再投入大量资金去验证其是否真的有效,无疑是一件劳民伤财而且毫无意义的事情。而方舟子对“白药”的评论,说:“ 人体本身就能制造极为有效的止血药。只要伤势没有严重到要上医院急救,伤口经过包扎后都能自行止血。但是人们一看到出血,不撒点止血药就不放心,不管撒的是祖传秘方、保密配方还是香炉灰、草木灰,当然都是无比‘灵验’ ”,想出这种白痴理论的人不是脑残就是别有用心。

附:程序代码

(本程序用VB6编写)



Private Sub Command1_Click()
Form1.Cls
Dim Doc(10000) '记录药方信息


For n = 1 To 10000
If n = 9999 Then
Doc(n) = 0.7
Else
Doc(n) = 0
End If
Next Form1.Line (10, 500 - prv / n * 400)-(410, 500 - prv / n * 400), vbBlue
'以上是待试错的药方效力的函数分布,doc(n)记录第n号药方的先验治愈率

Randomize
Dim Num '定义人群数量
Dim Dis As Integer '定义发病人数,发病人数/人群数量=发病率
Dim man(10000, 2, 500) '记录病人信息
Dim Boa As Integer '信息传播范围
Dim Gr As Integer '传递的次数
Dim Calm '安慰剂的治愈率
Dim Self '自愈率
Dim Tj(10000) As Integer

Num = Text1.Text * 10000
Dis = Text3.Text * Num * 0.01
Boa = Text2.Text
Gr = 500
Calm = Text5.Text * 0.01
Self = Text4.Text * 0.01

Form1.Line (10, 500 - Calm * 400)-(410, 500 - Calm * 400), vbRed
Form1.Line (10, 500 - Self * 400)-(410, 500 - Self * 400), vbGreen

For m = 1 To Gr 'm代表传递的次数
For n = 1 To Dis '对第m代的第n个病人进行治疗
man(n, 0, m) = Int(Rnd * Num) '随机产生病人
For nn = 1 To Dis '搜寻上一代掌握药方者
up = man(nn, 0, m - 1) + Boa / 2
low = man(nn, 0, m - 1) - Boa / 2
If man(nn, 2, m - 1) > 0 And man(n, 0, m) <up> low Then '判断在病人接触范围内有无掌握验方者
man(n, 1, m) = man(nn, 1, m - 1)
If Rnd < Calm + Self - Self * Calm Then '安慰剂与自愈效应,如果安慰剂或自愈效应发挥作用,则认为病人碰到的验方为有效药物而进行传播
man(n, 2, m) = man(nn, 2, m - 1) + 1
Else
If Rnd < Doc(man(nn, 1, m - 1)) Then man(n, 2, m) = man(nn, 2, m - 1) + 1 '按药方的治愈率,随机产生治疗结果
End If
Exit For
End If
Next nn
If man(n, 2, m) = 0 Then '如果验方无效,则随机"巧遇"1种治疗方法
man(n, 1, m) = Rnd * 10000
If Rnd <Self> 0 Then
k = k + 1
cure = Doc(man(n, 1, m)) + cure
End If
Next n

If k > 0 Then
Form1.Circle (10 + m / Gr * 400, 500 - cure / k * 400), 2, vbBlue
Form1.Circle (10 + m / Gr * 400, 500 - k / Dis * 400), 2, vbRed

End If

Next m

End Sub

[img][/img]

作者:我要注册驴鸣镇 发贴, 来自 http://www.hjclub.org
返回顶端
阅读会员资料 我要注册离线  发送站内短信
显示文章:     
回复主题   printer-friendly view    海纳百川首页 -> 驴鸣镇 所有的时间均为 北京时间


 
论坛转跳:   
不能在本论坛发表新主题
不能在本论坛回复主题
不能在本论坛编辑自己的文章
不能在本论坛删除自己的文章
不能在本论坛发表投票
不能在这个论坛添加附件
可以在这个论坛下载文件


based on phpbb, All rights reserved.
[ Page generation time: 0.157894 seconds ] :: [ 30 queries excuted ] :: [ GZIP compression enabled ]