2013-04-30 72 views
22

在R中指定公式的方法有很多,有時是相互矛盾的。有沒有一種全面而簡潔的參考用於將概念模型映射到R語法,而不是?formular公式是否有比公式更好的參考?

我對廣泛的概述,包括用於指定在非線性公式和分層模型的語法如glmlmergamearth,包括(/),用於嵌套,randomfixed在混合模型的效果,樣本的ste,以及在熱門貢獻包中找到的其他。

回答

23

R附帶了幾本手冊,當運行R時,可以從右上角的香草R的「幫助」菜單訪問,也可以在幾個地方聯機。例如,

An Introduction to R」的第11章有幾頁公式。

我不知道它構成了一個「全面」的資源,但它涵蓋了許多你需要知道的公式如何工作。

*事實上,幾乎所有的東西用戶也許95%將永遠使用

的規範參考公式S語言可能是

錢伯斯J.M.,和黑斯蒂T.J.,編。 (1992), 統計模型在S。查普曼&霍爾,倫敦。

雖然該方法的起源來自

威爾金森G.N.和羅傑斯CE值(1973年)。 「用於分析方差的因子模型的符號描述。」 應用統計,,392-399

一些作爲R新書討論的公式,但我不知道我會打電話給任何人的全面。

也有大量的在線資源(例如here)經常會提供大量非常有用的信息。這就是說,一旦你習慣於在R中使用公式,並且有一個可以放置更多知識的上下文,那麼幫助頁面就會包含令人驚訝的大量信息(連同其鏈接的其他頁面)。它有點簡潔和含糊,但是一旦你有了更廣泛的R知識的基礎知識,它可以是非常有用的。

與R公式有關的具體問題(取決於它們的內容)很可能是StackOverflow或CrossValidated的主題 - 的確有一些相當先進的問題涉及到公式已被發現(使用[r] formula等搜索成果豐碩),並且有更多這樣的問題可以幫助用戶解決這些問題;如果你有具體問題,我鼓勵你問。

至於'冗餘'和'衝突',我想你的意思是說,有很多方法可以指定一個非攔截模型這一事實:例如,y ~ . -1y ~ . +0都可以工作,但略有不同上下文都有意義。

此外,還有一個常見的問題是必須從公式界面中分離二次和更高階項(以使用I(x^2)作爲預測因子,所以它可以通過公式接口不受傷害並且存活得足夠遠以被解釋爲代數表達式)。再次,一旦你瞭解到「幕後」發生的事情,似乎不那麼麻煩。

我剛纔提到的事情,具體的例子:

lm(dist ~ . -1, data=cars) # "remove-intercept-term" form of no-intercept 
lm(dist ~ . +0, data=cars) # "make-intercept-zero" form of no-intercept 
lm(dist ~ speed + speed^2, data=cars) # doesn't do what we want here 
lm(dist ~ speed + I(speed^2), data=cars) # gets us a quadratic term 
lm(dist ~ poly(speed,2), data=cars) # avoid potential multicollinearity 

我同意配方接口至少可以用一點點進一步的指導和更好的例子在?formula幫助。

+0

非常感謝你這個有用的答案。我對更廣泛的概述感興趣,感興趣的內容包括嵌套變量的說明和固定與隨機效果。而且,不是'x + I(x^2)'和'poly(x,2)'是否相等?你的答案表明否則。其他感興趣的方面包括在'gam'等函數中指定樣條函數(例如用's'和'te')。 – Abe 2013-05-01 17:22:47

+0

參考倒數第二段(關於bugbear),使用'I'不限於多項式項的說明 - 還需要指定其他變量變換(包括加法,乘法,對數,指數)。 – Abe 2013-05-01 17:33:02

+0

這對加法和乘法是正確的,因爲它們對公式接口有意義。但是'lm(dist〜log(速度),data = cars)'應該是這樣。 – 2013-05-01 22:35:57