首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >回归系数的两两比较

回归系数的两两比较
EN

Stack Overflow用户
提问于 2016-01-21 22:12:21
回答 2查看 777关注 0票数 0

cor(mydataframe)对相关系数(相关矩阵)进行成对比较是直接对数值数据进行比较的。对同一变量之间的简单回归分析的斜率进行成对比较,有没有办法做到同样的事情?令我失望的是,slope(mydataframe)beta(mydataframe)没有做到这一点。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-01-21 22:46:08

我不知道这是否有内置的函数,但是要编写一个for -循环来实现这一点很容易。

代码语言:javascript
复制
pairReg = function(data){
  results = rep(NA, ncol(data)**2)
  counter = 0

  for(i in names(data)){
    for (j in names(data)){
      counter = counter + 1
      if (i ==j) next
      results[counter] = lm(data[,i]~data[,j])$coef[2]
    }
  }
  matrix(results, ncol = ncol(data),byrow=T)  
}

函数默认为使对角线为NA

示例:

代码语言:javascript
复制
data = data.frame(x1 = rnorm(100,0,1),
              x2 = rnorm(100,0,1),
              x3 = rnorm(100,0,1))
pairReg(data)

可以用apply()来扩展它以加快速度。

票数 1
EN

Stack Overflow用户

发布于 2016-01-21 23:39:13

数据集的协方差矩阵与其两两回归斜率之间存在着非常的直接关系。从检查回归方程可以看出这一点,任何使用回归的人都应该理解这一点(不支持latex这一事实):

\hat y_i = \bar y+ \sigma_{xy} \frac{\sigma_y}{\sigma_x} (x_i - \bar x)

这意味着简单的线性回归系数是

\hat \Beta = \sigma_{xy} \frac{\sigma_y}{\sigma_x}

IE-通过这两个变量之间的“差”(标准差)的差异来适当地衡量的相关性。

因此,这种转换是直接的。答案类似于上面的@Devon,但它本身添加了回归。

代码语言:javascript
复制
c1 <- cor(data)
c2 <- diag(cov(data)^(1/2))

m <- matrix(NA, nrow= ncol(data), ncol= ncol(data))

for (i in 1:3) {
  for (j in 1:3) {
    m[i,j] <- c1[i,j] * c2[i] / c2[j]
  }
}

# using @devon's data, provided w/o a seed
R> m
            [,1]        [,2]        [,3]
[1,]  1.00000000  0.11334817 -0.05551440
[2,]  0.10722557  1.00000000 -0.04449336
[3,] -0.05077282 -0.04301669  1.00000000
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34935351

复制
相关文章

相似问题

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