标签: lm

R中线性模型的系数和总结的不同NA动作

在R中,当lm()我使用时,如果我na.action = na.pass在调用中设置lm(),那么在汇总表中,对于任何无法估计的系数都存在NA(因为在这种情况下缺少单元格).

但是,如果我只提取从摘要对象的系数,即使用summary(myModel)$coefficientscoef(summary(myModel)),那么NA的省略.

当我提取系数时,我希望包含NA,就像我打印摘要时一样.有没有办法做到这一点?

设置options(na.action = na.pass)似乎没有帮助.

这是一个例子:

> set.seed(534)
> myGroup1 <- factor(c("a","a","a","a","b","b"))
> myGroup2 <- factor(c("first","second","first","second","first","first"))
> myDepVar <- rnorm(6, 0, 1)
> myModel <- lm(myDepVar ~ myGroup1 + myGroup2 + myGroup1:myGroup2)
> summary(myModel)

Call:
lm(formula = myDepVar ~ myGroup1 + myGroup2 + myGroup1:myGroup2)

Residuals:
       1        2        3        4        5        6 
-0.05813  0.55323  0.05813 -0.55323 -0.12192  0.12192 

Coefficients: (1 not defined because of singularities)
                    Estimate …
Run Code Online (Sandbox Code Playgroud)

r summary lm na

10
推荐指数
1
解决办法
3073
查看次数

在R线性模型中,仅获得相互作用系数的p值

如果我在R中有一个线性模型的汇总表,我怎样才能得到仅与交互估计相关联的p值,或者只是组拦截等,而不必计算行数?

例如,对于lm(y ~ x + group)具有x连续和group分类的模型,lm对象的汇总表具有以下估计值:

  1. 拦截
  2. x,所有组的斜率
  3. 5与整体拦截的组内差异
  4. 5与整体坡度的组内差异.

我想找出一种方法将每个这些作为一组p值,即使组的数量或模型公式发生变化.也许汇总表以某种方式用于将行组合在一起的信息?

以下是具有两个不同模型的示例数据集.第一个模型有四组不同的p值我可能想单独得到,而第二个模型只有两组p值.

x <- 1:100
groupA <- .5*x + 10 + rnorm(length(x), 0, 1)
groupB <- .5*x + 20 + rnorm(length(x), 0, 1)
groupC <- .5*x + 30 + rnorm(length(x), 0, 1)
groupD <- .5*x + 40 + rnorm(length(x), 0, 1)
groupE <- .5*x + 50 + rnorm(length(x), 0, 1)
groupF <- .5*x + 60 + rnorm(length(x), 0, 1)

