[英]Predicting categorical variables using continuous and categorical variables
我有一組看起來像這樣的樹 plot 數據(分類變量和連續變量的混合):
Climate Species Average_size Canopy_cover Structure
Hot Pine 12.3 10% open
Cold Spruce 15.6 65% closed
Cold Fir 19.2 43% closed
我有第二個數據集,我試圖預測“結構”(一個分類變量):
Climate Species Average_size Canopy_cover Structure
Hot Pine 20.4 90% ?
Cold Spruce 18.9 54% ?
Hot Fir 26.4 28% ?
由於我正在預測一個分類變量,因此我嘗試使用 ANOVA 並進行預測,但沒有運氣。 我在正確的軌道上嗎?
aov1 <- aov(Structure ~ Canopy_cover + Average_size + Species + Climate, data = df)
predict(aov1, data.frame(Canopy_cover = 90 + Average_size = 20.4 + Species = "Pine" + Climate = "Hot")
這有幾件事。 首先,您的變量canopy_cover
將被讀取為字符變量(如上所示)。 您可能希望將其作為一個連續的數字變量(有關如何修改,請參見下文)。 這里更大的問題是嘗試使用 ANOVA 對 model 分類響應,這本質上是線性回歸的包裝器。 線性回歸需要連續響應。 據我所知,您的響應變量需要 2 forms,打開或關閉,因此一種方法是使用邏輯回歸。 您需要先將結構轉換為 1 或 0。
加載數據並對其進行修改,使“打開”編碼為 1,“關閉”編碼為 0,並將cover
轉換為數字。
df1 <- tribble(
~climate, ~species, ~size, ~cover, ~structure,
"hot", "pine", 12.3, "10%", "open",
"cold", "spruce", 15.6, "65%", "closed",
"cold", "fir", 19.2, "43%", "closed"
) %>%
mutate(target = case_when(
structure == "open" ~ 1,
TRUE ~ 0),
cover = as.numeric(gsub("%", "", cover))
)
對您的測試數據執行相同的操作。
df2 <- tribble(
~climate, ~species, ~size, ~cover,
"hot", "pine", 20.4, "90%",
"cold", "spruce", 18.9, "54%",
"hot", "fir", 26.4, "28%"
) %>%
mutate(cover = as.numeric(gsub("%", "", cover)))
用df1
擬合邏輯回歸 model :
fit <- glm(target ~ climate + species + size + cover, family = "binomial", data = df1)
使用df2
進行預測:
predict(fit, df2, type = "response")
這給出了下面的預測概率。 還有一個排名不足的警告,因為上面的 model 是排名不足的,但我認為實際數據不會出現這種情況。
1 2 3
1.000000e+00 5.826215e-11 1.000000e+00
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.