首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用optim()查找中心

使用optim()查找中心
EN

Stack Overflow用户
提问于 2019-03-11 12:59:40
回答 2查看 109关注 0票数 0

我有一些坐标,我想用optim()找到中心,具体来说,我需要找到Fréchet平均值。

假设我有下一个坐标(1,3),(0,2),(1,5),(-3,-9)。

我把它们写在data.frame的"p“里。

代码语言:javascript
运行
复制
p<-data.frame(X=c(1,0,1,-3), Y=c(3,2,5,-9))

到目前为止我的代码是:

代码语言:javascript
运行
复制
fn<-function(x)
{
  for (i in 1:(nrow(p)-1))
  {r<- (p[i,1]-p[i,2])^2 + (p[i+1,1]-p[i+1,2])^2}
}

optim (c(1,1) , fn)

我选择了1,1作为起点。

两点之间的距离是:(x1-y1)^2 + (x2-y2)^2

我的代码显然不起作用,我需要一些关于如何使optim()最小化我的点的距离函数的指导。

(我是R/编码方面的新手)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-03-12 13:24:21

以下是我解决这个问题的方法:

代码语言:javascript
运行
复制
p <- data.frame(X=c(1,0,1,-3), Y=c(3,2,5,-9))
P <- t(as.matrix(p))
# plot(p)

fn <- function(m) sum((P-m)^2)
optim(c(5,5) , fn)

它正在使用P-m中的回收规则。

下面是fn()的一个变体

代码语言:javascript
运行
复制
fn <- function(m) sum((c(p$X-m[1], p$Y-m[2]))^2)
票数 1
EN

Stack Overflow用户

发布于 2019-03-11 16:36:52

不确定你到底想要做什么,但这是:

代码语言:javascript
运行
复制
fn <- function(x) {
  x1 <- x[1]
  y1 <- x[2]
  for (i in 1:nrow(p)){
  r<-(x1-y1)^2 + (p[i,1]-p[i,2])^2
  return(r)
  }
}
optim(c(1,1) , fn)
票数 -2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55102393

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档