簡體   English   中英

使用連續變量和分類變量預測分類變量

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM