【问题标题】:Predicted values in R when regression has a factor当回归有一个因子时,R 中的预测值
【发布时间】:2018-03-06 20:15:23
【问题描述】:

我有以下回归:

a <- lm(y ~ factor(x) + z + factor(x) * z, data = dataset)

我想获得 x = 1 时的预测值,对于不同的 z 水平。我一直在努力使用predict 包来做到这一点。

任何帮助将不胜感激。

【问题讨论】:

  • 寻求帮助时,您应该包含一个简单的reproducible example,其中包含可用于测试和验证可能解决方案的示例输入和所需输出。当代码出现问题时,请展示您实际尝试过的内容并描述“斗争”发生的地方。
  • 结果对象已经包含所有观测值的拟合值。您是否想要特定组合的预测值?您是按字面意思输入x=1 还是使用因子“值”,例如x="红色"?

标签: r regression predict


【解决方案1】:
a <- lm(y ~ factor(x) + z + factor(x)*z, data=dataset)
df <- data.frame(x = c(1,1,1), z = c(1,2,3))
predict(a, df)

上面的想法是创建一个数据框,其值为XZ,你想在上面测试你的模型。

【讨论】:

  • @ShelbyGrossman 如果您满意,您介意选择它作为答案吗?谢谢!
  • 我赞成它,但它似乎没有反映出来。我将如何选择它作为答案?
  • @ShelbyGrossman 在赞成和反对箭头/三角形下方“打勾”。
【解决方案2】:

对于未来的发布,最好始终包含示例数据。请参阅here how to provide a minimal reproducible example/attempt,包括示例数据。

除此之外,这是一个基于我生成的一些示例数据的简单示例。

# Generate sample data
set.seed(2017);
x <- as.numeric(gl(2, 10, 20));
z <- 1:20;
y <- 4 * x + 0.5 * z + rnorm(20);

# Fit model
fit <- lm(y ~ as.factor(x) + z + as.factor(x) * z);
summary(fit);
#    
#Call:
#lm(formula = y ~ as.factor(x) + z + as.factor(x) * z)
#
#Residuals:
#    Min      1Q  Median      3Q     Max
#-1.9283 -0.4702 -0.1270  0.7932  1.6648
#
#Coefficients:
#                Estimate Std. Error t value Pr(>|t|)
#(Intercept)      4.13695    0.79828   5.182 9.08e-05 ***
#as.factor(x)2    5.72079    2.17955   2.625  0.01839 *
#z                0.47615    0.12865   3.701  0.00194 **
#as.factor(x)2:z -0.09588    0.18195  -0.527  0.60544
#---
#Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
#
#Residual standard error: 1.169 on 16 degrees of freedom
#Multiple R-squared:  0.9522,   Adjusted R-squared:  0.9432
#F-statistic: 106.3 on 3 and 16 DF,  p-value: 8.896e-11

# Predict for x = 1, and y = 1:5
predict(fit, newdata = data.frame(x = 1, z = 1:5));
#1        2        3        4        5
#4.613097 5.089242 5.565388 6.041533 6.517679

请注意,如果您想根据预测变量的新值来predict 响应,则需要提供newdata data.frame。否则,predict 将根据您的原始数据预测响应。

【讨论】:

    猜你喜欢
    • 2016-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-23
    • 1970-01-01
    相关资源
    最近更新 更多