cxzdsa2332 / FunGraph

A statistical protocol to reconstruct omnigenic multilayer interactome networks for complex traits
1 stars 2 forks source link

pheno data only has one trait can be analyzed? #1

Open xiahui625649 opened 2 years ago

xiahui625649 commented 2 years ago

示例里的表型数据包含control和treatment两组,但是对于一般只有一个表型的数据呢?可以分析吗?

cxzdsa2332 commented 2 years ago

对于一个表型的数据需要有多次时间点的测量才能进行FunMap及后续分析; 目前提供的函数可能conver不了不分组的数据,但模型是一样的

xiahui625649 commented 2 years ago

如果想要分析单个性状的话,如果只是构建modified logistic 模型,该怎么实现呢?

在 2021-12-22 18:38:15,"ddaa" @.***> 写道:

对于一个表型的数据需要有多次时间点的测量才能进行FunMap及后续分析; 目前提供的函数可能conver不了不分组的数据,但模型是一样的

— Reply to this email directly, view it on GitHub, or unsubscribe. Triage notifications on the go with GitHub Mobile for iOS or Android. You are receiving this because you authored the thread.Message ID: @.***>

cxzdsa2332 commented 2 years ago

我写了一个L0作为参考,可以和FunGraph里的biFunMap.R进行对应修改L1,L2

data(pheno) df = pheno[,1:10] L0 <- function(y_all, par, times){ n = length(times) mu <- get_mu(par[1:5],times) SAD1<- get_SAD1_covmatrix(par[6:7],n) L0 <- -sum(dmvnorm(y_all,mu,SAD1,log = T)) return(L0) } init.pars = c(14,10,0.5,-2,2, 0.95,12) pars.hat = optim(init.pars, L0, y_all = df, times = 1:10, method = "BFGS")$par mu.est = get_mu(pars.hat[1:5], times = 1:10)

require(reshape2) colnames(df) = 1:10 plot.df <- melt(as.matrix(df)) df2 = data.frame(times = 1:10, mu.est = mu.est)

ggplot() + geom_line(plot.df, mapping = aes(x = Var2, y = value, group = Var1), color = 'firebrick', alpha = 0.5) + geom_line(df2, mapping = aes(x = times, y = mu.est), size = 2)

xiahui625649 commented 2 years ago

感谢回复,init.pars里前五个是modified logistic 模型的参数,后两个是构建SAD(结构前依赖)方差协方差矩阵参数,那这些参数的初始值该怎么定义呢,或者说怎么根据自己的数据给与合理的初始值呢?,因为我在FunGraph没找到相关函数,谢谢!

在 2021-12-23 10:48:07,"ddaa" @.***> 写道:

我写了一个L0作为参考,可以和FunGraph里的biFunMap.R进行对应修改L1,L2

data(pheno) df = pheno[,1:10] L0 <- function(y_all, par, times){ n = length(times) mu <- get_mu(par[1:5],times) SAD1<- get_SAD1_covmatrix(par[6:7],n) L0 <- -sum(dmvnorm(y_all,mu,SAD1,log = T)) return(L0) } init.pars = c(14,10,0.5,-2,2, 0.95,12) pars.hat = optim(init.pars, L0, y_all = df, times = 1:10, method = "BFGS")$par mu.est = get_mu(pars.hat[1:5], times = 1:10)

require(reshape2) colnames(df) = 1:10 plot.df <- melt(as.matrix(df)) df2 = data.frame(times = 1:10, mu.est = mu.est)

ggplot() + geom_line(plot.df, mapping = aes(x = Var2, y = value, group = Var1), color = 'firebrick', alpha = 0.5) + geom_line(df2, mapping = aes(x = times, y = mu.est), size = 2)

— Reply to this email directly, view it on GitHub, or unsubscribe. Triage notifications on the go with GitHub Mobile for iOS or Android. You are receiving this because you authored the thread.Message ID: @.***>

cxzdsa2332 commented 2 years ago

对于均值曲线的参数,前三个控制标准logistic curve,第一个是asymptote 控制最大量,第二和三个参数控制曲线的形状,也可以使用自启动函数(SSlogis),不考虑modified的情况下自动给定参数作为初参, 后两个参数倾向认为第一个参数是小于0的(限制生长),第二个参数可以根据数据设置稍小; 对于协方差矩阵的初始参数给定,通常生成的矩阵形式和数据原始的协方差矩阵尽量接近即可 更好的一个初始参数的例子是init.pars = c(30,10,0.5,0.1,-0.1, 1.1,5)

xiahui625649 commented 2 years ago

意思是可以将modified logistic换成任意其他可以自启的模型,如SSgompertz,SSweibull等?另外,不同的初始值optim获得的结果不一样,该怎么选取呢?有什么评价方法吗,还是说比较L0的大小?还有我看help文档里phen里是将缺失值替换为0处理的,在growth trajectory里就是有些值突然变为0,然后又上升了,这在模型拟合时不会造成影响吗?如果是树木生长表型,感觉好像非常不合理,是不是应该删除掉,或者估计填补比较好?谢谢!

在 2021-12-24 15:56:08,"ddaa" @.***> 写道:

