普通会员

wenxin

此用户很神秘,没有留下任何信息

2帖子
0回复
70积分
ID:024583
table类型无法使用.语法新增列

目前,北太天元不支持通过.语法对已有表格类型的变量新增列,例如:

mytable=table(["张三";"李四";"王麻子"],["男";"男";"男"],'VariableNames',{'姓名','性别'});

mytable.年龄=[22;23;21];

会出现:无法识别表变量名称: '年龄'这样的错误输出


现在可以通过表格并置的方式解决,期待后续官方能支持.这种语法


mytable=table(["张三";"李四";"王麻子"],["男";"男";"男"],'VariableNames',{'姓名','性别'});

%并置

newtable=table([22;23;21],'VariableNames',{'年龄'});

mytable=[mytable,newtable];

0 2026-04-30
预测变量必须为数值向量、数值矩阵或分类向量

北太天元不支持 categorical 类型变量作为拟合变量,可使用 CategoricalVars 参数替代

%% 分段线性回归拟合:NIPT检测数据分析
% 业务背景:研究无创产前检测(NIPT)中,胎儿Y染色体浓度的影响因素
% 核心变量说明:
%    Y     - 母血中胎儿Y染色体游离DNA浓度(因变量/核心指标)
%    GA    - 孕妇孕周(自变量)
%    BMI   - 孕妇身体质量指数(分组依据)
% 分析目的:按BMI分组拟合回归线,探究不同肥胖程度下孕周对Y浓度的影响
% 兼容说明:北太天元不支持 categorical 类型变量作为拟合变量,可使用 CategoricalVars 参数替代
clear; clc; close all;

%% ========== 1. 生成模拟数据 ==========
rng(0);                  % 固定随机种子,结果可复现
n = 50;                  % 模拟样本数量
Y  = rand(n,1) * 0.2;    % 模拟胎儿Y染色体浓度数据
GA = rand(n,1) * 20 + 10;% 模拟孕周范围 10~30周
BMI= rand(n,1) * 30 + 15;% 模拟BMI范围 15~45

% BMI分组(固定切点:<30.5 / 30.5~36 / ≥36)
BMI_group = discretize(BMI, [0, 30.5, 36, Inf]); 

% 构建回归分析数据表
model_data = table(Y, GA, BMI_group, 'VariableNames', {'Y','GA','BMI_group'});

%% ========== 2. 【初始方案】转为分类变量(北太天元不支持,会报错) ==========
% 北太天元兼容性问题:不支持 categorical 数据类型,此代码运行报错
% model_data.BMI_group = categorical(model_data.BMI_group); 
% model1 = fitlm(model_data, 'Y ~ BMI_group * GA');

%% ========== 3. 【错误用法】数值型分组直接拟合 ==========
% BMI_group为数值类型,会被模型当作连续变量,无法实现分组分段效果
% model2 = fitlm(model_data, 'Y ~ BMI_group * GA');

%% ========== 4. 【替代方案】CategoricalVars 参数指定分组变量 ==========
% 无需转换数据类型,直接指定分组变量,完美替代 categorical,兼容北太天元
model_final = fitlm(model_data, 'Y ~ BMI_group * GA', 'CategoricalVars', "BMI_group");


初始方案报错信息如下:

预测变量必须为数值向量、数值矩阵或分类向量。

位于 BP 文件 [D:\ProgramFiles\baltamatica\toolbox\Stats\src\FitObject.bp]

位于 BP 文件 [D:\ProgramFiles\baltamatica\toolbox\Stats\src\TermsRegression.bp]

位于 BP 文件 [D:\ProgramFiles\baltamatica\toolbox\Stats\src\FitObject.bp]

位于 BP 文件 [D:\ProgramFiles\baltamatica\toolbox\Stats\src\LinearModel.bp]

位于 BP 文件 [D:\ProgramFiles\baltamatica\toolbox\Stats\src\fitlm.bp]

位于文件 D:\Baltamatica\Workspace\learn\Baltamatica\产品使用案例制作\NIPT的时点选择与胎儿异常判定\test.m (第 27 行)

model1 = fitlm(model_data, 'Y ~ BMI_group * GA');

0 2026-05-07