May 2009 - May 2017 论坛八周年-你的足迹,我的骄傲


一亩三分地论坛

 找回密码
 获取更多干活,快来注册

一亩三分地官方iOS手机应用下载
查看: 1259|回复: 3
收起左侧

[其他] 有统计和计算机两种学位的同学:请教统计编程里面怎么写Unit Test

[复制链接] |试试Instant~ |关注本帖
小K 发表于 2014-9-15 13:04:27 | 显示全部楼层 |阅读模式

注册一亩三分地论坛,查看更多干货!

您需要 登录 才可以下载或查看,没有帐号?获取更多干活,快来注册

x
我上学的时候反正统计是不怎么写unit test, 所谓的functional test是靠人来看的,比如结果是否"make sense" - 这个定义很虚啊。。。。
鏉ユ簮涓浜.涓夊垎鍦拌鍧.
所以想请教一下有计算机背景的同学,如果你也写统计计算的程序(不一定是R package级别的),经常一个任务就是:给你一个data set要用如此这般的方法分析,得到一些结论。

但是统计里面问题是,针对原来的数据,你是不知道result的。
i don't mean testing the output of base or other R packages. I don't think you need to test the output from glm() is correct. 但是如果model specification (i.e. the parameters, or model)设置的不对,这些才是出bug的地方,比如你本来想include subset,但是你忘记了,这就是个很隐藏的bug. 或者有两个名字接近的变量,在model里面写错了,就是错。
-google 1point3acres或者你有一个procedure that takes a few steps, like read data, clean it up, impute missing values, fit a few different models and see what's best. Select that best, and report results in tables and graphs,
如果用计算机里面unit test的想法,应该是找一个很小的数据,你可以人工的知道它结果应该如何,用来做test case。
但是以上描述的这个过程,你事先如何知道哪个情况可以用来做测试呢?因为难以预测数据里面什么东西会interesting. from: 1point3acres.com/bbs

即使是unit test,一般说test boundary and risky 的情况。但是统计里面,什么是boundary case and risk? 统计里面的结论经常不是代码不跑,而是跑出来的东西不make sense --- how do you define "sense" into a self-testing test case, that runs and prints "OK" every time you run it?
当然,应该break that procedure up,每个步骤都是单独的,可以被测试,unit test probably would find typos etc fast.
. visit 1point3acres.com for more.
但是整个过程需要functional test,可是统计数据的结论经常是未知 的,怎么能找到合适的 whole test cases呢?

.鏈枃鍘熷垱鑷1point3acres璁哄潧

.鐣欏璁哄潧-涓浜-涓夊垎鍦
wwtpcsuper 发表于 2014-9-16 00:21:21 | 显示全部楼层
关注一亩三分地公众号:
Warald_一亩三分地
我一般是simulate一个expected的小toy example, 然后看看跑出来的是不是对的.. 如果model太复杂连toy example都写不出来的话.. 那我也没辙了..
回复 支持 反对

使用道具 举报

 楼主| 小K 发表于 2014-9-16 01:37:17 | 显示全部楼层
关注一亩三分地微博:
Warald
toy 求举例~~~.1point3acres缃
那做ML的人怎么做test呢?
像RF那种类型的,就算你知道predicted outcome, variable importance那种东西又怎么测试?
回复 支持 反对

使用道具 举报

wwtpcsuper 发表于 2014-9-16 08:16:11 | 显示全部楼层
具体来说
是parametric model还是non parametric model

如果是parametric,直接带进去几个参数,simulate出一个dataset。因为你已经知道了参数的结果,所以就直接run这个dataset看看参数的inference是不是match
如果是nonparametric.. 就比较麻烦了.. 比如ML的model。一般是写个极端情况来验证一下,但是不能保证没有bug。。只能多写些知道结果的极端情况来验证
回复 支持 反对

使用道具 举报

本版积分规则

关闭

一亩三分地推荐上一条 /5 下一条

手机版|小黑屋|一亩三分地论坛声明 ( 沪ICP备11015994号 )

custom counter

GMT+8, 2017-5-24 09:17

Powered by Discuz! X3

© 2001-2013 Comsenz Inc. Design By HUXTeam

快速回复 返回顶部 返回列表