我有两个线性拟合,我从我的R脚本中的lm调用中获得.例如...
fit1 <- lm(y1 ~ x1)
fit2 <- lm(y2 ~ x2)
Run Code Online (Sandbox Code Playgroud)
我想找到这两条线(fit1和fit2)相交的(x,y)点,如果它们相交的话.
在R中,当一些系数由于奇点而被丢弃时,如何使用vcovHC()计算稳健的标准误差?标准的lm函数似乎可以很好地计算实际估计的所有系数的正常标准误差,但vcovHC()会抛出一个错误:"面包错误.%*%肉.:不一致的参数".
(我使用的实际数据有点复杂.事实上,它是一个使用两种不同固定效果的模型,我遇到局部奇点,我不能简单地摆脱它.至少我不知道如何.对于两个固定效应我使用第一个因子有150个级别,第二个有142个级别,总共有九个奇点,这是因为数据是在十个块中收集的.)
这是我的输出:
Call:
lm(formula = one ~ two + three + Jan + Feb + Mar + Apr + May +
Jun + Jul + Aug + Sep + Oct + Nov + Dec, data = dat)
Residuals:
Min 1Q Median 3Q Max
-130.12 -60.95 0.08 61.05 137.35
Coefficients: (1 not defined because of singularities)
Estimate Std. Error t value Pr(>|t|)
(Intercept) 1169.74313 57.36807 20.390 <2e-16 ***
two -0.07963 0.06720 -1.185 0.237
three -0.04053 0.06686 -0.606 0.545
Jan 8.10336 …Run Code Online (Sandbox Code Playgroud) 使用数据框
x
Date Val
1/1/2012 7
2/1/2012 9
3/1/2012 20
4/1/2012 24
5/1/2012 50
a <- seq(as.Date(tail(x, 1)$Date), by="month", length=5)
a <- data.frame(a)
x.lm <- lm(x$Val ~ x$Date)
x.pre<-predict(x.lm, newdata=a)
Run Code Online (Sandbox Code Playgroud)
我得到这个错误:
Warning message:
'newdata' had 5 rows but variable(s) found have 29 rows
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
这是输出输出:
dput(x)
structure(list(Date = structure(c(14610, 14641, 14669, 14700,
14730, 14761, 14791, 14822, 14853, 14883, 14914, 14944, 14975,
15006, 15034, 15065, 15095, 15126, 15156, 15187, 15218, 15248,
15279, 15309, 15340, 15371, 15400, 15431, 15461), class = "Date"), …Run Code Online (Sandbox Code Playgroud) 出于某种原因,当我指定glms(并且lm也是如此)时,R不会预测数据的缺失值.这是一个例子:
y = round(runif(50))
y = c(y,rep(NA,50))
x = rnorm(100)
m = glm(y~x, family=binomial(link="logit"))
p = predict(m,na.action=na.pass)
length(p)
y = round(runif(50))
y = c(y,rep(NA,50))
x = rnorm(100)
m = lm(y~x)
p = predict(m)
length(p)
Run Code Online (Sandbox Code Playgroud)
p的长度应该是100,但是它的50.奇怪的是,我在同一个脚本中有其他预测可以预测丢失的数据.
编辑:事实证明,那些其他预测是非常错误的 - 我正在做imputed.value = rnorm(N,mean.from.predict,var.of.prediction.interval).这回收了来自lm预测或glm预测函数的均值和sd向量length(predict)<N,这与我所寻求的完全不同.
所以我的问题是我的示例代码是什么阻止glm和lm预测缺失值?
谢谢!
当我尝试运行一个带有分类变量作为预测变量的简单线性模型时,我在R中遇到了问题.运行模型时,R会抛出错误
`Error in `contrasts<-`(`*tmp*`, value = contr.funs[1 + isOF[nn]]) : `
Run Code Online (Sandbox Code Playgroud)
但是,数据似乎没问题(下面附有数据集):
str(minimal)
'data.frame': 330 obs. of 2 variables:
$ swls : num 5.2 NaN 7 6 NaN NaN NaN NaN NaN NaN ...
$ exp.factor: Factor w/ 2 levels "erlebt","nicht erlebt": 1 1 1 1 2 2 2 2 NA 2 ...
Run Code Online (Sandbox Code Playgroud)
似乎数据中也有足够的变化,所以我发现的类似线程不适用于此:
table(minimal$exp.factor)
erlebt nicht erlebt
148 163
Run Code Online (Sandbox Code Playgroud)
`但是,lm()仍然拒绝工作:
lm(swls ~ exp.factor, data = minimal)
Fehler in `contrasts<-`(`*tmp*`, value = contr.funs[1 + isOF[nn]]) :
Kontraste können nur auf …Run Code Online (Sandbox Code Playgroud) 我正在对数据框中的一些变量进行线性回归.我希望能够通过分类变量对线性回归进行子集化,对每个分类变量运行线性回归,然后将t-stats存储在数据框中.如果可能的话,我想在没有循环的情况下这样做.
这是我正在尝试做的一个示例:
a<- c("a","a","a","a","a",
"b","b","b","b","b",
"c","c","c","c","c")
b<- c(0.1,0.2,0.3,0.2,0.3,
0.1,0.2,0.3,0.2,0.3,
0.1,0.2,0.3,0.2,0.3)
c<- c(0.2,0.1,0.3,0.2,0.4,
0.2,0.5,0.2,0.1,0.2,
0.4,0.2,0.4,0.6,0.8)
cbind(a,b,c)
Run Code Online (Sandbox Code Playgroud)
我可以从运行以下线性回归开始,非常容易地拉出t统计量:
summary(lm(b~c))$coefficients[2,3]
Run Code Online (Sandbox Code Playgroud)
但是,我希望能够在列a为a,b或c时运行回归.我想将t-stats存储在一个如下所示的表中:
variable t-stat
a 0.9
b 2.4
c 1.1
Run Code Online (Sandbox Code Playgroud)
希望有道理.如果您有任何建议,请告诉我!
我想在 R 中绘制一条简单的回归线。我已经输入了数据,但回归线似乎不正确。有人可以帮忙吗?
x <- c(10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120)
y <- c(10, 18, 25, 29, 30, 28, 25, 22, 18, 15, 11, 8)
df <- data.frame(x,y)
plot(y,x)
abline(lm(y ~ x))
Run Code Online (Sandbox Code Playgroud)
我想将一个lm对象持久化到一个文件并将其重新加载到另一个程序中.我知道我可以通过saveRDS/ 写入/读取二进制文件来做到这一点readRDS,但我希望有一个ASCII文件而不是二进制文件.在更一般的层面上,我想知道为什么我在dput输出中阅读的习语一般不符合我的预期.
下面是简单拟合的示例,以及模型的成功和不成功的重新创建:
dat_train <- data.frame(x=1:4, z=c(1, 2.1, 2.9, 4))
fit <- lm(z ~ x, dat_train)
rm(dat_train) # Just to make sure fit is not dependent upon `dat_train existence`
dat_score <- data.frame(x=c(1.5, 3.5))
## This works (of course)
predict(fit, dat_score)
# 1 2
# 1.52 3.48
Run Code Online (Sandbox Code Playgroud)
保存到二进制文件工作:
## http://stackoverflow.com/questions/5118074/reusing-a-model-built-in-r
saveRDS(fit, "model.RDS")
fit2 <- readRDS("model.RDS")
predict(fit2, dat_score)
# 1 2
# 1.52 3.48
Run Code Online (Sandbox Code Playgroud)
这样做(dput它在R会话中不是文件):
fit2 <- eval(dput(fit))
predict(fit2, dat_score)
# 1 …Run Code Online (Sandbox Code Playgroud) 我感兴趣的是lm函数的一些令人不安的行为以及predict.lmR中的相关函数.splines基础包提供了bs生成b样条展开的函数,然后可以使用lm多功能线性模型拟合函数来拟合样条模型.
这些lm和predict.lm函数具有很多内置的便利性,可以利用公式和术语.如果调用bs()嵌套在lm调用内,则用户可以提供单变量数据predict,并且此数据将自动扩展为适当的b样条基础.然后将照常预测这种扩展的数据矩阵.
library(splines)
x <- sort(runif(50, 0, 10))
y <- x^2
splineModel <- lm(y ~ bs(x, y, degree = 3, knots = c(3, 6)))
newData <- data.frame(x = 4)
prediction <- predict(splineModel, newData) # 16
plot(x, y)
lines(x, splineModel$fitted.values, col = 'blue3')
points(newData$x, prediction, pch = 3, cex = 3, col = 'red3')
legend("topleft", legend = c("Data", "Fitted Values", "Predicted …Run Code Online (Sandbox Code Playgroud) 如果我使用 lm 和 factor 命令在 r 中运行固定效应模型,如何抑制观星者模型中的因子变量系数?
即我的模型是:
m1<-lm(GDP~pop_growth + factor(city))
Run Code Online (Sandbox Code Playgroud)
我想报告仅包含 pop_growth 的截距和系数的结果,而不是城市的每个虚拟变量的系数。
编辑:事实证明,问题在于变量名编码。省略=“城市”的作品。
lm ×10
r ×10
regression ×3
predict ×2
glm ×1
intersection ×1
missing-data ×1
plot ×1
prediction ×1
spline ×1
stargazer ×1