【问题标题】:Multiple Linear Regression to table using Pearsons使用 Pearsons 对表进行多重线性回归
【发布时间】:2017-09-25 20:09:48
【问题描述】:

我需要使用 R 生成一个基于“Base_State”关联以下数据的表格。我该怎么做?我编写了以下 R 脚本,它仅适用于一个 Base_State;这会将其输出到表中。

但是问题之一是这个新表包含一个额外的非数字列:Base_State。

homals 是否适用于线性回归?我尝试使用它,但不断收到错误消息:“x 必须是 sort.list 的原子”。我也尝试使用“lm”函数,但我不知道如何添加这个非数字列。

Base_State  M   PP  SP  PA  P
AL  40.00   4949.04 0.00    1262.51 6211.55
AL  41.00   544.00  0.00    0.00    544.00
AL  51.00   0.00    0.00    0.00    0.00
AL  92.00   6341.68 1617.77 0.00    7959.45
AL  112.00  4584.58 1169.54 0.00    5754.12
AR  52.90   32865.35    0.00    0.00    32865.35
AR  57.00   3223.67 0.00    0.00    3223.67
AR  26.80   0.00    4556.46 0.00    4556.46
AR  40.40   4920.69 1255.27 0.00    6175.96
AR  98.00   4194.39 0.00    0.00    4194.39

表定义(在 SQL 中)

create table #example
(
Base_State varchar(2)
,M decimal(13,2)
,PP decimal(13,2)
,SP decimal(13,2)
,PA decimal(13,2)
,P decimal(13,2)
)

insert #example values('AL',    40.00,  4949.04,    0.00,       1262.51,    6211.55)
insert #example values('AL',    41.00,  544.00,     0.00,       0.00,       544.00)
insert #example values('AL',    51.00,  0.00,       0.00,       0.00,       0.00)
insert #example values('AL',    92.00,  6341.68,    1617.77,    0.00,       7959.45)
insert #example values('AL',    112.00, 4584.58,    1169.54,    0.00,       5754.12)

insert #example values('AR',    52.90,  32865.35    ,0.00       ,0.00   ,32865.35)
insert #example values('AR',    57.00,  3223.67     ,0.00       ,0.00   ,3223.67 )
insert #example values('AR',    26.80,  0.00        ,4556.46    ,0.00   ,4556.46 )
insert #example values('AR',    40.40,  4920.69     ,1255.27    ,0.00   ,6175.96 )
insert #example values('AR',    98.00,  4194.39     ,0.00       ,0.00   ,4194.39 )

select * from #example

请注意,我在添加第一列“Base_State”之前运行了下面的一行 R 脚本,它生成了下面的最终表格。另请注意,我上面的表格定义不包括我用来计算下面最终表格的所有行。换句话说,对 5 行数据执行“cor”显然不会产生同样的结果。

M<-cor(#example)

现在我希望这个最终表看起来相同,只是在开始时会为 Base_State 增加一列。 (另外,我只需要该表的第一行,因为我想要基于“M”的所有内容,但我可以稍后解决)。

【问题讨论】:

  • 您创建 SQL 表而不是 data.frame(R 中更常见的用于存储表的数据结构)是否有原因?
  • 此数据来自 SQL 数据库。首先,我运行 SQL 查询来选择数据(在本例中,只有 10 行)。接下来,我将此输出复制到 Excel 文件中,最后将此数据导入我的 RStudio。 SQL 脚本只是为您提供了一种将其导入 data.frame 的简单方法。有意义吗?
  • 假设 df 是你的 data.frame,使用 dplyr 包,你可以做 df %&gt;% group_by(Base_State) %&gt;% summarize(cor_M_PP=cor(M,PP),cor_M_SP=cor(M,SP),cor_M_PA=cor(M,PA),cor_M_P=cor(M,P))
  • 谢谢你,拉米亚!这会奏效!如果您发布答案,我会投票给它,以便您因此得到认可。
  • Lamia,我确实需要将一件事更改为您上面的代码,仅供参考。我改用“s”拼写的“summarise”。

标签: r linear-regression pearson-correlation


【解决方案1】:

使用dplyr 包, 考虑到您有一个数据框 df,您可以计算变量 M 与变量 PP、SP、PA 和 P 之间的 Pearson 相关性,按 Base_State 分组:

df %>% group_by(Base_State) %>% summarise(cor_M_PP=cor(M,PP),cor_M_SP=cor(M,SP),cor_M_PA=cor(M,PA),cor_M_P=cor(M,P))

【讨论】:

    猜你喜欢
    • 2018-07-31
    • 2018-08-11
    • 2013-07-14
    • 2016-04-19
    • 1970-01-01
    • 2020-10-03
    • 2017-09-19
    • 1970-01-01
    • 2019-01-06
    相关资源
    最近更新 更多