gmodels::fit.contrast 等效于 Python

问题描述 投票:0回答:1

我想测试两种给予动物的药物之间的协同作用,我测量了每组 15 只动物在不同时间点的肿瘤生长。

我使用 Bliss 独立协同的统计检验,它是从线性模型的原理和 t 分布的性质导出的修改后的 t 统计量。该统计数据本质上衡量的是综合效应与个体效应总和之间的差异,正如“其他地方很好地描述的”。 R 中的代码使用了带有对比矩阵的简单方法:

model.fit <- lm(lnTV ~ lnTV.baseline + Group, data = TV.data.day) fit.combo <- gmodels::fit.contrast(model.fit, "Group", c(1, -1, -1, 1), conf.int = 0.9, df = TRUE)

有没有办法利用Python中的对比矩阵,例如使用带有
statsmodels.stats.contrast

的任何东西的

patsy.constrasts
?我无法翻译文档
对比度概述
对比度编码系统中描述的方法。

python r statistics statsmodels patsy
1个回答
0
投票

创建一个将调用

fit.contrast

 的 R 函数
# code.R library("gmodels") myfunction= function(dataset){ dataset$Group <- as.factor(dataset$Group) model.fit <- lm(lnTV ~ baseline + Group, data = dataset) fit.combo <- gmodels::fit.contrast(model.fit, "Group", c(1, -1, -1, 1), conf.int = 0.9, df = TRUE) fit.combo }

然后从python调用它:

# script.py import rpy2.robjects as robjects from rpy2.robjects import pandas2ri import pandas as pd import numpy as np r = robjects.r r['source']('code.R') # preload code from the R file # sample dataset, replace with any other data data = pd.DataFrame({"lnTV": np.random.random(size=20), "baseline": np.random.random(size=20), "Group":np.random.randint(1,5, size=20) }) with (robjects.default_converter + pandas2ri.converter).context(): # Loading the function we have defined in R. myfunction_r = robjects.globalenv['myfunction'] dd = myfunction_r(data) # this will call your R funciton # output derived from the R function print(dd)

	
© www.soinside.com 2019 - 2024. All rights reserved.