我正在寻找一些算法或程序或函数来推断变量是如何创建的,只要我提供其他变量。我认为计算机程序员会称之为“反编译”,架构师会称之为“逆向工程”,但我想我不知道统计学家会称之为什么......或者是否有公认的方法来做到这一点。
假设我在被调用中有一个分类列,但我不知道它是如何构造的。但我确实知道用于创建它的变量是什么……或者至少我可以提供一组用于创建它的详尽变量——即使并非所有变量都被使用。data.frame
newvar
# start with an example data set
x <- mtcars
# # # # # # # # # # # # # # # # # # # # # # # #
# pretend this block of code is a black box
x <-
transform(
x ,
newvar =
ifelse( mpg > 24 , 1 ,
ifelse( cyl == 6 , 9 ,
ifelse( hp > 120 , 4 ,
ifelse( mpg > 22 , 7 , 2 ) ) ) )
)
# end of unknown block of code
# # # # # # # # # # # # # # # # # # # # # # # #
# now knowing that `mtcars` has only 11 columns to choose from
names(x)
# how were these 11 columns used to construct `newvar`?
table( x$newvar )
# here's a start..
y <- data.frame( ftable( x[ , c( 'mpg' , 'cyl' , 'hp' , 'newvar' ) ] ) )
# ..combinations with any records
y[y[,5]!=0,]
# but that's not enough to back-out the construction
所以我认为您可以使用线性回归或决策树来退出构建newvar
,但这仍然需要一些思考并将系数拼凑在一起才能准确地弄清楚黑匣子内发生了什么。
可以这么说,是否有任何可用的算法可以猜测黑匣子?谢谢!!