資料框“pars”的行包含定義邏輯曲線的兩個引數:
library(ggplot2)
library(purrr)
pars <- data.frame(
diff = c(-1.5, 2.5),
disc = c(1.2, 2.5)
)
這兩條曲線可以像這樣用 map() 和 ggplot() 繪制。
icc <- function(x) map(
1:nrow(pars),
~ stat_function(fun = function(x)
(exp(pars$disc[.x]*(x - pars$diff[.x])))/(1 exp(pars$disc[.x]*(x - pars$diff[.x]))))
)
ggplot(data.frame(x = -5 : 5))
aes(x)
icc()

相應的推導可以這樣繪制:
disc1 <- 1.2
disc2 <- 2.5
diff1 <- -1.5
diff2 <- 2.5
icc1 <- function(x) (exp(disc1*(x - diff1)))/(1 exp(disc1*(x - diff1)))
icc2 <- function(x) (exp(disc2*(x - diff2)))/(1 exp(disc2*(x - diff2)))
info1 <- Deriv(icc1, "x")
info2 <- Deriv(icc2, "x")
ggplot(data.frame(x = -5 : 5))
aes(x)
stat_function(fun = info1)
stat_function(fun = info2)

但是,我想使用更通用的方法,最好使用 purrr() 進行推導,因為我需要一個函式來處理不同數量的曲線。也許有一個 pmap() 的解決方案可以遍歷帶有引數的資料框并將函式和派生應用于每一行。不幸的是,到目前為止我很不走運。我非常感謝任何有用的答案。
uj5u.com熱心網友回復:
一種選擇可能如下所示:
- 我已將曲線的引數放在 data.frame 中
- 利用函式工廠并
pmap回圈引數 df 以創建icc函式串列。
其余的非常簡單。
回圈遍歷函式串列以獲取導數。
使用地圖添加
stat_function圖層。
library(ggplot2)
library(Deriv)
#> Warning: package 'Deriv' was built under R version 4.1.2
library(purrr)
df <- data.frame(
disc = c(1.2, 2.5),
diff = c(-1.5, 2.5)
)
icc <- function(disc, diff) {
function(x) (exp(disc*(x - diff)))/(1 exp(disc*(x - diff)))
}
icc_list <- pmap(df, function(disc, diff) icc(disc, diff))
info_list <- map(icc_list, Deriv, "x")
ggplot(data.frame(x = -5 : 5))
aes(x)
map(info_list, ~ stat_function(fun = .x))

編輯合并不同的顏色或...并不是什么大不了的事,例如,您可以使用purrr::map2回圈遍歷兩者info_list和顏色向量,以將顏色分配給您的每個函式或衍生物:
colorVec <- c("red", "blue")
ggplot(data.frame(x = -5 : 5))
aes(x)
map2(info_list, colorVec, ~ stat_function(fun = .x, color = .y))

uj5u.com熱心網友回復:
您也可以以與 icc 繪圖非常相似的方式進行操作:
deriv_icc <- function(x) map(
1:nrow(pars),
~ stat_function(fun = function(x){
exb <- exp(pars$disc[.x]*(x-pars$diff[.x]))
pars$disc[.x]*(exb/(1 exb) - exb^2/(1 exb)^2)
}))
ggplot(data.frame(x = -5 : 5))
aes(x)
deriv_icc()

這只是認識到這個問題的邏輯 CDF 的導數是判別引數乘以邏輯 PDF 的事實:
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/416771.html
標籤:
下一篇:我們用選舉結果在R中說明情節
