【问题标题】:How to get linear regression model parameters with R transformation step in Power Query如何在 Power Query 中使用 R 转换步骤获取线性回归模型参数
【发布时间】:2020-02-04 14:05:51
【问题描述】:

假设我们有两个变量 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)

但我得到了一张空桌子:

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

【问题讨论】:

    标签: r powerbi powerquery m


    【解决方案1】:

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

    as.data.frame.default(x[[i]], optional = TRUE, stringsAsFactors = > > stringsAsFactors) 中的错误:无法将“summary.lm”类强制转换为 data.frame

    但是您可以检索相同摘要的部分内容并将其组织在数据框中。以您的 sn-p 为基础,以下是模型系数的方法。我冒昧地将您的 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 和这个简单的数据示例:

    编辑:其他模型估计

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

    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
    

    【讨论】:

    • 是的,有效。我只是在检查摘要的其他组成部分:-)
    • @Przemyslaw Remin 哪些组件?您需要这方面的帮助吗?
    • 拟合值和残差。
    • 同意!我很感激你的帮助。你可以指望我的问题。
    • 您好,我想提醒您我寻求将原始数据集包括到拟合值和残差中,以及检索残差汇总统计信息。
    猜你喜欢
    • 2022-01-12
    • 1970-01-01
    • 2016-07-17
    • 2018-04-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多