【问题标题】:Data wrangling for linear regression in rr中线性回归的数据争论
【发布时间】:2018-08-10 14:34:27
【问题描述】:

我正在尝试使用 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                
.

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

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

奖金问题;这些孩子任何父母都是家庭的一部分,理想情况下,我想分析家庭组中的数据。这是否需要每个家庭进行一次回归,如果需要,这不会影响我的置信区间吗?

我的论文和我本人将非常感谢任何帮助!

朱莉娅

【问题讨论】:

  • 在您显示的数据样本中,没有NA 值就没有观察结果。目前尚不清楚您期望线性回归函数如何处理该问题(提示:它不能)。
  • 另外,您可能需要另一种分析。您应该与当地的统计学家交谈。
  • 是的,我正在尝试更改布局以使其以某种方式工作。不过谢谢!
  • 你也有你试图预测score_child的问题,其中一些是NA。作为第一步,您需要过滤掉这些行。

标签: r linear-regression


【解决方案1】:

lm 要求每个单元在一行中,而不是分布在两行中。假设每个单元恰好由一个父单元和一个子单元组成,并且每一对的元素在数据框中的相邻行中彼此跟随,因此第 1 行和第 2 行形成一个单元,第 3 和第 4 行形成一个单元,依此类推,那么我们可以将父行和子行提取到Parent 和Child 数据帧中。这些将具有相同的行数,因此我们可以将它们cbind 放在一起并合理化组合数据框的列名,现在将具有nrow(DF)/2 行。请注意,下面稍后显示的 DF2 没有 NA 值。

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

注意

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

Lines <- "
Subject   female_male   parent_child  score_child   score_parent
1         1             0             230           NA
2         0             1             NA            400
3         0             0             450           NA
4         1             1             NA            500"
DF <- read.table(text = Lines, header = TRUE)

【讨论】:

  • 感谢您的帮助和抽出宝贵时间!但是,有些家庭有两个父母和一个孩子或两个孩子和一个父母。我被告知要运行一个混合效应模型来保留家庭结构。
  • 主题代表家庭吗?
  • 只要数据采用问题中显示的形式,并且父子行相邻,那么上述方法仍然有效。这意味着任何有两个父母的孩子都显示为两个相同的行,任何有两个孩子的父母都显示为两个相同的行。如果不是这种情况,那么问题没有正确描述数据以及如何将父行链接到子行。此外,您使用混合效应模型还是固定效应模型与这一切无关。
  • 我现在已经编辑了数据集。我认为添加家庭号码的因素太复杂了,但使用混合效果我可以做到这一点。如有任何混淆,我们深表歉意。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-21
  • 2013-02-11
  • 2011-09-10
  • 2022-01-24
  • 1970-01-01
  • 2022-01-11
相关资源
最近更新 更多