Tôi đã thấy trong một hướng dẫn về mô hình hồi quy lệnh sau:
myFormula <- Species ~ Sepal.Length + Sepal.Width + Petal.Length + Petal.Width
Chính xác thì lệnh này làm gì, và vai trò của ~
(dấu ngã) trong lệnh là gì?
Tôi đã thấy trong một hướng dẫn về mô hình hồi quy lệnh sau:
myFormula <- Species ~ Sepal.Length + Sepal.Width + Petal.Length + Petal.Width
Chính xác thì lệnh này làm gì, và vai trò của ~
(dấu ngã) trong lệnh là gì?
Câu trả lời:
Thứ bên phải <-
là một formula
vật. Nó thường được sử dụng để biểu thị một mô hình thống kê, trong đó thứ ở bên trái của ~
phản hồi và những thứ ở bên phải của các ~
biến là các biến giải thích. Vì vậy, trong tiếng Anh, bạn sẽ nói một cái gì đó như "Loài phụ thuộc vào Chiều dài Sepal, Chiều rộng Sepal, Chiều dài cánh hoa và Chiều rộng cánh hoa" .
Một myFormula <-
phần của dòng đó lưu trữ công thức trong một đối tượng được gọi myFormula
để bạn có thể sử dụng nó trong các phần khác của mã R của bạn.
Sử dụng phổ biến khác của các đối tượng công thức trong R
Các lattice
gói sử dụng chúng để xác định các biến để cốt truyện .
Các ggplot2
gói sử dụng chúng để xác định tấm cho âm mưu .
Các dplyr
gói sử dụng chúng cho evaulation không chuẩn .
lazyeval
họa tiết giới thiệu tốt về công thức là gì
R định nghĩa ~
toán tử (dấu ngã) để sử dụng trong các công thức. Các công thức có tất cả các loại sử dụng, nhưng có lẽ phổ biến nhất là cho hồi quy:
library(datasets)
lm( myFormula, data=iris)
help("~")
hoặc help("formula")
sẽ dạy bạn nhiều hơn
@Spacesman đã bao gồm những điều cơ bản. Hãy thảo luận về cách thức hoạt động của nó.
Đầu tiên, là một toán tử, lưu ý rằng về cơ bản nó là một lối tắt đến một hàm (có hai đối số):
> `~`(lhs,rhs)
lhs ~ rhs
> lhs ~ rhs
lhs ~ rhs
Điều đó có thể hữu ích để biết để sử dụng trong apply
các lệnh gia đình.
Thứ hai, bạn có thể thao tác công thức dưới dạng văn bản :
oldform <- as.character(myFormula) # Get components
myFormula <- as.formula( paste( oldform[2], "Sepal.Length", sep="~" ) )
Thứ ba, bạn có thể thao tác nó dưới dạng một danh sách :
myFormula[[2]]
myFormula[[3]]
Cuối cùng, có một số thủ thuật hữu ích với các công thức (xem help("formula")
để biết thêm):
myFormula <- Species ~ .
Ví dụ: phiên bản trên giống như phiên bản gốc, vì dấu chấm có nghĩa là "tất cả các biến chưa được sử dụng." Cái này nhìn vào data.frame bạn sử dụng trong lệnh gọi mô hình cuối cùng của bạn, xem biến nào tồn tại trong data.frame nhưng không được đề cập rõ ràng trong công thức của bạn và thay thế dấu chấm bằng các biến bị thiếu đó.
Species~.
, loài là biến duy nhất đã được sử dụng. Do đó, nó phụ thuộc vào mọi biến khác trong data.frame.
myFormula <- Species ~ .
. Khi dấu chấm vẫn được thay thế bằng các biến từ data.frame? Bạn có thể cung cấp một ví dụ