使用Pearsons对表进行多元线性回归

时间:2017-04-27 20:58:30

标签: r linear-regression pearson-correlation

我需要使用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)

现在我希望这个final table看起来一样,只是在Base_State的开头会有一个额外的列。 (另外,我只需要这个表的第一行,因为我希望所有内容都基于“M”,但我可以稍后解决这个问题。)

enter image description here

1 个答案:

答案 0 :(得分:1)

使用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)) 包, 考虑到你有一个数据帧df,你可以计算变量M和变量PP,SP,PA和P中的每一个之间的Pearson相关性,按Base_State分组:

{{1}}