我正在开发一个公共访问健康数据可视化项目,我的程序目前提供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中找到任何交叉表实现的例子。
谢谢!任何和所有帮助都是非常苛刻的!
答案 0 :(得分:0)
快速回答是使用
hum_stat_hosp = array_hosp_group.to_vector
hum_stat_dis = array_dis_group.to_vector
因为Crosstab不能使用标量。这是我应该修复的错误:P