使用 lmodel2 包从简化的长轴回归模型中获取回归系数
Obtaining regression coefficients from reduced major axis regression models using lmodel2 package
我有一个大数据集,我正在用它进行许多回归分析。我在 r 的 lmodel2
包中使用了简化的长轴回归。我需要做的是从 RMA 模型中提取回归系数(r 平方、p 值、斜率和截距)。我可以使用 OLS 回归轻松地做到这一点:
RSQ<-summary(model)$r.squared
PVAL<-summary(model)$coefficients[2,4]
INT<-summary(model)$coefficients[1,1]
SLOPE<-summary(model)$coefficients[2,1]
然后将它们导出为 .csv
export<-data.frame(RSQ,PVAL,INT,SLOPE)
write.csv(export, file="FILE_NAME.csv",row.names=F)
这些命令似乎不适用于 lmodel2
回归。有人知道怎么做吗?
这里是一小部分数据:
x y
0.440895993 227.7
0.294277869 296.85
0.171754892 298.05
0 427.65
0.210884179 215.55
0.053238011 293.7
0.105395366 127.9
0.463933834 229.5
0 165.45
0.482128605 192.15
0.247341039 266.9
0 349.35
0.198833301 185.05
0.170786027 203.85
0.269818315 207.05
0.129543682 222.75
0.441665334 251.35
0 262.8
0.517974685 107.05
0.446336968 191.6
以及我正在使用的模型 II 回归代码
library(lmodel2)
data<-sample_data
mod_2<-lmodel2(y~x,data=data,"interval","interval",99)
mod_2
这个呢?
# making data reproducable
data <- read.table(text = "x y
0.440895993 227.7
0.294277869 296.85
0.171754892 298.05
0 427.65
0.210884179 215.55
0.053238011 293.7
0.105395366 127.9
0.463933834 229.5
0 165.45
0.482128605 192.15
0.247341039 266.9
0 349.35
0.198833301 185.05
0.170786027 203.85
0.269818315 207.05
0.129543682 222.75
0.441665334 251.35
0 262.8
0.517974685 107.05
0.446336968 191.6", header = TRUE)
#estimate model
library(lmodel2)
mod_2 <- lmodel2(y ~ x, data = data, "interval", "interval", 99) # 99% ci
简单看一下summary()
,它提供了有关模型统计信息如何保存的信息。 (您也可以尝试 str()
)。
# view summary
summary(mod_2)
# Length Class Mode
# y 20 -none- numeric
# x 20 -none- numeric
# regression.results 5 data.frame list
# confidence.intervals 5 data.frame list
# eigenvalues 2 -none- numeric
# H 1 -none- numeric
# n 1 -none- numeric
# r 1 -none- numeric
# rsquare 1 -none- numeric
# P.param 1 -none- numeric
# theta 1 -none- numeric
# nperm 1 -none- numeric
# epsilon 1 -none- numeric
# info.slope 1 -none- numeric
# info.CI 1 -none- numeric
# call 6 -none- call
可以看出,GOF 的变量名称(您称它们为 'commands')是包特定的。您可以 select 通过在 $
运算符之后将它们添加到模型的对象名称中。
# Getting r squared
(RSQ <- mod_2$rsquare)
# [1] 0.1855163
对于系数及其统计数据 lmodel2
想要 $regression.results
。
mod_2$regression.results
# Method Intercept Slope Angle (degrees) P-perm (1-tailed)
# 1 OLS 277.2264 -177.0317 -89.67636 0.04
# 2 MA 457.7304 -954.2606 -89.93996 0.04
# 3 SMA 331.5673 -411.0173 -89.86060 NA
# 4 RMA 296.6245 -260.5577 -89.78010 0.04
# wanted results from the RMA model
(INT <- mod_2$regression.results[[2]][4])
# [1] 296.6245
(SLOPE <- mod_2$regression.results[[3]][4])
# [1] -260.5577
(PVAL <- mod_2$regression.results[[5]][4])
# [1] 0.04
# Combined together in a data frame:
data.frame(RMA = rbind(INT, SLOPE, PVAL))
# RMA
# INT 296.6245
# SLOPE -260.5577
# PVAL 0.0400
我有一个大数据集,我正在用它进行许多回归分析。我在 r 的 lmodel2
包中使用了简化的长轴回归。我需要做的是从 RMA 模型中提取回归系数(r 平方、p 值、斜率和截距)。我可以使用 OLS 回归轻松地做到这一点:
RSQ<-summary(model)$r.squared
PVAL<-summary(model)$coefficients[2,4]
INT<-summary(model)$coefficients[1,1]
SLOPE<-summary(model)$coefficients[2,1]
然后将它们导出为 .csv
export<-data.frame(RSQ,PVAL,INT,SLOPE)
write.csv(export, file="FILE_NAME.csv",row.names=F)
这些命令似乎不适用于 lmodel2
回归。有人知道怎么做吗?
这里是一小部分数据:
x y
0.440895993 227.7
0.294277869 296.85
0.171754892 298.05
0 427.65
0.210884179 215.55
0.053238011 293.7
0.105395366 127.9
0.463933834 229.5
0 165.45
0.482128605 192.15
0.247341039 266.9
0 349.35
0.198833301 185.05
0.170786027 203.85
0.269818315 207.05
0.129543682 222.75
0.441665334 251.35
0 262.8
0.517974685 107.05
0.446336968 191.6
以及我正在使用的模型 II 回归代码
library(lmodel2)
data<-sample_data
mod_2<-lmodel2(y~x,data=data,"interval","interval",99)
mod_2
这个呢?
# making data reproducable
data <- read.table(text = "x y
0.440895993 227.7
0.294277869 296.85
0.171754892 298.05
0 427.65
0.210884179 215.55
0.053238011 293.7
0.105395366 127.9
0.463933834 229.5
0 165.45
0.482128605 192.15
0.247341039 266.9
0 349.35
0.198833301 185.05
0.170786027 203.85
0.269818315 207.05
0.129543682 222.75
0.441665334 251.35
0 262.8
0.517974685 107.05
0.446336968 191.6", header = TRUE)
#estimate model
library(lmodel2)
mod_2 <- lmodel2(y ~ x, data = data, "interval", "interval", 99) # 99% ci
简单看一下summary()
,它提供了有关模型统计信息如何保存的信息。 (您也可以尝试 str()
)。
# view summary
summary(mod_2)
# Length Class Mode
# y 20 -none- numeric
# x 20 -none- numeric
# regression.results 5 data.frame list
# confidence.intervals 5 data.frame list
# eigenvalues 2 -none- numeric
# H 1 -none- numeric
# n 1 -none- numeric
# r 1 -none- numeric
# rsquare 1 -none- numeric
# P.param 1 -none- numeric
# theta 1 -none- numeric
# nperm 1 -none- numeric
# epsilon 1 -none- numeric
# info.slope 1 -none- numeric
# info.CI 1 -none- numeric
# call 6 -none- call
可以看出,GOF 的变量名称(您称它们为 'commands')是包特定的。您可以 select 通过在 $
运算符之后将它们添加到模型的对象名称中。
# Getting r squared
(RSQ <- mod_2$rsquare)
# [1] 0.1855163
对于系数及其统计数据 lmodel2
想要 $regression.results
。
mod_2$regression.results
# Method Intercept Slope Angle (degrees) P-perm (1-tailed)
# 1 OLS 277.2264 -177.0317 -89.67636 0.04
# 2 MA 457.7304 -954.2606 -89.93996 0.04
# 3 SMA 331.5673 -411.0173 -89.86060 NA
# 4 RMA 296.6245 -260.5577 -89.78010 0.04
# wanted results from the RMA model
(INT <- mod_2$regression.results[[2]][4])
# [1] 296.6245
(SLOPE <- mod_2$regression.results[[3]][4])
# [1] -260.5577
(PVAL <- mod_2$regression.results[[5]][4])
# [1] 0.04
# Combined together in a data frame:
data.frame(RMA = rbind(INT, SLOPE, PVAL))
# RMA
# INT 296.6245
# SLOPE -260.5577
# PVAL 0.0400