R中的条件公式
如果我有一个条件公式: 时间<θ:y=x^2 时间=>θ:y=x 如何在R中使用as.formula函数来构建类似的东西?(我也需要在上面使用nls功能) 我试过: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) }
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))