我只是试图在点阵图上绘制许多模型的家族(其名称可以可视化为注释线).但是,我不确定,

  1. 指数
  2. 反双曲
  3. 双曲

模型表现得很好:

  xyplot(
  Petal.Width  ~ Petal.Length | Species,
  data = iris,
  panel = function(x, y, groups, ...) {
    panel.xyplot(x, y, ...)
    mod1 <- lm(y~x)
    mod2 <- lm(y~poly(x, 2))
    mod3 <- lm(y~poly(x, 3))
    mod4 <- nls(y ~ a * exp(-b * x), start = list(a = 1, b = 0.1), data = data.frame(x = x, y = y))  #exponential 
    mod5 <- nls(y ~ a / x, start = list(a = 1), data = data.frame(x = x, y = y)) #inverted hyperbolic  
    mod6 <- nls(y ~ a * x, start = list(a = 1), data = data.frame(x = x, y = y)) 
    #hyperbolic
    
    panel.abline(mod1, col='#0080ff')
    panel.curve(predict(mod2, newdata=data.frame(x=x)), col='purple', lwd=2)  
    panel.curve(predict(mod3, newdata=data.frame(x=x)), col='#ff00ff', lwd=2)
    panel.curve(predict(mod4, newdata=data.frame(x=x)), from = min(x), to = max(x), col = "red",lwd = 2)  
    panel.curve(predict(mod5, newdata=data.frame(x=x)), from = min(x), to = max(x), col = "green",lwd = 2)
    panel.curve(predict(mod6, newdata=data.frame(x=x)), from = min(x), to = max(x), col = "orange",lwd = 2)
    })

如果我没有画出正确的东西,你能纠正吗?我问是因为在第一个面板中,我无法得到图表.

谢谢

推荐答案

看起来应该是正确的. 我唯一可能建议的是,你可以通过使用try()来让nls()个模型更优雅地失败,然后只绘制nls()个不失败的曲线:

library(lattice)
xyplot(
  Petal.Width  ~ Petal.Length | Species,
  data = iris,
  panel = function(x, y, groups, ...) {
    panel.xyplot(x, y, ...)
    mod1 <- lm(y~x)
    mod2 <- lm(y~poly(x, 2))
    mod3 <- lm(y~poly(x, 3))
    mod4 <- try(nls(y ~ a * exp(-b * x), start = list(a = 1, b = 0.1), data = data.frame(x = x, y = y)))  #exponential 
    mod5 <- try(nls(y ~ a / x, start = list(a = 1), data = data.frame(x = x, y = y))) #inverted hyperbolic  
    mod6 <- try(nls(y ~ a * x, start = list(a = 1), data = data.frame(x = x, y = y))) 
    #hyperbolic
    
    panel.abline(mod1, col='#0080ff')
    panel.curve(predict(mod2, newdata=data.frame(x=x)), col='purple', lwd=2)  
    panel.curve(predict(mod3, newdata=data.frame(x=x)), col='#ff00ff', lwd=2)
    if(!inherits(mod4, "try-error"))panel.curve(predict(mod4, newdata=data.frame(x=x)), from = min(x), to = max(x), col = "red",lwd = 2)  
    if(!inherits(mod5, "try-error"))panel.curve(predict(mod5, newdata=data.frame(x=x)), from = min(x), to = max(x), col = "green",lwd = 2)
    if(!inherits(mod6, "try-error"))panel.curve(predict(mod6, newdata=data.frame(x=x)), from = min(x), to = max(x), col = "orange",lwd = 2)
    })

#> Error in nls(y ~ a * exp(-b * x), start = list(a = 1, b = 0.1), data = data.frame(x = x,  : 
#>   singular gradient

创建于2024—04—05,reprex v2.0.2

R相关问答推荐

有没有方法将琴弦完全捕捉到R中的多边形?

将带有范围的字符串转换为R中的数字载体

使用预定值列表将模拟数量(n)替换为rnorm()

ggplot 2中的地块底图(basemaps_gglayer()不起作用)

保存包含循环和ifelse的函数的输出

如何使用R中的dhrr函数将李克特量表的因子列从长转换为宽?

在使用ggroove后,将图例合并在gplot中

如何使用按钮切换轨迹?

在组中添加值增加和减少的行

DEN扩展包中的RECT树形图出现异常行为

如何将SAS数据集的列名和列标签同时包含在r中GT表的表首?

如何将使用rhandsontable呈现的表值格式化为百分比,同时保留并显示完整的小数精度?

汇总数据的Sheffe检验的P值(平均值和标准差)

如何从向量构造一系列双边公式

观察器中的inaliateLater的位置

长/纬点继续在堪萨斯-SF结束,整齐的人口普查

如何合并不同列表中的数据文件,包括基于名称的部分匹配,而不是一对一等价

将字符变量出现次数不相等的字符框整形为pivot_wider,而不删除重复名称或嵌套字符变量

在具有条件的循环中添加行

Ggplot2水平线和垂直线的图例图标不匹配