r中线性回归的数据争论

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

我正在尝试使用lm()函数在r中运行线性回归,但是我得到了各种错误,但是我更改了数据。我想看看父母性别,孩子性别和父母分数是否可以预测儿童分数。我的代码是:

mod1 <- lm(score_child ~ score_parent*parent_child*female_male, data=dat, na.action = na.pass)

数据目前看起来像这样:

Subject   Family_number  female_male   parent_child  score_child   score_parent 
1         1               1             0             230           NA
2         1               0             1             NA            400
3         1               0             0             450           NA
4         2               1             1             NA            500
5         2               1             0             500           NA                
.

我知道如果数据是长格式会更容易,因为我需要分开孩子和家长,我认为这是最好的方法。 NAs给了我很多的悲伤,我已经尝试了每个na.action命令,但我得到错误,例如lm.fit中的Error(x,y,offset = offset,singular.ok = singular.ok,...) :'x'中的NA / NaN / Inf。

兽的方法是改变lm()中的NA命令,改变我的数据的布局,如果是,那么我将如何以及如何在lm()中指定子和父分数?

奖金问题;这些孩子任何父母都是家庭的一部分,我最好分析家庭小组的数据。这是否需要每个家庭一次回归,如果是这样,这不会影响我的自信区间吗?

我的论文和我自己会非常感谢任何帮助!

朱莉娅

r linear-regression
1个回答
1
投票

lm要求每个单元在一行中,而不是分成两行。假设每个单元只包含一个父节点和一个子节点,并且每对元素在数据框中的相邻行中相互跟随,使得行1和2形成一个单元,3和4形成一个单元,依此类推可以将父行和子行提取到ParentChild数据帧中。这些行具有相同的行数,因此我们可以将它们组合在一起并合理化组合数据帧的列名称,现在将具有cbind行。请注意,下面显示的nrow(DF)/2没有NA值。

DF2

Parent <- subset(DF, is.na(score_child)) Child <- subset(DF, is.na(score_parent)) DF2 <- cbind( with(Parent, data.frame(subj_parent = Subject, sex_parent = female_male, score_parent)), with(Child, data.frame(subj_child = Subject, sex_child = female_male, score_child)) ) lm(score_child ~ score_parent * sex_child * sex_parent, DF2) 看起来像这样:

DF2

注意

我们假设输入以可重现的形式出现:

> DF2
  subject_parent sex_parent score_parent subject_child sex_child score_child
1              2          0          400             1         1         230
2              4          1          500             3         0         450
© www.soinside.com 2019 - 2024. All rights reserved.