我正在尝试对一些遵循 sigmoid 曲线关系的数据进行建模。在我的工作领域(心理物理学)中,通常使用 Weibull 函数来模拟这种关系,而不是概率。
我正在尝试使用 R 创建一个模型并且正在努力解决语法问题。我知道我需要使用包中的vglm()
功能VGAM
,但我无法得到一个合理的模型。这是我的数据:
# Data frame example data
dframe1 <- structure(list(independent_variable = c(0.3, 0.24, 0.23, 0.16,
0.14, 0.05, 0.01, -0.1, -0.2), dependent_variable = c(1, 1,
1, 0.95, 0.93, 0.65, 0.55, 0.5, 0.5)), .Names = c("independent_variable",
"dependent_variable"), class = "data.frame", row.names = c(NA,
-9L))
这是 dframe1 中的数据图:
library(ggplot2)
# Plot my original data
ggplot(dframe1, aes(independent_variable, dependent_variable)) + geom_point()
这应该可以通过 Weibull 函数建模,因为数据符合 S 型曲线关系。这是我对数据建模并生成代表性图的尝试:
library(VGAM)
# Generate model
my_model <- vglm(formula = dependent_variable ~ independent_variable, family = weibull, data = dframe1)
# Create a new dataframe based on the model, so that it can be plotted
model_dframe <- data.frame(dframe1$independent_variable, fitted(my_model))
# Plot my model fitted data
ggplot(model_dframe, aes(dframe1.independent_variable, fitted.my_model.)) + geom_point()
如您所见,这根本不代表我的原始数据。我要么错误地生成了我的模型,要么错误地生成了我的模型图。我究竟做错了什么?
注意:我已编辑此问题以使其更易于理解;以前我完全使用了错误的功能(weibreg()
)。因此,下面的一些评论可能没有意义。......