【问题标题】:Estimate relationship between X and Y in R [closed]估计 R 中 X 和 Y 之间的关系
【发布时间】:2013-02-16 15:49:26
【问题描述】:

我想使用 P(见下文)在 (0, 10) 上的 100 个相等点处估计 X 和 Y(来自数据 m)之间的关系。我如何使用 R 来做到这一点?

> m
      X        Y
1     0.5      6.0
2     1.5      5.0
3     2.5      6.7
4     3.5      7.1
5     4.5      6.1
6     5.5      8.1
7     6.5      8.0
8     7.5      7.9
9     8.5      8.0
10    9.5      6.0

(1)

 P=function(x,X,Y,sigma){
  # x = point to evaluate our estimate.
  # X = vector of observation X values
  # Y = vector of observation Y values
  # sigma = standard deviation.

  weights = rep(0,length(X)) 
  sumweights = 0              
  smooth = 0                  

  for(i in 1:length(X)){

    weights[i] = dnorm(x,mean=X[i],sd=sigma)


    sumweights = sumweights + weights[i]

    smooth = smooth + weights[i]*Y[i]
  }

  return( smooth/sumweights )
}

【问题讨论】:

  • 什么?这一定是我见过的最不清楚的问题。
  • @nograpes 我编辑了这个问题,如果需要更多说明,请告诉我...
  • @Titi90 - 现在它更没有意义了!请详细说明您要做什么!
  • @thelatemail 很抱歉造成混淆。现在清楚了吗?
  • @Titi90 请参阅下面关于将模型拟合到您的数据的答案...这能回答您的问题吗?

标签: r function relationship


【解决方案1】:

我不确定您要做什么,但您说“我想估计 X 和 Y 之间的关系”,这听起来像是在尝试将函数拟合到您的数据集。探索未知关系数据的一种方法是绘制它并尝试猜测变量之间的数学关系。例如:

m <- read.table(header=T, text='
       X        Y
     0.5      6.0
      1.5      5.0
      2.5      6.7
      3.5      7.1
      4.5      6.1
      5.5      8.1
      6.5      8.0
      7.5      7.9
      8.5      8.0
     9.5      6.0')

with(m,plot(X,Y))

现在尝试对您的数据进行线性回归。

lm_xy <- lm(Y~X,m)

abline(lm_xy,col='blue')

summary(lm_xy)

这看起来不太合适,但您可以尝试使用lmnls 和其他包来寻找更好的模型。

例如,试试:

pn_xy <- nls(Y ~ a*(X - b)^2 + c, start = c(a=0.05, b=8, c=8),data=m)

lines(m$X,predict(pn_xy,m$X),col='red')

summary(pn_xy)

你可以在这里看到不同的模型:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多