我正在尝试使用stat_function绘制多个逻辑回归。我想分开传递不同化合物的值,这样我就可以获得三种不同的LR。我可以手动指定化合物的名称,但我想自动执行此操作,以便稍后将其应用于未指定的上传文件。这是脚本:
rm(list =ls())
dev.off()
require(nplr)
require(ggplot2)
data <- read.csv(multicell3.csv, header =TRUE, check.names = FALSE)
data["x"] <- log(data["x"])
data["y"] <- convertToProp(data["y"], T0 = NULL, Ctrl = NULL)
models <- nplr(x=data$x, y = data$y, npars = "all", useLog = FALSE)
B <- getPar(models)$params$bottom
TT <- getPar(models)$params$top
xmid <- getPar(models)$params$xmid
s <- getPar(models)$params$s
bb <- getPar(models)$params$scal
logistic <- function(x) {
(B+(TT-B)/(1+10^(bb*(xmid - x)))^s)
}
p1 <- ggplot(data, aes(x=x, y=y, colour = Compound)) + geom_point()
for (i in 1:unique(data$Compound)) {
if (i<unique(data$Compound)){
p1 <- p1 + stat_function(fun = logistic(i))
}
if (i == unique(data$Compound)){
plot(p1)
}
}
我使用的数据:
Compound x y
Hurrycane 1.00E-08 1.226316143
Hurrycane 1.00E-07 0.931568763
Hurrycane 1.00E-06 0.527434482
Hurrycane 1.00E-05 0.342868146
Hurrycane 1.00E-04 0.077712851
Hurrycane 0.001 -0.188956597
Hurrycane 0.01 -0.10295328
Hurrycane 0.1 -0.066842356
MummyHunter 1.00E-08 0.82905986
MummyHunter 1.00E-07 1.186264371
MummyHunter 1.00E-06 1.049254029
MummyHunter 1.00E-05 0.846015133
MummyHunter 1.00E-04 0.628981497
MummyHunter 0.001 0.236252425
MummyHunter 0.01 0.136820743
MummyHunter 0.1 0.104911859
easyRider 1.00E-08 0.966133281
easyRider 1.00E-07 1.22745977
easyRider 1.00E-06 0.767577806
easyRider 1.00E-05 1.086589519
easyRider 1.00E-04 1.007547357
easyRider 0.001 0.930612619
easyRider 0.01 0.511694103
easyRider 0.1 -0.010537418
我读了很多关于for
循环的内容,但主要是关于为某些内容添加值而我想要的是告诉函数它应该使用哪一组数来计算逻辑回归的参数。我认为问题是我无法告诉参数(B,TT,xmid ......)是否要计算一种化合物或另一种化合物的值。