我想寫一個函數(最好是R,但歡迎使用其他語言),它將識別列中的列之間的關係(限於添加/替換)數據集。這種實際應用將在大型多列金融數據集上運行,其中一些列是其他列的小計 - 並標識這些小計。如何識別數據集中其他列的總和列
理想情況下,我想允許小的差異 - 例如,以允許四捨五入的問題導致列不完全增加100%。
我發現了以下question其中包括涉及矩陣和等級的解決方案,但我不確定是否有任何方法可以將處理因舍入問題而引起的數據中的噪音處理。
作爲一個例子:
d = data.frame(a=c(10.12, 20.02, 30.08, 20.19), b=c(12.12, 20.45, 20.52, 16.72), c=c(11, 123.25, 20.67, 20.78))
d$d = d$a + d$b
d$e = d$d + d$c
> d
a b c d e
1 10.12 12.12 11.00 22.24 33.24
2 20.02 20.45 123.25 40.47 163.72
3 30.08 20.52 20.67 50.60 71.27
4 20.19 16.72 20.78 36.91 57.69
magic_function(d)
[1] "d$d = d$a + d$b"
[2] "d$e = d$d + d$c" # or "d$e = d$a + d$b + d$c" (first option preferred)
在鏈接的問題的解決方案工作良好,直到我噪聲引入方程。例如d$d[[4]] = d$d[[4]] + 0.01
- 那麼它不再起作用。因此,我的問題是:
- 是否有任何其他的方法來 列(特別是如果他們被限制在簡單 加法/減法)
- 之間確定關係是任何能夠解決 不完善的數據的方法質量問題還是需要爲其構建一些額外的功能(例如,在通過等級識別算法運行數據之前對數據進行四捨五入)。
部分答案是使用'lm'。這應該至少返回其他線性組合的變量,例如NA'summary(lm(rnorm(4)〜。,data = d))'。 – lmo
@lmo糾正我,如果我錯了,但lm需要知道依賴/自變量 - 在這種情況下,我不知道什麼是依賴和什麼是獨立.. – Aurimas
這在理論上是真的,也許我是濫用函數,但注意到我添加了一個隨機樣本作爲因變量從標準正態分佈。現在,協變量(「獨立」變量)被評估爲它們的共線性。如果太接近,那麼'lm'返回一個NA。我相信(根據之前的SO帖子)協變量是按照更大的「獨立性」來選擇的,因此那些最共線的那些被排除在迴歸結果中。 – lmo