R programlama dilinde ~ (tilde) kullanımı


187

Aşağıdaki komutu regresyon modelleme hakkında bir öğreticide gördüm:

myFormula <- Species ~ Sepal.Length + Sepal.Width + Petal.Length + Petal.Width

Bu komut tam olarak ne yapar ve ~(tilde) komutunun rolü nedir?


Eğiticinin bağlantısını paylaşmak ister misiniz? Kulağa ilginç geliyor.
cheesus

1
@ cheeesus ... R'deki e-kitap veri madenciliğinden vaka çalışmaları ile geçiyordum ... orada bu kadar ilginç örneklerden daha fazlasını bulabilirsiniz.
Ankita

Yanıtlar:


193

Sağındaki şey <-bir formulanesnedir. Genellikle, solundaki şeyin ~cevap olduğu ve sağındaki şeylerin ~açıklayıcı değişkenler olduğu istatistiksel bir modeli belirtmek için kullanılır . Yani İngilizce'de "Türler Sepal Uzunluk, Sepal Genişlik, Petal Uzunluk ve Petal Genişliğe bağlıdır" gibi bir şey söylerdiniz .

Bu myFormula <-satırın bir kısmı, myFormulaR kodunuzun diğer bölümlerinde kullanabilmeniz için formülü adlı bir nesnede saklar .


Formül nesnelerinin R'deki diğer yaygın kullanımları

latticePaket için bunları kullanır arsa için değişkenleri belirlemek . Paket için bunları kullanır planlamaktan panelleri belirtmek . Paket için bunları kullanır standart dışı geçirdikleri anlam .
ggplot2
dplyr


1
Biraz daha geniş bir tartışma için: stackoverflow.com/questions/8055508/the-tilde-operator-in-r/…
IRTFM

Arasında formüllerine 'bölümünde lazyevalskeç için iyi bir giriş veren bir formül nedir
RobinL

82

R, ~formüllerde kullanılmak üzere bir (tilde) operatörü tanımlar . Formüllerin her türlü kullanımı vardır, ancak belki de en yaygın olanı regresyon içindir:

library(datasets)
lm( myFormula, data=iris)

help("~")ya help("formula")da size daha fazla öğretecek.

@Spacedman temel bilgileri kapsıyor. Nasıl çalıştığını tartışalım.

İlk olarak, bir operatör olarak, bunun aslında bir işleve kısayol olduğunu unutmayın (iki argümanla):

> `~`(lhs,rhs)
lhs ~ rhs
> lhs ~ rhs
lhs ~ rhs

Bu, örneğin applyaile komutlarında kullanım için bilmek yararlı olabilir .

İkinci olarak, formülü metin olarak değiştirebilirsiniz :

oldform <- as.character(myFormula) # Get components
myFormula <- as.formula( paste( oldform[2], "Sepal.Length", sep="~" ) )

Üçüncü olarak, bir liste olarak değiştirebilirsiniz :

myFormula[[2]]
myFormula[[3]]

Son olarak, formüllerle bazı yararlı hileler var ( help("formula")daha fazla bilgi için bakın ):

myFormula <- Species ~ . 

Örneğin, yukarıdaki sürüm orijinal sürümle aynıdır, çünkü nokta "henüz kullanılmayan tüm değişkenler" anlamına gelir. Bu, nihai model çağrınızda kullandığınız data.frame'e bakar, data.frame'de hangi değişkenlerin bulunduğunu görür, ancak formülünüzde açıkça belirtilmez ve noktayı bu eksik değişkenlerle değiştirir.


@Ari B. Friedman cevap için teşekkürler ama son satır biraz 'belirsiz' henüz tüm değişkenler anlamına gelmez anlamına gelir 'demek. Daha fazla açıklayabilirsen.
Ankita

9
@Ankita, bu bağlamda "henüz kullanılmadı" anlamına gelmez. İçinde Species~.kullanılan tek değişken türdür. Bu nedenle, data.frame içindeki diğer tüm değişkenlere bağlıdır.
x4nd3r

Anlamıyorum myFormula <- Species ~ . . Nokta hala data.frame değişkenleriyle ne zaman değiştirilir? Bir örnek
verebilir
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.