R中的条件公式

R中的条件公式,r,math,R,Math,如果我有一个条件公式: 时间θ:y=x 如何在R中使用as.formula函数来构建类似的东西?(我也需要在上面使用nls功能) 我试过: Data2 <-as.formula(y ~ (x<=theta)*x^2 + (x>theta)*x) Data2这里可能就是您要查找的内容 Myfunction <- function(time, x, theta) { if(time < theta) return(x^2) else return(x) }

如果我有一个条件公式:

时间<θ:y=x^2

时间=>θ:y=x

如何在R中使用as.formula函数来构建类似的东西?(我也需要在上面使用nls功能)

我试过:

Data2 <-as.formula(y ~ (x<=theta)*x^2 + (x>theta)*x)

Data2这里可能就是您要查找的内容

Myfunction <- function(time, x, theta) {
  if(time < theta) return(x^2)
  else return(x)
}

我认为你不能用nls来拟合一个不可微的函数

对于此特定示例,您可以使用
optimize

#some example data
set.seed(42)
x <- runif(100, 0, 100)
y <- x
y[x <= 50] <- x[x <= 50]^2
y <- y + rnorm(100, sd = 0.01)     

fun <- function(x, theta) {
  #logical values are coerced to 0/1 automatically in calculations
  x * (x > theta) + x^2 * (x <= theta)
}    

SSE <- function(theta) {
  sum((y - fun(x, theta))^2) 
}

print(fit <- optimize(SSE, c(0, 100)))
#$minimum
#[1] 48.40996
#
#$objective
#[1] 0.008573424

plot(x, y)
lines(0:100, fun(0:100, fit$minimum))
#一些示例数据
种子(42)

x“不起作用”不是一个有意义的描述。“为什么这里没有乳胶。”-你是什么意思?@G.Grothendieck我只是想知道我使用的代码是否正确,我描述的数学函数是否按照我写的那样编码?@duffymo在数学堆栈交换中我可以使用美元符号来使用乳胶,更容易显示公式等。您是否正在尝试构建一个可以用于计算实际值的函数?谢谢,我不知道您可以在R中这样做。如果θ是一个需要估计的参数,我可以在其上使用nls函数吗?@MathsIsHard您可能实际上在寻找
nlm
而不是
nls
。我不太熟悉这些函数,但是
nlm
将函数作为其第一个参数。此函数不是矢量化的,因此对优化毫无用处。@Roland我明白你的意思。谢谢,这就是我要找的
#some example data
set.seed(42)
x <- runif(100, 0, 100)
y <- x
y[x <= 50] <- x[x <= 50]^2
y <- y + rnorm(100, sd = 0.01)     

fun <- function(x, theta) {
  #logical values are coerced to 0/1 automatically in calculations
  x * (x > theta) + x^2 * (x <= theta)
}    

SSE <- function(theta) {
  sum((y - fun(x, theta))^2) 
}

print(fit <- optimize(SSE, c(0, 100)))
#$minimum
#[1] 48.40996
#
#$objective
#[1] 0.008573424

plot(x, y)
lines(0:100, fun(0:100, fit$minimum))