使用Ruby中的StatSample使用chisq创建分类和数字变量的多个CrossTab

时间:2014-05-09 13:47:10

标签: ruby statistics crosstab

我正在开发一个公共访问健康数据可视化项目,我的程序目前提供15个分类变量(存储为字符串)和2个数字变量(存储为浮点数)的描述性统计信息。现在我正在尝试通过每个其他变量创建每个变量的基本交叉表,每个变量包含列和行总计和chisq。在查看了一段时间后,statsample似乎是基于此文档(http://ruby-statsample.rubyforge.org/statsample/Statsample/Crosstab.html)的最佳选择,但我无法使交叉表功能正常工作。所以我有两个问题:1)任何人都可以帮助我获得基本的交叉表功能,2)是否有一些性感的'ruby'方式来半自动化运行每个交叉表的过程以避免硬编码(17 X 17 )= 289交叉表?如果有必要,我很乐意这样做,但似乎必须有更好的方法!

下面是我尝试使用的代码示例,以及正在使用的数组的内容:

array_hosp_group

中央医院

中央医院

中央医院

SOUTHWESTERN VERMONT MEDICAL CENTER

SOUTHWESTERN VERMONT MEDICAL CENTER

BRATTLEBORO MEMORIAL HOSPITAL

BRATTLEBORO MEMORIAL HOSPITAL

FLETCHER ALLEN HEALTH CARE

FLETCHER ALLEN HEALTH CARE

...

array_dis_group

家庭 - 自己或家庭护理

家庭 - 自己或家庭护理

熟练的护理设施

家庭 - 自己或家庭护理

家庭 - 自己或家庭护理

到另一个急性医院

...

hum_stat_hosp = array_hosp_group.to_scale
hum_stat_dis = array_dis_group.to_scale
hosp_dis = Statsample::Crosstab.new(hum_stat_hosp,hum_stat_dis)
puts hosp_dis.summary

此代码返回错误: Library / Ruby / Gems / 1.8 / gems / statsample-1.3.0 / lib / statsample / crosstab.rb:82:in matrix_expected':undefined method *'for nil:NilClass(NoMethodError)from /Library/Ruby/Gems/1.8 /gems/statsample-1.3.0/li/statsample/crosstab.rb:81:in collect' from /Library/Ruby/Gems/1.8/gems/statsample-1.3.0/lib/statsample/crosstab.rb:81:in matrix_expected'

我也尝试使用以下代码,并收到相同的错误消息:

rb=ReportBuilder.new
rb.add(Statsample::Crosstab.new(hum_stat_hosp,hum_stat_dis)
rb.save_html("location")

我也尝试过添加

opts=Hash.new

基于文档,对上述每个代码尝试,错误消息没有区别。我在这里和其他网站上搜索了很多,但我似乎无法在statsample中找到任何交叉表实现的例子。

谢谢!任何和所有帮助都是非常苛刻的!

1 个答案:

答案 0 :(得分:0)

快速回答是使用

hum_stat_hosp = array_hosp_group.to_vector
hum_stat_dis = array_dis_group.to_vector

因为Crosstab不能使用标量。这是我应该修复的错误:P