SAS Viya Copilot Explained: Building Machine Learning Pipelines in Minutes, Not Hours
Recent Library Articles
SAS Viya Copilot is a set of software as a service (SaaS) features and capabilities that use large language models (LLMs) to provide users with a more intuitive and accessible way to work with SAS Viya offerings. SAS Viya Copilot is for developers, data scientists, citizen data scientists, and business analysts who are writing code, analyzing data, building machine learning model pipelines, and doing more across the data and AI life cycle.
SAS Forward: Real Stories, Live Demos and AI Innovation
Ask the Expert
Join us November 4-5 for SAS Forward, a virtual event exploring modern analytics, AI and intelligent decisioning. Discover real-world success stories, explore emerging trends, and see the latest SAS innovations in action through expert-led sessions and live demonstrations.
Team Name J&J Ethicon Norderstedt Track Manufacturing, Health care & Life Sciences Use Case Production planners currently create the weekly production plan by combining source data, operational knowledge, and planning rules, we want to create an AI agent to create the plan with the best inputs to use for the machines. Technology SAS Viya Region EMEA Team lead Arpit Jain Team members Amr Saadeldin, Jan-Felix Drochner Social media handles TBD Is your team interested in participating in an interview? TBD Optional: Expand on your technology expertise N/A
... View more
Developing an optimized two-stage predictive analytics model using SAS Viya to maximize fundraising net operating surplus and identify profitable campaign donors for the SAS Cortex challenge.
... View more
Question for the clinical programmers here. TLF validation is usually well defined (double programming, compare). But the CSR body text also quotes a lot of numbers: p-values, percentages, LS means, hazard ratios. Who checks that those quotes match the final outputs, especially after a late rerun? Is that part of the programming QC, done by the medical writer, or a separate review step? And roughly how long does it take for a phase 3 CSR?
... View more
I'm re-deriving a Kaplan-Meier median with 95% CI from an older CSR (2006) using the ADaM data. The median matches, but the CI only matches with the linear transform, not with the log-log transform that PROC LIFETEST uses by default since 9.2 (I get a lower bound of 23 instead of the printed 24 days). Two questions: is it common in your experience that legacy outputs used CONFTYPE=LINEAR without stating it, and when you re-program legacy tables, do you match the old method or the current default and footnote the difference?
... View more
Hi all, I’m seeing PROC MIXED results change depending on the PLOTS= option, and I’d like to understand why. I can reproduce it with simulated data (code below). Setup (SAS 9.4 M9): a linear mixed model with about 100 rare binary fixed effects in CLASS, a random intercept and slope on time (TYPE=UN), DDFM=KR, and a BY statement over 14 groups. What happens With plots=studentpanel, some BY groups give StdErr = 0, DF = 0 and missing CIs for some terms, and the estimates shift as well. With plots=none and everything else the same, every BY group is clean. On my real data, which BY groups break changes between runs. Reproducible example data have;
call streaminit(2026);
array x[100] x1-x100;
do group = 1 to 14;
do s = 1 to 300;
subjid = group*1000 + s;
b0 = rand('normal', 0, 0.15);
b1 = 0;
array onset[100] _temporary_;
do j = 1 to 100;
p = ifn(j <= 40, 0.004, ifn(j <= 70, 0.01, 0.04));
if rand('uniform') < p then onset[j] = rand('integer', 1, 600);
else onset[j] = .;
end;
do j = 1 to 19 by 2;
if onset[j] > . and rand('uniform') < 0.98 then onset[j+1] = onset[j];
end;
nvis = rand('integer', 4, 12);
do v = 1 to nvis;
time = (v-1)*42 + rand('integer', 0, 7);
do j = 1 to 100;
x[j] = (onset[j] > . and onset[j] <= time <= onset[j] + 60);
end;
y = 0.8 + b0 + b1*time - 0.05*sum(of x1-x10) + rand('normal', 0, 0.12);
output;
end;
end;
end;
keep group subjid time y x1-x100;
run;
proc sort data=have; by group subjid time; run;
ods graphics on;
ods output SolutionF=sf_plots;
proc mixed data=have plots=studentpanel;
by group;
class subjid x1-x100 / ref=last;
model y = x1-x100 / ddfm=kr solution cl;
random intercept time / type=un subject=subjid;
run;
ods output SolutionF=sf_none;
proc mixed data=have plots=none;
by group;
class subjid x1-x100 / ref=last;
model y = x1-x100 / ddfm=kr solution cl;
random intercept time / type=un subject=subjid;
run;
ods graphics off; Result: every group is clean with plots=none. With plots=studentpanel, group 12 has two terms that break: Context: the model is close to singular, with no true random slope variance and some near-duplicate fixed effects. I’ve read the Computational Issues section of the PROC MIXED documentation (https://support.sas.com/documentation/cdl/en/statug/66103/HTML/default/statug_mixed_details58.htm), so I understand why it’s fragile. My guess is that the extra calculations for the student panel change the numerics just enough to tip some terms over the singularity tolerance. Questions Is this known behaviour? Does requesting the residual panel change the computation path in PROC MIXED? Apart from plots=none, is there a recommended way to make results stable here, for example SINGULAR=? Thanks!
... View more