如何在 Power Query 中使用 R 转换步骤获取线性回归模型参数

How to get linear regression model parameters with R transformation step in Power Query

假设我们有两个变量 Y 和 X,我们想在 Power Query 中使用 Transform > Run R script 建立一个简单的回归模型。这里有示例数据:

let
    Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WMlTSAeJYnWglYyDLCMwyBbKMwSwLIMtEKTYWAA==", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type text) meta [Serialized.Text = true]) in type table [Y = _t, X = _t]),
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"Y", Int64.Type}, {"X", Int64.Type}})
in
    #"Changed Type"

然后我使用以下代码将 Run R script 步骤添加到 Power Query:

output <- lm(Y ~ X, data=dataset)

但我得到一个空 table:

如何修改R脚本获取模型摘要?

据我所知,为了从您的 R 脚本中检索任何输出,它必须采用 data.frame 的形式。但是,如果您尝试 运行 类似 df<-data.frame(output) 的内容,您将得到错误

Error in as.data.frame.default(x[[i]], optional = TRUE, stringsAsFactors = > > stringsAsFactors) : cannot coerce class ‘"summary.lm"’ to a data.frame

但是您可以 检索相同摘要的部分内容并将其组织到数据框中。在您的代码片段的基础上,以下是您如何为模型系数执行此操作。我冒昧地将你的 output 重命名为 model

代码:

model <- lm(Y ~ X, dataset)
df<- data.frame(coef(model))
names(df)[names(df)=="coef.model."] <- "coefficients"
df['variables'] <- row.names(df)

输出 1:

接下来直接点击Table得到:

输出 2:

因为我没有你的数据,所以我只使用了 Enter Data 和这个简单的数据样本:

编辑:其他模型估计

如果您想从模型中检索估计序列,例如残差或拟合值,只需将以下行添加到上面的代码片段中:

df_estimates <- data.frame(fitted(model), residuals(model))
colnames(df_estimates) <- c('fitted', 'residuals')

初步输出现在为:

这是 Power BI 中一个非常实用的功能。只需单击要继续使用的数据框旁边的 table。在后一种情况下,你会得到这个:

编辑 2 - 在输出中包含原始数据集:

#Y <- c(1,2,3,4,4)
#X <- c(1,2,3,4,5)

#dataset <- data.frame(X, Y)

model <- lm(Y ~ X, dataset)
df<- data.frame(coef(model))
names(df)[names(df)=="coef.model."] <- "coefficients"
df['variables'] <- row.names(df)
df_estimates <- data.frame(dataset$X, dataset$Y, fitted(model), residuals(model))
colnames(df_estimates) <- c('X', 'Y', 'fitted', 'residuals')
df_estimates