这是我使用的一些示例数据
mydata <-
data.frame(
GeneticSite = c(1,1,1,1,1,1,1,1),
GeneticSite1 = c(2,3,2,3,2,3,2,3),
Age = c(17, 52, 19, 18, 62, 53, 41, 24),
Gender = c(1,2,1,1,2,2,2,1),
Outcome = c(1,1,1,1,0,0,0,1)
)
然后我使用library(dplyr) 对数据进行更长时间的旋转,以便我们可以按所有遗传位点进行分组。然后我创建线性回归函数 Age + Gender 并使用 summary 来获取我用来计算 OR 值的所有系数。
Linear_regression <- mydata %>%
pivot_longer(starts_with("GeneticSite"),
names_to = ".value",
names_pattern = "(^GeneticSite)") %>%
group_by(GeneticSite) %>%
do(Reg = lm(Outcome ~ Age + Gender, data = .)) %>%
summarise(GeneticSite,rsq = summary(Reg)$r.squared,
Intercept_Estimate = summary(Reg)$coefficients[1],
Age_Estimate = summary(Reg)$coefficients[2],
Gender_Estimate = summary(Reg)$coefficients[3],
Intercept_Std_Error = summary(Reg)$coefficients[4],
Age_Std_Error = summary(Reg)$coefficients[5],
Gender_Std_Error = summary(Reg)$coefficients[6],
Intercept_t_value = summary(Reg)$coefficients[7],
Age_t_value = summary(Reg)$coefficients[8],
Gender_t_value = summary(Reg)$coefficients[9],
Intercept_p_value = summary(Reg)$coefficients[10],
Age_p_value = summary(Reg)$coefficients[11],
Gender_p_value = summary(Reg)$coefficients[12]) %>%
mutate(OR_Estimate = exp(Intercept_Estimate)/(1+exp(Intercept_Estimate))) %>%
mutate(OR_Age = exp(Age_Estimate)/(1+exp(Age_Estimate))) %>%
mutate(OR_Gender = exp(Age_Estimate)/(1+exp(Age_Estimate)))
这就是我知道如何标记每一列的方式
> summary(y)$coefficients
Estimate Std. Error t value Pr(>|t|)
(Intercept) 1.750000e+00 0.3331066 5.253574e+00 0.0001558944
x$Age 9.688771e-18 0.0151608 6.390673e-16 1.0000000000
x$Gender -7.500000e-01 0.5211766 -1.439052e+00 0.1737764924
示例输出:
"GeneticSite","rsq","Intercept_Estimate","Age_Estimate","Gender_Estimate","Intercept_Std_Error","Age_Std_Error","Gender_Std_Error","Intercept_t_value","Age_t_value","Gender_t_value","Intercept_p_value","Age_p_value","Gender_p_value","OR_Estimate","OR_Age","OR_Gender"
"1",1,0.6,1.75,-9.13466064460698e-18,-0.749999999999999,0.537118251352767,0.0244460541141712,0.840372000724438,3.25812797385401,-3.73666056777305e-16,-0.892461908956351,0.0224922711346427,1,0.413031579096883,0.85195280196831,0.5,0.5
"2",2,1,2,9.08261087251563e-18,-1,4.20114922415409e-16,1.48859041349867e-17,5.45878506026351e-16,4760602143102169,0.610148418944103,-1831909461464908,1.33726733138161e-16,0.651229019050892,3.47517050246851e-16,0.880797077977882,0.5,0.5
"3",3,0.351351351351351,1.21621621621622,-0.0270270270270271,0.351351351351353,2.0286480005184,0.162162162162162,5.15550724280418,0.599520575233073,-0.166666666666667,0.0681506852389265,0.656182728286001,0.894863086577493,0.956680908817521,0.771396988381907,0.493243654508354,0.493243654508354