myData <- data.frame(x …
Run Code Online (Sandbox Code Playgroud)

r lm

10
推荐指数
2
解决办法
6136
查看次数

如何从线性模型(lm)预测x值

我有这个数据集:

x <- c(0, 40, 80, 120, 160, 200)
y <- c(6.52, 5.10, 4.43, 3.99, 3.75, 3.60)
Run Code Online (Sandbox Code Playgroud)

我使用lm()以下方法计算了线性模型

model <- lm(y ~ x)
Run Code Online (Sandbox Code Playgroud)

我想知道x如果我有新y值的预测值,例如ynew <- c(5.5, 4.5, 3.5),但如果我使用该predict()函数,它只计算新y值.

x如果我有新y值,如何预测新值?

r predict lm

10
推荐指数
2
解决办法
1万
查看次数

在R中以对数刻度拟合数据到数据

基本上,一旦它是对数刻度,我不知道如何在我的数据上绘制最佳拟合线.我使用lm()和abline()在我的绘图上放置了一个线性回归趋势线,但是现在添加了log ="xy",这只会产生一条水平线.

在此输入图像描述

这是我正在尝试做的一个非常简单的例子(但是这里完全没有这条线):

lengths = c(10000,3000,3005,3005,3010,20000)
counts = c(3,1,1,2,1,3)
line=lm(counts~lengths)
plot(lengths, counts, col="green", log="xy")
abline(line, col="blue")
Run Code Online (Sandbox Code Playgroud)

我已经尝试了很多我在类似问题上找到的东西(例如使用log10()lines()),但他们没有使用我的数据.

plot r lm

10
推荐指数
1
解决办法
8788
查看次数

重复重采样功能1000次?使用lapply?

请我出去!我感谢任何帮助!谢谢!

重复进行1000次重复采样我遇到了麻烦.我尝试使用replicate()来做到这一点,但它不起作用.有没有其他方法可以做到这一点?任何人都可以告诉我,如果这可能通过使用lapply完成?以下是我的代码:

#sampling 1000 betas0 & 1 (coefficients) from the data
get.beta=function(data,indices){ 
  data=data[indices,] #let boot to select sample
  lm.out=lm(y ~ x,data=data)
  return(lm.out$coefficients)
}
n=nrow(data)
get.beta(data,1:n)

bootcoe=boot(data,get.beta,R=1000) #generate 1000 random samples
head(bootcoe$t) #look at the betas
Run Code Online (Sandbox Code Playgroud)

从上面的代码我可以通过随机抽样数据得到1000 betas0&1.而且我想做1000次以获得不同的测试版.除了replicate()之外我该怎么做呢?

r lm statistics-bootstrap

10
推荐指数
1
解决办法
4万
查看次数

如何用ggplot绘制lm()的残差?

我想有一个很好的关于我从lm()模型得到的残差的情节.目前我使用plot(model$residuals),但我希望有更好的东西.如果我尝试使用ggplot绘制它,我会收到错误消息:

ggplot2不知道如何处理类numeric的数据

r ggplot2 lm

10
推荐指数
2
解决办法
1万
查看次数

使用`weights`参数在`lapply`中调用`lm`时出错

lmlapply使用weights参数调用时,我遇到了一种奇怪的行为.

我的代码包含一个公式列表,我在其中运行一个我调用的线性模型lapply.到目前为止,它正在运作:

dd <- data.frame(y = rnorm(100),
                 x1 = rnorm(100),
                 x2 = rnorm(100),
                 x3 = rnorm(100),
                 x4 = rnorm(100),
                 wg = runif(100,1,100))

ls.form <- list(
  formula(y~x1+x2),
  formula(y~x3+x4),
  formula(y~x1|x2|x3),
  formula(y~x1+x2+x3+x4)
)

res.no.wg <- lapply(ls.form, lm, data = dd)
Run Code Online (Sandbox Code Playgroud)

但是,当我添加weights参数时,我得到一个奇怪的错误:

res.with.wg <- lapply(ls.form, lm, data = dd, weights = dd[,"wg"])
Error in eval(extras, data, env) : 
  ..2 used in an incorrect context, no ... to look in
Run Code Online (Sandbox Code Playgroud)

这就像如果...lapply与被发生冲突... …

r lapply lm

10
推荐指数
2
解决办法
380
查看次数

分类变量的所有系数均具有“与平均值的差异”的模型;得到“对比编码”来做到这一点?

假设我们想做一个简单的“收入描述模型”。假设我们有三个组,北部、中部和南部(想想美国地区)。\n比较其他相似的组,假设北部的平均收入为 130,中部为 80,南部为 60。假设组规模相等,则平均值为90.

\n

在(线性回归)模型中,应该有一种方法将系数报告为与总体平均值的差异(在多变量上下文中,\xe2\x80\x98所有其他都等于\xe2\x80\x99)并为每个系数获取一个:

\n

$\\beta_{北} = 40$

\n

$\\beta_{中心} = -10$

\n

$\\beta_{南} = -30$

\n

显然,要跳过拦截。

\n

这对我来说似乎是最直观的。但我可以\xe2\x80\x99t在我的一生中弄清楚如何使用R\xe2\x80\x99s\xe2\x80\x98对比编码\xe2\x80\x99来得到这个。(而且,这似乎弄乱了变量名称)。

\n

为我的模拟/mwe 设置参数

\n
m_inc <- 90\nb_n <- 40\nb_c  <- -10\nb_s <- -30\n\nsd_prop <- 0.5 #sd as share of mean\npop_per <- 1000 \n
Run Code Online (Sandbox Code Playgroud)\n

模拟数据

\n
\nset.seed(100)\n\nn_income <- rnorm(pop_per, m_inc + b_n, (m_inc + b_n)*sd_prop)\nc_income <- rnorm(pop_per, m_inc + b_c, (m_inc + b_s)*sd_prop)\ns_income <- rnorm(pop_per, m_inc + b_s, (m_inc + b_s)*sd_prop)\n\nnoise_var <- rnorm(pop_per*3, 0, (m_inc + b_s)*sd_prop)\n\ni_df <- …
Run Code Online (Sandbox Code Playgroud)

r linear-regression lm

10
推荐指数
1
解决办法
767
查看次数

在R中选择哪个级别是lm回归中的因子的基本类别的最佳方式

假设我想使用lmfactor作为右侧变量运行回归.选择因子中哪个级别为基本类别(排除以避免多重共线性的级别)的最佳方法是什么.请注意,我对排除拦截不感兴趣,因为我有很多因素.

我还想要一个基于公式的解决方案,而不是直接作用于data.frame的解决方案,尽管如果你认为你有一个非常好的解决方案,请发布它.

我的解决方案是:

base_cat <- function(x) c(x,1:(x-1),(x+1):100) 
a_reg <- lm(y ~ x1 + x2 + factor(x3, levels=base_cat(30)) #suppose that x3 has draws from the integers 1 to 100.
Run Code Online (Sandbox Code Playgroud)

左边的类别lm是因子中的第一个级别,因此这只是重新排序级别,以便指定的级别是第一个级别base_cat(),然后将其余级别放在后面.

还有其他想法吗?

r lm r-factor

9
推荐指数
1
解决办法
1770
查看次数

数据帧错误*tmp*替换x数据有y

我是R的初学者.这是一个非常简单的代码,我试图保存剩余项:

# Create variables for child's EA:

dat$cldeacdi <- rowMeans(dat[,c('cdcresp', 'cdcinv')],na.rm=T)
dat$cldeacu <- rowMeans(dat[,c('cucresp', 'cucinv')],na.rm=T)

# Create a residual score for child EA:

dat$cldearesid <- resid(lm(cldeacu ~ cldeacdi, data = dat))
Run Code Online (Sandbox Code Playgroud)

我收到以下消息:

Error in `$<-.data.frame`(`*tmp*`, cldearesid, value = c(-0.18608488908881,  : 
  replacement has 366 rows, data has 367
Run Code Online (Sandbox Code Playgroud)

我搜索了这个错误,但找不到任何可以解决这个问题的东西.另外,我为妈妈的EA创建了完全相同的代码,它保存了残差,没有错误.如果有人能帮我解决这个问题,我将不胜感激.

regression r lm

9
推荐指数
1
解决办法
4万
查看次数