我将线性回归模型应用于数据,并使用relaimpo包找出最重要的因素。
在R中运行以下代码时,它可以正常工作
library(readxl)
nba <- read_excel("XXXX")
View(nba)
library(relaimpo)
rec = lm(won ~ o_fgm + o_ftm + o_pts , data = nba)
x= calc.relimp(rec, type = c("lmg"), rela = TRUE, rank = TRUE)
x$lmg
我得到的输出:
o_fgm o_ftm o_pts
0.3374366 0.2628543 0.3997091
通过Tableau连接时,我使用以下代码:
SCRIPT_REAL("
won=.arg1
o_fgm=.arg2
o_ftm=.arg3
o_pts=.arg4
library(relaimpo)
rec = lm(won ~ o_fgm + o_ftm + o_pts)
x= calc.relimp(rec, type = c('lmg'), rela = TRUE, rank = TRUE)
"
,MEDIAN([Won]),MEDIAN([O Fgm]),MEDIAN([O Ftm]),MEDIAN([O Pts]))
我收到以下错误:
An error occurred while communicating with the RServe service.
Error in calc.relimp.default.intern(object = structure(list(won = 39, : Too few complete observations for estimating this model
我只使用回归运行它并且运行正常;所以似乎问题在于relaimpo包。这个软件包的在线文档数量有限,所以我找不到修复方法;任何帮助真的很感谢谢谢!
数据来自https://www.kaggle.com/open-source-sports/mens-professional-basketball
的kaggle(&#34; basketball_teams.csv&#34;文件)
答案 0 :(得分:1)
当Tableau使用SCRIPT_REAL()函数或任何SCRIPT_XXX()函数调用R或Python时,它使用Tableau调用表计算的内容。这样可以传递R一个或多个向量 - 并接收向量结果 - 而不是为每个标量单元调用一次函数。
但是,您负责指定如何将聚合结果分区为向量,以及如何对发送给R或Python的向量中的行进行排序。你可以通过指定&#34;分区&#34;来实现。和#34;寻址&#34;通过编辑表计算命令(右键单击计算字段),每个表计算结果。
所以最可能的问题是,你发送的R数据少于预期,也许是很多短向量而不是你想要的长向量。在在线帮助中阅读有关Table Calcs以及分区和寻址的信息。您可以通过选择哪些维度不设置为&#34;使用&#34;来计算分区。 (寻址尺寸的同义词)当您尝试不同的设置时,Table Calc编辑器会为您提供一些可见的反馈 - 我建议在大多数情况下使用特定的尺寸。
对于表格计算,分区和寻址的选择与实际公式一样重要。