使用 Pearsons 进行 table 的多元线性回归
Multiple Linear Regression to table using Pearsons
我需要使用 R 生成一个 table 来关联以下基于 "Base_State" 的数据。我该怎么做?我编写了以下 R 脚本,它只适用于一个 Base_State;这将它输出到 table.
但问题之一是这个新的 table 包含一个非数字的附加列:Base_State。
homals 是否适用于线性回归?我尝试使用它,但一直收到错误消息:"x must be atomic for 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
Table定义(在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 脚本,它在下面生成了最终的 table。另请注意,我上面的 Table 定义不包括我用来计算下面最终 table 的所有行。换句话说,对 5 行数据执行 "cor" 显然不会产生相同的结果。
M<-cor(#example)
现在我希望这个最终的 table 看起来一样,除了 Base_State 的开头会有一个额外的列。 (此外,我只需要此 table 的第一行,因为我想要基于 "M" 的所有内容,但我可以稍后解决)。
使用 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))
我需要使用 R 生成一个 table 来关联以下基于 "Base_State" 的数据。我该怎么做?我编写了以下 R 脚本,它只适用于一个 Base_State;这将它输出到 table.
但问题之一是这个新的 table 包含一个非数字的附加列:Base_State。
homals 是否适用于线性回归?我尝试使用它,但一直收到错误消息:"x must be atomic for 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
Table定义(在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 脚本,它在下面生成了最终的 table。另请注意,我上面的 Table 定义不包括我用来计算下面最终 table 的所有行。换句话说,对 5 行数据执行 "cor" 显然不会产生相同的结果。
M<-cor(#example)
现在我希望这个最终的 table 看起来一样,除了 Base_State 的开头会有一个额外的列。 (此外,我只需要此 table 的第一行,因为我想要基于 "M" 的所有内容,但我可以稍后解决)。
使用 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))