对于均值曲线的参数,前三个控制标准logistic curve,第一个是asymptote 控制最大量,第二和三个参数控制曲线的形状,也可以使用自启动函数(SSlogis),不考虑modified的情况下自动给定参数作为初参, 后两个参数倾向认为第一个参数是小于0的(限制生长),第二个参数可以根据数据设置稍小; 对于协方差矩阵的初始参数给定,通常生成的矩阵形式和数据原始的协方差矩阵尽量接近即可 更好的一个初始参数的例子是init.pars = c(30,10,0.5,0.1,-0.1, 1.1,5)

— Reply to this email directly, view it on GitHub, or unsubscribe. Triage notifications on the go with GitHub Mobile for iOS or Android. You are receiving this because you authored the thread.Message ID: @.***>

xiahui625649 commented 2 years ago

方便的话,可以留个邮箱联系吗?谢谢。

在 2021-12-24 15:56:08,"ddaa" @.***> 写道:

对于均值曲线的参数,前三个控制标准logistic curve,第一个是asymptote 控制最大量,第二和三个参数控制曲线的形状,也可以使用自启动函数(SSlogis),不考虑modified的情况下自动给定参数作为初参, 后两个参数倾向认为第一个参数是小于0的(限制生长),第二个参数可以根据数据设置稍小; 对于协方差矩阵的初始参数给定,通常生成的矩阵形式和数据原始的协方差矩阵尽量接近即可 更好的一个初始参数的例子是init.pars = c(30,10,0.5,0.1,-0.1, 1.1,5)

— Reply to this email directly, view it on GitHub, or unsubscribe. Triage notifications on the go with GitHub Mobile for iOS or Android. You are receiving this because you authored the thread.Message ID: @.***>

cxzdsa2332 commented 2 years ago

意思是可以将modified logistic换成任意其他可以自启的模型,如SSgompertz,SSweibull等?另外,不同的初始值optim获得的结果不一样,该怎么选取呢?有什么评价方法吗,还是说比较L0的大小?还有我看help文档里phen里是将缺失值替换为0处理的,在growth trajectory里就是有些值突然变为0,然后又上升了,这在模型拟合时不会造成影响吗?如果是树木生长表型,感觉好像非常不合理,是不是应该删除掉,或者估计填补比较好?谢谢! 在 2021-12-24 15:56:08,"ddaa" @.> 写道: 对于均值曲线的参数,前三个控制标准logistic curve,第一个是asymptote 控制最大量,第二和三个参数控制曲线的形状,也可以使用自启动函数(SSlogis),不考虑modified的情况下自动给定参数作为初参, 后两个参数倾向认为第一个参数是小于0的(限制生长),第二个参数可以根据数据设置稍小; 对于协方差矩阵的初始参数给定,通常生成的矩阵形式和数据原始的协方差矩阵尽量接近即可 更好的一个初始参数的例子是init.pars = c(30,10,0.5,0.1,-0.1, 1.1,5) — Reply to this email directly, view it on GitHub, or unsubscribe. Triage notifications on the go with GitHub Mobile for iOS or Android. You are receiving this because you authored the thread.Message ID: @.>

对于这种modified logistic不确定初参的选取,由于公式的前半部是按logistic curve的形式,可以尝试用logisitc curve拟合获得的参数作为初参; 评价方法可以看不同参数下似然值更大的更好;缺失的表型替换成0确实是比较粗暴简单的方法,更好的方法是对模型进行一些修改,重写似然函数,可以参考这篇文章https://doi.org/10.1093/biostatistics/kxi019 邮箱:fantasys05227@gmail.com

xiahui625649 commented 2 years ago

已发邮件求助,望回复,谢谢!

在 2021-12-24 18:39:31,"ddaa" @.***> 写道:

意思是可以将modified logistic换成任意其他可以自启的模型,如SSgompertz,SSweibull等?另外,不同的初始值optim获得的结果不一样,该怎么选取呢?有什么评价方法吗,还是说比较L0的大小?还有我看help文档里phen里是将缺失值替换为0处理的,在growth trajectory里就是有些值突然变为0,然后又上升了,这在模型拟合时不会造成影响吗?如果是树木生长表型,感觉好像非常不合理,是不是应该删除掉,或者估计填补比较好?谢谢! 在 2021-12-24 15:56:08,"ddaa" @.> 写道: 对于均值曲线的参数,前三个控制标准logistic curve,第一个是asymptote 控制最大量,第二和三个参数控制曲线的形状,也可以使用自启动函数(SSlogis),不考虑modified的情况下自动给定参数作为初参, 后两个参数倾向认为第一个参数是小于0的(限制生长),第二个参数可以根据数据设置稍小; 对于协方差矩阵的初始参数给定,通常生成的矩阵形式和数据原始的协方差矩阵尽量接近即可 更好的一个初始参数的例子是init.pars = c(30,10,0.5,0.1,-0.1, 1.1,5) — Reply to this email directly, view it on GitHub, or unsubscribe. Triage notifications on the go with GitHub Mobile for iOS or Android. You are receiving this because you authored the thread.Message ID: @.>

对于这种modified logistic不确定初参的选取,由于公式的前半部是按logistic curve的形式,可以尝试用logisitc [curve拟合获得的参数作为初参; 评价方法可以看不同参数下似然值更大的更好;缺失的表型替换成0确实是比较粗暴简单的方法,更好的方法是对模型进行一些修改,重写似然函数,可以参考这篇文章https://doi.org/10.1093/biostatistics/kxi019 @.***

— Reply to this email directly, view it on GitHub, or unsubscribe. Triage notifications on the go with GitHub Mobile for iOS or Android. You are receiving this because you authored the thread.Message ID: @.***>