循环回归我曾尝试这个QA适用于:"efficient looping logistic regression in R"我自己的问题,但我不能完全使它发挥作用。我没有尝试过使用apply,但有人告诉我一个for循环在这里是最好的(如果有人相信,请随时解释!)我认为这个问题是相当普遍的,不是太深奥的论坛。已有多个变量和输出的一个子集
这就是我想实现的:我有3个预测变量(性别,年龄,种族)和几个人86个基因位置的因变量(比例)的数据集。我想要为每个位置运行双变量线性回归(因此,对于3个预测变量,所以需要86个线性回归)。然后,我想以一些易于阅读的格式输出结果;我的想法是一个矩阵,其中行=性别,年龄和种族,列= 86个职位。每行*列组合都会有一个p值。然后,我可以调用p值< 0.1(或任何我想要的阈值)来轻松查看哪些预测变量与每个位置的比例显着相关。
这是我到目前为止的代码。
BB <- seq.csv[,6:91] #the data frame containing the 86 positions
AA <- seq.csv[,2:4] #the data frame containing the 3 predictor variables
linreg <- matrix(NA,3,86) #make a results vector and fill it with NA
for (i in 1:86) #loop over each position variable
{
for (j in 1:3) #for each position variable, loop over each predictor
{
linreg[i,j] <- lm(BB[,i]~AA[,j]) #bivariate linear regression
}}
无论我如何改变这种(例如,它简化了遍历的位置只有一个预测),我仍然得到一个错误,我的矩阵是不一样的长度(项目取而代之的是数不是替换长度的倍数)。事实上,长度(linreg)= 286(3 * 86)和长度(BB)= 86,长度(AA)= 3。我知道后两个是数据框,而不是矩阵......但如果我将它们转换为矩阵,我会得到一个无效的类型错误(变量'BB [,i]'的无效类型(列表)')。我不知道如何解决这个错误,因为我只是不明白[R不够好。我查阅过的书籍应用统计遗传学有R和艺术[R编程无济于事,我一直在谷歌搜索整天。而且我还没有得到的编码输出的结果...
我会很感激的一种更好的方式调试任何提示或一些建议编写这个!谢谢大家。
我想你需要和统计学家交谈。我认为在你尝试自己编写代码之前,你已经头脑清醒,需要更好地理解这些问题。 – 2013-03-08 22:43:46
如果您发布数据结构的一部分,它可以帮助您更轻松地获得帮助。尝试粘贴输出(head(BB [,6:10]))和'dput(head(AA))'输出。 – 2013-03-08 22:55:29
这听起来像是我在博士学习中所做的一些令人遗憾的事情......请与统计顾问交谈! – alexwhan 2013-03-09 09:42:47